Correct encoding of BL with immediate offset.
[oota-llvm.git] / test / MC / ARM / basic-arm-instructions.s
1 @ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
2   .syntax unified
3   .globl _func
4
5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
6 @ For complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11 _func:
12 @ CHECK: _func
13
14 @------------------------------------------------------------------------------
15 @ ADC (immediate)
16 @------------------------------------------------------------------------------
17   adc r1, r2, #0xf
18   adc r1, r2, #0xf0
19   adc r1, r2, #0xf00
20   adc r1, r2, #0xf000
21   adc r1, r2, #0xf0000
22   adc r1, r2, #0xf00000
23   adc r1, r2, #0xf000000
24   adc r1, r2, #0xf0000000
25   adc r1, r2, #0xf000000f
26   adcs r1, r2, #0xf00
27   adcseq r1, r2, #0xf00
28   adceq r1, r2, #0xf00
29
30 @ CHECK: adc    r1, r2, #15             @ encoding: [0x0f,0x10,0xa2,0xe2]
31 @ CHECK: adc    r1, r2, #240            @ encoding: [0xf0,0x10,0xa2,0xe2]
32 @ CHECK: adc    r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0xe2]
33 @ CHECK: adc    r1, r2, #61440          @ encoding: [0x0f,0x1a,0xa2,0xe2]
34 @ CHECK: adc    r1, r2, #983040         @ encoding: [0x0f,0x18,0xa2,0xe2]
35 @ CHECK: adc    r1, r2, #15728640       @ encoding: [0x0f,0x16,0xa2,0xe2]
36 @ CHECK: adc    r1, r2, #251658240      @ encoding: [0x0f,0x14,0xa2,0xe2]
37 @ CHECK: adc    r1, r2, #4026531840     @ encoding: [0x0f,0x12,0xa2,0xe2]
38 @ CHECK: adc    r1, r2, #4026531855     @ encoding: [0xff,0x12,0xa2,0xe2]
39
40 @ CHECK: adcs   r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0xe2]
41 @ CHECK: adcseq r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0x02]
42 @ CHECK: adceq  r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0x02]
43
44 @------------------------------------------------------------------------------
45 @ ADC (register)
46 @ ADC (shifted register)
47 @------------------------------------------------------------------------------
48   adc r4, r5, r6
49   @ Constant shifts
50   adc r4, r5, r6, lsl #1
51   adc r4, r5, r6, lsl #31
52   adc r4, r5, r6, lsr #1
53   adc r4, r5, r6, lsr #31
54   adc r4, r5, r6, lsr #32
55   adc r4, r5, r6, asr #1
56   adc r4, r5, r6, asr #31
57   adc r4, r5, r6, asr #32
58   adc r4, r5, r6, ror #1
59   adc r4, r5, r6, ror #31
60
61   @ Register shifts
62   adc r6, r7, r8, lsl r9
63   adc r6, r7, r8, lsr r9
64   adc r6, r7, r8, asr r9
65   adc r6, r7, r8, ror r9
66   adc r4, r5, r6, rrx
67
68   @ Destination register is optional
69   adc r5, r6
70   adc r4, r5, lsl #1
71   adc r4, r5, lsl #31
72   adc r4, r5, lsr #1
73   adc r4, r5, lsr #31
74   adc r4, r5, lsr #32
75   adc r4, r5, asr #1
76   adc r4, r5, asr #31
77   adc r4, r5, asr #32
78   adc r4, r5, ror #1
79   adc r4, r5, ror #31
80   adc r4, r5, rrx
81   adc r6, r7, lsl r9
82   adc r6, r7, lsr r9
83   adc r6, r7, asr r9
84   adc r6, r7, ror r9
85   adc r4, r5, rrx
86
87 @ CHECK: adc    r4, r5, r6              @ encoding: [0x06,0x40,0xa5,0xe0]
88
89 @ CHECK: adc    r4, r5, r6, lsl #1      @ encoding: [0x86,0x40,0xa5,0xe0]
90 @ CHECK: adc    r4, r5, r6, lsl #31     @ encoding: [0x86,0x4f,0xa5,0xe0]
91 @ CHECK: adc    r4, r5, r6, lsr #1      @ encoding: [0xa6,0x40,0xa5,0xe0]
92 @ CHECK: adc    r4, r5, r6, lsr #31     @ encoding: [0xa6,0x4f,0xa5,0xe0]
93 @ CHECK: adc    r4, r5, r6, lsr #32     @ encoding: [0x26,0x40,0xa5,0xe0]
94 @ CHECK: adc    r4, r5, r6, asr #1      @ encoding: [0xc6,0x40,0xa5,0xe0]
95 @ CHECK: adc    r4, r5, r6, asr #31     @ encoding: [0xc6,0x4f,0xa5,0xe0]
96 @ CHECK: adc    r4, r5, r6, asr #32     @ encoding: [0x46,0x40,0xa5,0xe0]
97 @ CHECK: adc    r4, r5, r6, ror #1      @ encoding: [0xe6,0x40,0xa5,0xe0]
98 @ CHECK: adc    r4, r5, r6, ror #31     @ encoding: [0xe6,0x4f,0xa5,0xe0]
99
100 @ CHECK: adc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xa7,0xe0]
101 @ CHECK: adc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xa7,0xe0]
102 @ CHECK: adc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xa7,0xe0]
103 @ CHECK: adc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xa7,0xe0]
104 @ CHECK: adc    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0xa5,0xe0]
105
106 @ CHECK: adc    r5, r5, r6              @ encoding: [0x06,0x50,0xa5,0xe0]
107 @ CHECK: adc    r4, r4, r5, lsl #1      @ encoding: [0x85,0x40,0xa4,0xe0]
108 @ CHECK: adc    r4, r4, r5, lsl #31     @ encoding: [0x85,0x4f,0xa4,0xe0]
109 @ CHECK: adc    r4, r4, r5, lsr #1      @ encoding: [0xa5,0x40,0xa4,0xe0]
110 @ CHECK: adc    r4, r4, r5, lsr #31     @ encoding: [0xa5,0x4f,0xa4,0xe0]
111 @ CHECK: adc    r4, r4, r5, lsr #32     @ encoding: [0x25,0x40,0xa4,0xe0]
112 @ CHECK: adc    r4, r4, r5, asr #1      @ encoding: [0xc5,0x40,0xa4,0xe0]
113 @ CHECK: adc    r4, r4, r5, asr #31     @ encoding: [0xc5,0x4f,0xa4,0xe0]
114 @ CHECK: adc    r4, r4, r5, asr #32     @ encoding: [0x45,0x40,0xa4,0xe0]
115 @ CHECK: adc    r4, r4, r5, ror #1      @ encoding: [0xe5,0x40,0xa4,0xe0]
116 @ CHECK: adc    r4, r4, r5, ror #31     @ encoding: [0xe5,0x4f,0xa4,0xe0]
117 @ CHECK: adc    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
118 @ CHECK: adc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xa6,0xe0]
119 @ CHECK: adc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xa6,0xe0]
120 @ CHECK: adc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xa6,0xe0]
121 @ CHECK: adc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xa6,0xe0]
122 @ CHECK: adc    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
123
124
125 @------------------------------------------------------------------------------
126 @ ADR
127 @------------------------------------------------------------------------------
128 Lback:
129   adr r2, Lback
130   adr r3, Lforward
131 Lforward:
132   adr   r2, #3
133   adr   r2, #-3
134
135 @ CHECK: Lback:
136 @ CHECK: adr    r2, Lback    @ encoding: [0bAAAAAAA0,0x20'A',0x0f'A',0b1110001A]
137 @ CHECK:  @   fixup A - offset: 0, value: Lback, kind: fixup_arm_adr_pcrel_12
138 @ CHECK: adr    r3, Lforward @ encoding: [0bAAAAAAA0,0x30'A',0x0f'A',0b1110001A]
139 @ CHECK:  @   fixup A - offset: 0, value: Lforward, kind: fixup_arm_adr_pcrel_12
140 @ CHECK: Lforward:
141 @ CHECK: adr    r2, #3                  @ encoding: [0x03,0x20,0x8f,0xe2]
142 @ CHECK: adr    r2, #-3                 @ encoding: [0x03,0x20,0x4f,0xe2]
143
144
145 @------------------------------------------------------------------------------
146 @ ADD
147 @------------------------------------------------------------------------------
148   add r4, r5, #0xf000
149   add r4, r5, r6
150   add r4, r5, r6, lsl #5
151   add r4, r5, r6, lsr #5
152   add r4, r5, r6, lsr #5
153   add r4, r5, r6, asr #5
154   add r4, r5, r6, ror #5
155   add r6, r7, r8, lsl r9
156   add r6, r7, r8, lsr r9
157   add r6, r7, r8, asr r9
158   add r6, r7, r8, ror r9
159   add r4, r5, r6, rrx
160
161   @ destination register is optional
162   add r5, #0xf000
163   add r4, r5
164   add r4, r5, lsl #5
165   add r4, r5, lsr #5
166   add r4, r5, lsr #5
167   add r4, r5, asr #5
168   add r4, r5, ror #5
169   add r6, r7, lsl r9
170   add r6, r7, lsr r9
171   add r6, r7, asr r9
172   add r6, r7, ror r9
173   add r4, r5, rrx
174
175 @ CHECK: add    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe2]
176 @ CHECK: add    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe0]
177 @ CHECK: add    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe0]
178 @ CHECK: add    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
179 @ CHECK: add    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
180 @ CHECK: add    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe0]
181 @ CHECK: add    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe0]
182 @ CHECK: add    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe0]
183 @ CHECK: add    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe0]
184 @ CHECK: add    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe0]
185 @ CHECK: add    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe0]
186 @ CHECK: add    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe0]
187
188
189 @ CHECK: add    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe2]
190 @ CHECK: add    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe0]
191 @ CHECK: add    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe0]
192 @ CHECK: add    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
193 @ CHECK: add    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
194 @ CHECK: add    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe0]
195 @ CHECK: add    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe0]
196 @ CHECK: add    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe0]
197 @ CHECK: add    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe0]
198 @ CHECK: add    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe0]
199 @ CHECK: add    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe0]
200 @ CHECK: add    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe0]
201
202
203 @------------------------------------------------------------------------------
204 @ AND
205 @------------------------------------------------------------------------------
206   and r10, r1, #0xf
207   and r10, r1, r6
208   and r10, r1, r6, lsl #10
209   and r10, r1, r6, lsr #10
210   and r10, r1, r6, lsr #10
211   and r10, r1, r6, asr #10
212   and r10, r1, r6, ror #10
213   and r6, r7, r8, lsl r2
214   and r6, r7, r8, lsr r2
215   and r6, r7, r8, asr r2
216   and r6, r7, r8, ror r2
217   and r10, r1, r6, rrx
218
219   @ destination register is optional
220   and r1, #0xf
221   and r10, r1
222   and r10, r1, lsl #10
223   and r10, r1, lsr #10
224   and r10, r1, lsr #10
225   and r10, r1, asr #10
226   and r10, r1, ror #10
227   and r6, r7, lsl r2
228   and r6, r7, lsr r2
229   and r6, r7, asr r2
230   and r6, r7, ror r2
231   and r10, r1, rrx
232
233 @ CHECK: and    r10, r1, #15            @ encoding: [0x0f,0xa0,0x01,0xe2]
234 @ CHECK: and    r10, r1, r6             @ encoding: [0x06,0xa0,0x01,0xe0]
235 @ CHECK: and    r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0x01,0xe0]
236 @ CHECK: and    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
237 @ CHECK: and    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
238 @ CHECK: and    r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0x01,0xe0]
239 @ CHECK: and    r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0x01,0xe0]
240 @ CHECK: and    r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0x07,0xe0]
241 @ CHECK: and    r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0x07,0xe0]
242 @ CHECK: and    r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0x07,0xe0]
243 @ CHECK: and    r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0x07,0xe0]
244 @ CHECK: and    r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0x01,0xe0]
245
246 @ CHECK: and    r1, r1, #15             @ encoding: [0x0f,0x10,0x01,0xe2]
247 @ CHECK: and    r10, r10, r1            @ encoding: [0x01,0xa0,0x0a,0xe0]
248 @ CHECK: and    r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0x0a,0xe0]
249 @ CHECK: and    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
250 @ CHECK: and    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
251 @ CHECK: and    r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0x0a,0xe0]
252 @ CHECK: and    r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0x0a,0xe0]
253 @ CHECK: and    r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0x06,0xe0]
254 @ CHECK: and    r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0x06,0xe0]
255 @ CHECK: and    r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0x06,0xe0]
256 @ CHECK: and    r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0x06,0xe0]
257 @ CHECK: and    r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0x0a,0xe0]
258
259 @------------------------------------------------------------------------------
260 @ FIXME: ASR
261 @------------------------------------------------------------------------------
262 @------------------------------------------------------------------------------
263 @ B
264 @------------------------------------------------------------------------------
265         b _bar
266         beq _baz
267
268 @ CHECK: b      _bar                    @ encoding: [A,A,A,0xea]
269                                         @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
270 @ CHECK: beq    _baz                    @ encoding: [A,A,A,0x0a]
271                                         @   fixup A - offset: 0, value: _baz, kind: fixup_arm_condbranch
272
273
274 @------------------------------------------------------------------------------
275 @ BFC
276 @------------------------------------------------------------------------------
277   bfc r5, #3, #17
278   bfccc r5, #3, #17
279
280 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x9f,0x51,0xd3,0xe7]
281 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x9f,0x51,0xd3,0x37]
282
283
284 @------------------------------------------------------------------------------
285 @ BFI
286 @------------------------------------------------------------------------------
287   bfi r5, r2, #3, #17
288   bfine r5, r2, #3, #17
289
290 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x92,0x51,0xd3,0xe7]
291 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x92,0x51,0xd3,0x17]
292
293
294 @------------------------------------------------------------------------------
295 @ BIC
296 @------------------------------------------------------------------------------
297   bic r10, r1, #0xf
298   bic r10, r1, r6
299   bic r10, r1, r6, lsl #10
300   bic r10, r1, r6, lsr #10
301   bic r10, r1, r6, lsr #10
302   bic r10, r1, r6, asr #10
303   bic r10, r1, r6, ror #10
304   bic r6, r7, r8, lsl r2
305   bic r6, r7, r8, lsr r2
306   bic r6, r7, r8, asr r2
307   bic r6, r7, r8, ror r2
308   bic r10, r1, r6, rrx
309
310   @ destination register is optional
311   bic r1, #0xf
312   bic r10, r1
313   bic r10, r1, lsl #10
314   bic r10, r1, lsr #10
315   bic r10, r1, lsr #10
316   bic r10, r1, asr #10
317   bic r10, r1, ror #10
318   bic r6, r7, lsl r2
319   bic r6, r7, lsr r2
320   bic r6, r7, asr r2
321   bic r6, r7, ror r2
322   bic r10, r1, rrx
323
324 @ CHECK: bic    r10, r1, #15            @ encoding: [0x0f,0xa0,0xc1,0xe3]
325 @ CHECK: bic    r10, r1, r6             @ encoding: [0x06,0xa0,0xc1,0xe1]
326 @ CHECK: bic    r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0xc1,0xe1]
327 @ CHECK: bic    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
328 @ CHECK: bic    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
329 @ CHECK: bic    r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0xc1,0xe1]
330 @ CHECK: bic    r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0xc1,0xe1]
331 @ CHECK: bic    r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0xc7,0xe1]
332 @ CHECK: bic    r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0xc7,0xe1]
333 @ CHECK: bic    r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0xc7,0xe1]
334 @ CHECK: bic    r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0xc7,0xe1]
335 @ CHECK: bic    r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0xc1,0xe1]
336
337
338 @ CHECK: bic    r1, r1, #15             @ encoding: [0x0f,0x10,0xc1,0xe3]
339 @ CHECK: bic    r10, r10, r1            @ encoding: [0x01,0xa0,0xca,0xe1]
340 @ CHECK: bic    r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0xca,0xe1]
341 @ CHECK: bic    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
342 @ CHECK: bic    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
343 @ CHECK: bic    r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0xca,0xe1]
344 @ CHECK: bic    r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0xca,0xe1]
345 @ CHECK: bic    r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0xc6,0xe1]
346 @ CHECK: bic    r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0xc6,0xe1]
347 @ CHECK: bic    r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0xc6,0xe1]
348 @ CHECK: bic    r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0xc6,0xe1]
349 @ CHECK: bic    r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0xca,0xe1]
350
351 @------------------------------------------------------------------------------
352 @ BKPT
353 @------------------------------------------------------------------------------
354   bkpt #10
355   bkpt #65535
356
357 @ CHECK: bkpt  #10                      @ encoding: [0x7a,0x00,0x20,0xe1]
358 @ CHECK: bkpt  #65535                   @ encoding: [0x7f,0xff,0x2f,0xe1]
359
360 @------------------------------------------------------------------------------
361 @ BL/BLX (immediate)
362 @------------------------------------------------------------------------------
363
364   bl _bar
365   blx _bar
366   blls #28634268
367
368 @ CHECK: bl  _bar @ encoding: [A,A,A,0xeb]
369 @ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
370 @ CHECK: blx    _bar @ encoding: [A,A,A,0xfa]
371            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
372 @ CHECK: blls   #28634268               @ encoding: [0x27,0x3b,0x6d,0x9b]
373
374 @------------------------------------------------------------------------------
375 @ BLX (register)
376 @------------------------------------------------------------------------------
377   blx r2
378   blxne r2
379
380 @ CHECK: blx r2                         @ encoding: [0x32,0xff,0x2f,0xe1]
381 @ CHECK: blxne r2                       @ encoding: [0x32,0xff,0x2f,0x11]
382
383 @------------------------------------------------------------------------------
384 @ BX
385 @------------------------------------------------------------------------------
386
387   bx r2
388   bxne r2
389
390 @ CHECK: bx     r2                      @ encoding: [0x12,0xff,0x2f,0xe1]
391 @ CHECK: bxne   r2                      @ encoding: [0x12,0xff,0x2f,0x11]
392
393 @------------------------------------------------------------------------------
394 @ BXJ
395 @------------------------------------------------------------------------------
396
397   bxj r2
398   bxjne r2
399
400 @ CHECK: bxj    r2                      @ encoding: [0x22,0xff,0x2f,0xe1]
401 @ CHECK: bxjne  r2                      @ encoding: [0x22,0xff,0x2f,0x11]
402
403
404 @------------------------------------------------------------------------------
405 @ CDP/CDP2
406 @------------------------------------------------------------------------------
407   cdp  p7, #1, c1, c1, c1, #4
408   cdp2  p7, #1, c1, c1, c1, #4
409
410 @ CHECK: cdp  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0xee]
411 @ CHECK: cdp2  p7, #1, c1, c1, c1, #4    @ encoding: [0x81,0x17,0x11,0xfe]
412
413
414 @------------------------------------------------------------------------------
415 @ CLREX
416 @------------------------------------------------------------------------------
417   clrex
418
419 @ CHECK: clrex                           @ encoding: [0x1f,0xf0,0x7f,0xf5]
420
421
422 @------------------------------------------------------------------------------
423 @ CLZ
424 @------------------------------------------------------------------------------
425   clz r1, r2
426   clzeq r1, r2
427
428 @ CHECK: clz r1, r2                      @ encoding: [0x12,0x1f,0x6f,0xe1]
429 @ CHECK: clzeq r1, r2                    @ encoding: [0x12,0x1f,0x6f,0x01]
430
431 @------------------------------------------------------------------------------
432 @ CMN
433 @------------------------------------------------------------------------------
434   cmn r1, #0xf
435   cmn r1, r6
436   cmn r1, r6, lsl #10
437   cmn r1, r6, lsr #10
438   cmn sp, r6, lsr #10
439   cmn r1, r6, asr #10
440   cmn r1, r6, ror #10
441   cmn r7, r8, lsl r2
442   cmn sp, r8, lsr r2
443   cmn r7, r8, asr r2
444   cmn r7, r8, ror r2
445   cmn r1, r6, rrx
446
447 @ CHECK: cmn    r1, #15                 @ encoding: [0x0f,0x00,0x71,0xe3]
448 @ CHECK: cmn    r1, r6                  @ encoding: [0x06,0x00,0x71,0xe1]
449 @ CHECK: cmn    r1, r6, lsl #10         @ encoding: [0x06,0x05,0x71,0xe1]
450 @ CHECK: cmn    r1, r6, lsr #10         @ encoding: [0x26,0x05,0x71,0xe1]
451 @ CHECK: cmn    sp, r6, lsr #10         @ encoding: [0x26,0x05,0x7d,0xe1]
452 @ CHECK: cmn    r1, r6, asr #10         @ encoding: [0x46,0x05,0x71,0xe1]
453 @ CHECK: cmn    r1, r6, ror #10         @ encoding: [0x66,0x05,0x71,0xe1]
454 @ CHECK: cmn    r7, r8, lsl r2          @ encoding: [0x18,0x02,0x77,0xe1]
455 @ CHECK: cmn    sp, r8, lsr r2          @ encoding: [0x38,0x02,0x7d,0xe1]
456 @ CHECK: cmn    r7, r8, asr r2          @ encoding: [0x58,0x02,0x77,0xe1]
457 @ CHECK: cmn    r7, r8, ror r2          @ encoding: [0x78,0x02,0x77,0xe1]
458 @ CHECK: cmn    r1, r6, rrx             @ encoding: [0x66,0x00,0x71,0xe1]
459
460 @------------------------------------------------------------------------------
461 @ CMP
462 @------------------------------------------------------------------------------
463   cmp r1, #0xf
464   cmp r1, r6
465   cmp r1, r6, lsl #10
466   cmp r1, r6, lsr #10
467   cmp sp, r6, lsr #10
468   cmp r1, r6, asr #10
469   cmp r1, r6, ror #10
470   cmp r7, r8, lsl r2
471   cmp sp, r8, lsr r2
472   cmp r7, r8, asr r2
473   cmp r7, r8, ror r2
474   cmp r1, r6, rrx
475
476 @ CHECK: cmp    r1, #15                 @ encoding: [0x0f,0x00,0x51,0xe3]
477 @ CHECK: cmp    r1, r6                  @ encoding: [0x06,0x00,0x51,0xe1]
478 @ CHECK: cmp    r1, r6, lsl #10         @ encoding: [0x06,0x05,0x51,0xe1]
479 @ CHECK: cmp    r1, r6, lsr #10         @ encoding: [0x26,0x05,0x51,0xe1]
480 @ CHECK: cmp    sp, r6, lsr #10         @ encoding: [0x26,0x05,0x5d,0xe1]
481 @ CHECK: cmp    r1, r6, asr #10         @ encoding: [0x46,0x05,0x51,0xe1]
482 @ CHECK: cmp    r1, r6, ror #10         @ encoding: [0x66,0x05,0x51,0xe1]
483 @ CHECK: cmp    r7, r8, lsl r2          @ encoding: [0x18,0x02,0x57,0xe1]
484 @ CHECK: cmp    sp, r8, lsr r2          @ encoding: [0x38,0x02,0x5d,0xe1]
485 @ CHECK: cmp    r7, r8, asr r2          @ encoding: [0x58,0x02,0x57,0xe1]
486 @ CHECK: cmp    r7, r8, ror r2          @ encoding: [0x78,0x02,0x57,0xe1]
487 @ CHECK: cmp    r1, r6, rrx             @ encoding: [0x66,0x00,0x51,0xe1]
488
489
490 @------------------------------------------------------------------------------
491 @ CPS
492 @------------------------------------------------------------------------------
493         cpsie  aif
494         cps  #15
495         cpsid  if, #10
496
497 @ CHECK: cpsie  aif @ encoding: [0xc0,0x01,0x08,0xf1]
498 @ CHECK: cps  #15 @ encoding: [0x0f,0x00,0x02,0xf1]
499 @ CHECK: cpsid  if, #10 @ encoding: [0xca,0x00,0x0e,0xf1]
500
501
502 @------------------------------------------------------------------------------
503 @ DBG
504 @------------------------------------------------------------------------------
505   dbg #0
506   dbg #5
507   dbg #15
508
509 @ CHECK: dbg #0                         @ encoding: [0xf0,0xf0,0x20,0xe3]
510 @ CHECK: dbg #5                         @ encoding: [0xf5,0xf0,0x20,0xe3]
511 @ CHECK: dbg #15                        @ encoding: [0xff,0xf0,0x20,0xe3]
512
513
514 @------------------------------------------------------------------------------
515 @ DMB
516 @------------------------------------------------------------------------------
517   dmb sy
518   dmb st
519   dmb sh
520   dmb ish
521   dmb shst
522   dmb ishst
523   dmb un
524   dmb nsh
525   dmb unst
526   dmb nshst
527   dmb osh
528   dmb oshst
529   dmb
530
531 @ CHECK: dmb    sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
532 @ CHECK: dmb    st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
533 @ CHECK: dmb    ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
534 @ CHECK: dmb    ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
535 @ CHECK: dmb    ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
536 @ CHECK: dmb    ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
537 @ CHECK: dmb    nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
538 @ CHECK: dmb    nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
539 @ CHECK: dmb    nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
540 @ CHECK: dmb    nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
541 @ CHECK: dmb    osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
542 @ CHECK: dmb    oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
543 @ CHECK: dmb    sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
544
545 @------------------------------------------------------------------------------
546 @ DSB
547 @------------------------------------------------------------------------------
548   dsb sy
549   dsb st
550   dsb sh
551   dsb ish
552   dsb shst
553   dsb ishst
554   dsb un
555   dsb nsh
556   dsb unst
557   dsb nshst
558   dsb osh
559   dsb oshst
560   dsb
561
562 @ CHECK: dsb    sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
563 @ CHECK: dsb    st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
564 @ CHECK: dsb    ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
565 @ CHECK: dsb    ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
566 @ CHECK: dsb    ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
567 @ CHECK: dsb    ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
568 @ CHECK: dsb    nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
569 @ CHECK: dsb    nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
570 @ CHECK: dsb    nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
571 @ CHECK: dsb    nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
572 @ CHECK: dsb    osh                     @ encoding: [0x43,0xf0,0x7f,0xf5]
573 @ CHECK: dsb    oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
574 @ CHECK: dsb    sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
575
576 @------------------------------------------------------------------------------
577 @ EOR
578 @------------------------------------------------------------------------------
579   eor r4, r5, #0xf000
580   eor r4, r5, r6
581   eor r4, r5, r6, lsl #5
582   eor r4, r5, r6, lsr #5
583   eor r4, r5, r6, lsr #5
584   eor r4, r5, r6, asr #5
585   eor r4, r5, r6, ror #5
586   eor r6, r7, r8, lsl r9
587   eor r6, r7, r8, lsr r9
588   eor r6, r7, r8, asr r9
589   eor r6, r7, r8, ror r9
590   eor r4, r5, r6, rrx
591
592   @ destination register is optional
593   eor r5, #0xf000
594   eor r4, r5
595   eor r4, r5, lsl #5
596   eor r4, r5, lsr #5
597   eor r4, r5, lsr #5
598   eor r4, r5, asr #5
599   eor r4, r5, ror #5
600   eor r6, r7, lsl r9
601   eor r6, r7, lsr r9
602   eor r6, r7, asr r9
603   eor r6, r7, ror r9
604   eor r4, r5, rrx
605
606 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x25,0xe2]
607 @ CHECK: eor    r4, r5, r6              @ encoding: [0x06,0x40,0x25,0xe0]
608 @ CHECK: eor    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x25,0xe0]
609 @ CHECK: eor    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
610 @ CHECK: eor    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
611 @ CHECK: eor    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x25,0xe0]
612 @ CHECK: eor    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x25,0xe0]
613 @ CHECK: eor    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x27,0xe0]
614 @ CHECK: eor    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x27,0xe0]
615 @ CHECK: eor    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x27,0xe0]
616 @ CHECK: eor    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x27,0xe0]
617 @ CHECK: eor    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x25,0xe0]
618
619
620 @ CHECK: eor    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x25,0xe2]
621 @ CHECK: eor    r4, r4, r5              @ encoding: [0x05,0x40,0x24,0xe0]
622 @ CHECK: eor    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x24,0xe0]
623 @ CHECK: eor    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
624 @ CHECK: eor    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
625 @ CHECK: eor    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x24,0xe0]
626 @ CHECK: eor    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x24,0xe0]
627 @ CHECK: eor    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x26,0xe0]
628 @ CHECK: eor    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x26,0xe0]
629 @ CHECK: eor    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x26,0xe0]
630 @ CHECK: eor    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x26,0xe0]
631 @ CHECK: eor    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x24,0xe0]
632
633
634 @------------------------------------------------------------------------------
635 @ ISB
636 @------------------------------------------------------------------------------
637         isb sy
638         isb
639
640 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
641 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
642
643
644
645 @------------------------------------------------------------------------------
646 @ LDM*
647 @------------------------------------------------------------------------------
648         ldm       r2, {r1,r3-r6,sp}
649         ldmia     r2, {r1,r3-r6,sp}
650         ldmib     r2, {r1,r3-r6,sp}
651         ldmda     r2, {r1,r3-r6,sp}
652         ldmdb     r2, {r1,r3-r6,sp}
653         ldmfd     r2, {r1,r3-r6,sp}
654
655         @ with update
656         ldm       r2!, {r1,r3-r6,sp}
657         ldmib     r2!, {r1,r3-r6,sp}
658         ldmda     r2!, {r1,r3-r6,sp}
659         ldmdb     r2!, {r1,r3-r6,sp}
660
661 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
662 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
663 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
664 @ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
665 @ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
666 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
667
668 @ CHECK: ldm   r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
669 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
670 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
671 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
672
673
674 @------------------------------------------------------------------------------
675 @ LDREX/LDREXB/LDREXH/LDREXD
676 @------------------------------------------------------------------------------
677         ldrexb  r3, [r4]
678         ldrexh  r2, [r5]
679         ldrex  r1, [r7]
680         ldrexd  r6, r7, [r8]
681
682 @ CHECK: ldrexb r3, [r4]                @ encoding: [0x9f,0x3f,0xd4,0xe1]
683 @ CHECK: ldrexh r2, [r5]                @ encoding: [0x9f,0x2f,0xf5,0xe1]
684 @ CHECK: ldrex  r1, [r7]                @ encoding: [0x9f,0x1f,0x97,0xe1]
685 @ CHECK: ldrexd r6, r7, [r8]            @ encoding: [0x9f,0x6f,0xb8,0xe1]
686
687
688 @------------------------------------------------------------------------------
689 @ FIXME: LSL
690 @------------------------------------------------------------------------------
691 @------------------------------------------------------------------------------
692 @ FIXME: LSR
693 @------------------------------------------------------------------------------
694
695 @------------------------------------------------------------------------------
696 @ MCR/MCR2
697 @------------------------------------------------------------------------------
698         mcr  p7, #1, r5, c1, c1, #4
699         mcr2  p7, #1, r5, c1, c1, #4
700
701 @ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee]
702 @ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe]
703
704 @------------------------------------------------------------------------------
705 @ MCRR/MCRR2
706 @------------------------------------------------------------------------------
707         mcrr  p7, #15, r5, r4, c1
708         mcrr2  p7, #15, r5, r4, c1
709
710 @ CHECK: mcrr  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xec]
711 @ CHECK: mcrr2  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xfc]
712
713
714 @------------------------------------------------------------------------------
715 @ MLA
716 @------------------------------------------------------------------------------
717         mla  r1,r2,r3,r4
718         mlas r1,r2,r3,r4
719         mlane  r1,r2,r3,r4
720         mlasne r1,r2,r3,r4
721
722 @ CHECK: mla    r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0xe0]
723 @ CHECK: mlas   r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0]
724 @ CHECK: mlane  r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0x10]
725 @ CHECK: mlasne r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0x10]
726
727 @------------------------------------------------------------------------------
728 @ MLS
729 @------------------------------------------------------------------------------
730         mls  r2,r5,r6,r3
731         mlsne  r2,r5,r6,r3
732
733 @ CHECK: mls    r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0xe0]
734 @ CHECK: mlsne  r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0x10]
735
736 @------------------------------------------------------------------------------
737 @ MOV (immediate)
738 @------------------------------------------------------------------------------
739     mov r3, #7
740     mov r4, #0xff0
741     mov r5, #0xff0000
742     mov r6, #0xffff
743     movw r9, #0xffff
744     movs r3, #7
745     moveq r4, #0xff0
746     movseq r5, #0xff0000
747
748 @ CHECK: mov    r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
749 @ CHECK: mov    r4, #4080               @ encoding: [0xff,0x4e,0xa0,0xe3]
750 @ CHECK: mov    r5, #16711680           @ encoding: [0xff,0x58,0xa0,0xe3]
751 @ CHECK: movw   r6, #65535              @ encoding: [0xff,0x6f,0x0f,0xe3]
752 @ CHECK: movw   r9, #65535              @ encoding: [0xff,0x9f,0x0f,0xe3]
753 @ CHECK: movs   r3, #7                  @ encoding: [0x07,0x30,0xb0,0xe3]
754 @ CHECK: moveq  r4, #4080               @ encoding: [0xff,0x4e,0xa0,0x03]
755 @ CHECK: movseq r5, #16711680           @ encoding: [0xff,0x58,0xb0,0x03]
756
757 @------------------------------------------------------------------------------
758 @ MOV (register)
759 @------------------------------------------------------------------------------
760         mov r2, r3
761         movs r2, r3
762         moveq r2, r3
763         movseq r2, r3
764
765 @ CHECK: mov    r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
766 @ CHECK: movs   r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
767 @ CHECK: moveq  r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
768 @ CHECK: movseq r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
769
770 @------------------------------------------------------------------------------
771 @ MOVT
772 @------------------------------------------------------------------------------
773     movt r3, #7
774     movt r6, #0xffff
775     movteq r4, #0xff0
776
777 @ CHECK: movt   r3, #7                  @ encoding: [0x07,0x30,0x40,0xe3]
778 @ CHECK: movt   r6, #65535              @ encoding: [0xff,0x6f,0x4f,0xe3]
779 @ CHECK: movteq r4, #4080               @ encoding: [0xf0,0x4f,0x40,0x03]
780
781
782 @------------------------------------------------------------------------------
783 @ MRC/MRC2
784 @------------------------------------------------------------------------------
785         mrc  p14, #0, r1, c1, c2, #4
786         mrc2  p14, #0, r1, c1, c2, #4
787
788 @ CHECK: mrc  p14, #0, r1, c1, c2, #4   @ encoding: [0x92,0x1e,0x11,0xee]
789 @ CHECK: mrc2  p14, #0, r1, c1, c2, #4  @ encoding: [0x92,0x1e,0x11,0xfe]
790
791 @------------------------------------------------------------------------------
792 @ MRRC/MRRC2
793 @------------------------------------------------------------------------------
794         mrrc  p7, #1, r5, r4, c1
795         mrrc2  p7, #1, r5, r4, c1
796
797 @ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
798 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
799
800
801 @------------------------------------------------------------------------------
802 @ MRS
803 @------------------------------------------------------------------------------
804         mrs  r8, apsr
805         mrs  r8, cpsr
806         mrs  r8, spsr
807 @ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
808 @ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
809 @ CHECK: mrs  r8, spsr @ encoding: [0x00,0x80,0x4f,0xe1]
810
811
812
813 @------------------------------------------------------------------------------
814 @ MSR
815 @------------------------------------------------------------------------------
816
817         msr  apsr, #5
818         msr  apsr_g, #5
819         msr  apsr_nzcvq, #5
820         msr  APSR_nzcvq, #5
821         msr  apsr_nzcvqg, #5
822         msr  cpsr_fc, #5
823         msr  cpsr_c, #5
824         msr  cpsr_x, #5
825         msr  cpsr_fc, #5
826         msr  cpsr_all, #5
827         msr  cpsr_fsx, #5
828         msr  spsr_fc, #5
829         msr  SPSR_fsxc, #5
830         msr  cpsr_fsxc, #5
831
832 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
833 @ CHECK: msr    APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
834 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
835 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
836 @ CHECK: msr    APSR_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
837 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
838 @ CHECK: msr    CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
839 @ CHECK: msr    CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
840 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
841 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
842 @ CHECK: msr    CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
843 @ CHECK: msr    SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
844 @ CHECK: msr    SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
845 @ CHECK: msr    CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
846
847         msr  apsr, r0
848         msr  apsr_g, r0
849         msr  apsr_nzcvq, r0
850         msr  APSR_nzcvq, r0
851         msr  apsr_nzcvqg, r0
852         msr  cpsr_fc, r0
853         msr  cpsr_c, r0
854         msr  cpsr_x, r0
855         msr  cpsr_fc, r0
856         msr  cpsr_all, r0
857         msr  cpsr_fsx, r0
858         msr  spsr_fc, r0
859         msr  SPSR_fsxc, r0
860         msr  cpsr_fsxc, r0
861
862 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
863 @ CHECK: msr  APSR_g, r0 @ encoding: [0x00,0xf0,0x24,0xe1]
864 @ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
865 @ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
866 @ CHECK: msr  APSR_nzcvqg, r0 @ encoding: [0x00,0xf0,0x2c,0xe1]
867 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
868 @ CHECK: msr  CPSR_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1]
869 @ CHECK: msr  CPSR_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1]
870 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
871 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
872 @ CHECK: msr  CPSR_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1]
873 @ CHECK: msr  SPSR_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1]
874 @ CHECK: msr  SPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1]
875 @ CHECK: msr  CPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1]
876
877 @------------------------------------------------------------------------------
878 @ MUL
879 @------------------------------------------------------------------------------
880
881   mul r5, r6, r7
882   muls r5, r6, r7
883   mulgt r5, r6, r7
884   mulsle r5, r6, r7
885
886 @ CHECK: mul    r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
887 @ CHECK: muls   r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
888 @ CHECK: mulgt  r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
889 @ CHECK: mulsle r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
890
891
892 @------------------------------------------------------------------------------
893 @ MVN (immediate)
894 @------------------------------------------------------------------------------
895     mvn r3, #7
896     mvn r4, #0xff0
897     mvn r5, #0xff0000
898     mvns r3, #7
899     mvneq r4, #0xff0
900     mvnseq r5, #0xff0000
901
902 @ CHECK: mvn    r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
903 @ CHECK: mvn    r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
904 @ CHECK: mvn    r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
905 @ CHECK: mvns   r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
906 @ CHECK: mvneq  r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
907 @ CHECK: mvnseq r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
908
909
910 @------------------------------------------------------------------------------
911 @ MVN (register)
912 @------------------------------------------------------------------------------
913         mvn r2, r3
914         mvns r2, r3
915         mvn r5, r6, lsl #19
916         mvn r5, r6, lsr #9
917         mvn r5, r6, asr #4
918         mvn r5, r6, ror #6
919         mvn r5, r6, rrx
920         mvneq r2, r3
921         mvnseq r2, r3, lsl #10
922
923 @ CHECK: mvn    r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
924 @ CHECK: mvns   r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
925 @ CHECK: mvn    r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
926 @ CHECK: mvn    r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
927 @ CHECK: mvn    r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
928 @ CHECK: mvn    r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
929 @ CHECK: mvn    r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
930 @ CHECK: mvneq  r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
931 @ CHECK: mvnseq r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
932
933
934 @------------------------------------------------------------------------------
935 @ MVN (shifted register)
936 @------------------------------------------------------------------------------
937         mvn r5, r6, lsl r7
938         mvns r5, r6, lsr r7
939         mvngt r5, r6, asr r7
940         mvnslt r5, r6, ror r7
941
942 @ CHECK: mvn    r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
943 @ CHECK: mvns   r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
944 @ CHECK: mvngt  r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
945 @ CHECK: mvnslt r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
946
947 @------------------------------------------------------------------------------
948 @ NOP
949 @------------------------------------------------------------------------------
950         nop
951         nopgt
952
953 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
954 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
955
956
957 @------------------------------------------------------------------------------
958 @ ORR
959 @------------------------------------------------------------------------------
960         orr r4, r5, #0xf000
961         orr r4, r5, r6
962         orr r4, r5, r6, lsl #5
963         orr r4, r5, r6, lsr #5
964         orr r4, r5, r6, lsr #5
965         orr r4, r5, r6, asr #5
966         orr r4, r5, r6, ror #5
967         orr r6, r7, r8, lsl r9
968         orr r6, r7, r8, lsr r9
969         orr r6, r7, r8, asr r9
970         orr r6, r7, r8, ror r9
971         orr r4, r5, r6, rrx
972
973         @ destination register is optional
974         orr r5, #0xf000
975         orr r4, r5
976         orr r4, r5, lsl #5
977         orr r4, r5, lsr #5
978         orr r4, r5, lsr #5
979         orr r4, r5, asr #5
980         orr r4, r5, ror #5
981         orr r6, r7, lsl r9
982         orr r6, r7, lsr r9
983         orr r6, r7, asr r9
984         orr r6, r7, ror r9
985         orr r4, r5, rrx
986
987 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
988 @ CHECK: orr    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
989 @ CHECK: orr    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
990 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
991 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
992 @ CHECK: orr    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
993 @ CHECK: orr    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
994 @ CHECK: orr    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
995 @ CHECK: orr    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
996 @ CHECK: orr    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
997 @ CHECK: orr    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
998 @ CHECK: orr    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
999
1000 @ CHECK: orr    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1001 @ CHECK: orr    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
1002 @ CHECK: orr    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
1003 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1004 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1005 @ CHECK: orr    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
1006 @ CHECK: orr    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
1007 @ CHECK: orr    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
1008 @ CHECK: orr    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
1009 @ CHECK: orr    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
1010 @ CHECK: orr    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
1011 @ CHECK: orr    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
1012
1013         orrseq r4, r5, #0xf000
1014         orrne r4, r5, r6
1015         orrseq r4, r5, r6, lsl #5
1016         orrlo r6, r7, r8, ror r9
1017         orrshi r4, r5, r6, rrx
1018         orrcs r5, #0xf000
1019         orrseq r4, r5
1020         orrne r6, r7, asr r9
1021         orrslt r6, r7, ror r9
1022         orrsgt r4, r5, rrx
1023
1024 @ CHECK: orrseq r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
1025 @ CHECK: orrne  r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
1026 @ CHECK: orrseq r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
1027 @ CHECK: orrlo  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
1028 @ CHECK: orrshi r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
1029 @ CHECK: orrhs  r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
1030 @ CHECK: orrseq r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
1031 @ CHECK: orrne  r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
1032 @ CHECK: orrslt r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
1033 @ CHECK: orrsgt r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
1034
1035 @------------------------------------------------------------------------------
1036 @ PKH
1037 @------------------------------------------------------------------------------
1038         pkhbt r2, r2, r3
1039         pkhbt r2, r2, r3, lsl #31
1040         pkhbt r2, r2, r3, lsl #0
1041         pkhbt r2, r2, r3, lsl #15
1042
1043         pkhtb r2, r2, r3
1044         pkhtb r2, r2, r3, asr #31
1045         pkhtb r2, r2, r3, asr #15
1046
1047 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1048 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1049 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1050 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1051
1052 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1053 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1054 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1055
1056 @------------------------------------------------------------------------------
1057 @ FIXME: PLD
1058 @------------------------------------------------------------------------------
1059 @------------------------------------------------------------------------------
1060 @ FIXME: PLI
1061 @------------------------------------------------------------------------------
1062
1063
1064 @------------------------------------------------------------------------------
1065 @ POP
1066 @------------------------------------------------------------------------------
1067         pop {r7}
1068         pop {r7, r8, r9, r10}
1069
1070 @ CHECK: pop    {r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1071 @ CHECK: pop    {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1072
1073
1074 @------------------------------------------------------------------------------
1075 @ PUSH
1076 @------------------------------------------------------------------------------
1077         push {r7}
1078         push {r7, r8, r9, r10}
1079
1080 @ CHECK: push   {r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1081 @ CHECK: push   {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1082
1083
1084 @------------------------------------------------------------------------------
1085 @ QADD/QADD16/QADD8
1086 @------------------------------------------------------------------------------
1087         qadd r1, r2, r3
1088         qaddne r1, r2, r3
1089         qadd16 r1, r2, r3
1090         qadd16gt r1, r2, r3
1091         qadd8 r1, r2, r3
1092         qadd8le r1, r2, r3
1093
1094 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1095 @ CHECK: qaddne r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1096 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1097 @ CHECK: qadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1098 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1099 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1100
1101
1102 @------------------------------------------------------------------------------
1103 @ QDADD/QDSUB
1104 @------------------------------------------------------------------------------
1105         qdadd r6, r7, r8
1106         qdaddhi r6, r7, r8
1107         qdsub r6, r7, r8
1108         qdsubhi r6, r7, r8
1109
1110 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1111 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1112 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1113 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1114
1115
1116 @------------------------------------------------------------------------------
1117 @ QSAX
1118 @------------------------------------------------------------------------------
1119         qsax r9, r12, r0
1120         qsaxeq r9, r12, r0
1121
1122 @ CHECK: qsax   r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1123 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1124
1125
1126 @------------------------------------------------------------------------------
1127 @ QSUB/QSUB16/QSUB8
1128 @------------------------------------------------------------------------------
1129         qsub r1, r2, r3
1130         qsubne r1, r2, r3
1131         qsub16 r1, r2, r3
1132         qsub16gt r1, r2, r3
1133         qsub8 r1, r2, r3
1134         qsub8le r1, r2, r3
1135
1136 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1137 @ CHECK: qsubne r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1138 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1139 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1140 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1141 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1142
1143
1144 @------------------------------------------------------------------------------
1145 @ RBIT
1146 @------------------------------------------------------------------------------
1147         rbit r1, r2
1148         rbitne r1, r2
1149
1150 @ CHECK: rbit   r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1151 @ CHECK: rbitne r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1152
1153
1154 @------------------------------------------------------------------------------
1155 @ REV/REV16/REVSH
1156 @------------------------------------------------------------------------------
1157         rev r1, r9
1158         revne r1, r5
1159         rev16 r8, r3
1160         rev16ne r12, r4
1161         revsh r4, r9
1162         revshne r9, r1
1163
1164 @ CHECK: rev    r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1165 @ CHECK: revne  r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1166 @ CHECK: rev16  r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1167 @ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1168 @ CHECK: revsh  r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1169 @ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1170
1171
1172 @------------------------------------------------------------------------------
1173 @ RFE
1174 @------------------------------------------------------------------------------
1175         rfeda r2
1176         rfedb r3
1177         rfeia r5
1178         rfeib r6
1179
1180         rfeda r4!
1181         rfedb r7!
1182         rfeia r9!
1183         rfeib r8!
1184
1185         rfefa r2
1186         rfeea r3
1187         rfefd r5
1188         rfeed r6
1189
1190         rfefa r4!
1191         rfeea r7!
1192         rfefd r9!
1193         rfeed r8!
1194
1195         rfe r1
1196         rfe r1!
1197
1198 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1199 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1200 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1201 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1202
1203 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1204 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1205 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1206 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1207
1208 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1209 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1210 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1211 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1212
1213 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1214 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1215 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1216 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1217
1218 @ CHECK: rfeia  r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
1219 @ CHECK: rfeia  r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
1220
1221
1222 @------------------------------------------------------------------------------
1223 @ RSB
1224 @------------------------------------------------------------------------------
1225         rsb r4, r5, #0xf000
1226         rsb r4, r5, r6
1227         rsb r4, r5, r6, lsl #5
1228         rsblo r4, r5, r6, lsr #5
1229         rsb r4, r5, r6, lsr #5
1230         rsb r4, r5, r6, asr #5
1231         rsb r4, r5, r6, ror #5
1232         rsb r6, r7, r8, lsl r9
1233         rsb r6, r7, r8, lsr r9
1234         rsb r6, r7, r8, asr r9
1235         rsble r6, r7, r8, ror r9
1236         rsb r4, r5, r6, rrx
1237
1238         @ destination register is optional
1239         rsb r5, #0xf000
1240         rsb r4, r5
1241         rsb r4, r5, lsl #5
1242         rsb r4, r5, lsr #5
1243         rsbne r4, r5, lsr #5
1244         rsb r4, r5, asr #5
1245         rsb r4, r5, ror #5
1246         rsbgt r6, r7, lsl r9
1247         rsb r6, r7, lsr r9
1248         rsb r6, r7, asr r9
1249         rsb r6, r7, ror r9
1250         rsb r4, r5, rrx
1251
1252 @ CHECK: rsb    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
1253 @ CHECK: rsb    r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
1254 @ CHECK: rsb    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
1255 @ CHECK: rsblo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
1256 @ CHECK: rsb    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
1257 @ CHECK: rsb    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
1258 @ CHECK: rsb    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
1259 @ CHECK: rsb    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
1260 @ CHECK: rsb    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
1261 @ CHECK: rsb    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
1262 @ CHECK: rsble  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
1263 @ CHECK: rsb    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
1264
1265 @ CHECK: rsb    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
1266 @ CHECK: rsb    r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
1267 @ CHECK: rsb    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
1268 @ CHECK: rsb    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
1269 @ CHECK: rsbne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
1270 @ CHECK: rsb    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
1271 @ CHECK: rsb    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
1272 @ CHECK: rsbgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
1273 @ CHECK: rsb    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
1274 @ CHECK: rsb    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
1275 @ CHECK: rsb    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
1276 @ CHECK: rsb    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
1277
1278 @------------------------------------------------------------------------------
1279 @ RSC
1280 @------------------------------------------------------------------------------
1281         rsc r4, r5, #0xf000
1282         rsc r4, r5, r6
1283         rsc r4, r5, r6, lsl #5
1284         rsclo r4, r5, r6, lsr #5
1285         rsc r4, r5, r6, lsr #5
1286         rsc r4, r5, r6, asr #5
1287         rsc r4, r5, r6, ror #5
1288         rsc r6, r7, r8, lsl r9
1289         rsc r6, r7, r8, lsr r9
1290         rsc r6, r7, r8, asr r9
1291         rscle r6, r7, r8, ror r9
1292
1293         @ destination register is optional
1294         rsc r5, #0xf000
1295         rsc r4, r5
1296         rsc r4, r5, lsl #5
1297         rsc r4, r5, lsr #5
1298         rscne r4, r5, lsr #5
1299         rsc r4, r5, asr #5
1300         rsc r4, r5, ror #5
1301         rscgt r6, r7, lsl r9
1302         rsc r6, r7, lsr r9
1303         rsc r6, r7, asr r9
1304         rsc r6, r7, ror r9
1305
1306 @ CHECK: rsc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
1307 @ CHECK: rsc    r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
1308 @ CHECK: rsc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
1309 @ CHECK: rsclo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
1310 @ CHECK: rsc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
1311 @ CHECK: rsc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
1312 @ CHECK: rsc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
1313 @ CHECK: rsc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
1314 @ CHECK: rsc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
1315 @ CHECK: rsc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
1316 @ CHECK: rscle  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
1317
1318 @ CHECK: rsc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
1319 @ CHECK: rsc    r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
1320 @ CHECK: rsc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
1321 @ CHECK: rsc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
1322 @ CHECK: rscne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
1323 @ CHECK: rsc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
1324 @ CHECK: rsc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
1325 @ CHECK: rscgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
1326 @ CHECK: rsc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
1327 @ CHECK: rsc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
1328 @ CHECK: rsc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
1329
1330 @------------------------------------------------------------------------------
1331 @ SADD16/SADD8
1332 @------------------------------------------------------------------------------
1333         sadd16 r1, r2, r3
1334         sadd16gt r1, r2, r3
1335         sadd8 r1, r2, r3
1336         sadd8le r1, r2, r3
1337
1338 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
1339 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
1340 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
1341 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
1342
1343
1344 @------------------------------------------------------------------------------
1345 @ SASX
1346 @------------------------------------------------------------------------------
1347         sasx r9, r12, r0
1348         sasxeq r9, r12, r0
1349
1350 @ CHECK: sasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
1351 @ CHECK: sasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
1352
1353
1354 @------------------------------------------------------------------------------
1355 @ SBC
1356 @------------------------------------------------------------------------------
1357         sbc r4, r5, #0xf000
1358         sbc r4, r5, r6
1359         sbc r4, r5, r6, lsl #5
1360         sbc r4, r5, r6, lsr #5
1361         sbc r4, r5, r6, lsr #5
1362         sbc r4, r5, r6, asr #5
1363         sbc r4, r5, r6, ror #5
1364         sbc r6, r7, r8, lsl r9
1365         sbc r6, r7, r8, lsr r9
1366         sbc r6, r7, r8, asr r9
1367         sbc r6, r7, r8, ror r9
1368
1369         @ destination register is optional
1370         sbc r5, #0xf000
1371         sbc r4, r5
1372         sbc r4, r5, lsl #5
1373         sbc r4, r5, lsr #5
1374         sbc r4, r5, lsr #5
1375         sbc r4, r5, asr #5
1376         sbc r4, r5, ror #5
1377         sbc r6, r7, lsl r9
1378         sbc r6, r7, lsr r9
1379         sbc r6, r7, asr r9
1380         sbc r6, r7, ror r9
1381
1382 @ CHECK: sbc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
1383 @ CHECK: sbc    r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
1384 @ CHECK: sbc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
1385 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1386 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1387 @ CHECK: sbc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
1388 @ CHECK: sbc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
1389 @ CHECK: sbc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
1390 @ CHECK: sbc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
1391 @ CHECK: sbc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
1392 @ CHECK: sbc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
1393
1394 @ CHECK: sbc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
1395 @ CHECK: sbc    r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
1396 @ CHECK: sbc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
1397 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1398 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1399 @ CHECK: sbc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
1400 @ CHECK: sbc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
1401 @ CHECK: sbc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
1402 @ CHECK: sbc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
1403 @ CHECK: sbc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
1404 @ CHECK: sbc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
1405
1406
1407 @------------------------------------------------------------------------------
1408 @ SBFX
1409 @------------------------------------------------------------------------------
1410         sbfx r4, r5, #16, #1
1411         sbfxgt r4, r5, #16, #16
1412
1413 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
1414 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
1415
1416
1417 @------------------------------------------------------------------------------
1418 @ SEL
1419 @------------------------------------------------------------------------------
1420         sel r9, r2, r1
1421         selne r9, r2, r1
1422
1423 @ CHECK: sel    r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1424 @ CHECK: selne  r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1425
1426
1427 @------------------------------------------------------------------------------
1428 @ SETEND
1429 @------------------------------------------------------------------------------
1430         setend be
1431         setend le
1432
1433         sel     r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1434         selne   r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1435
1436
1437 @------------------------------------------------------------------------------
1438 @ SEV
1439 @------------------------------------------------------------------------------
1440         sev
1441         seveq
1442
1443 @ CHECK: sev                             @ encoding: [0x04,0xf0,0x20,0xe3]
1444 @ CHECK: seveq                           @ encoding: [0x04,0xf0,0x20,0x03]
1445
1446 @------------------------------------------------------------------------------
1447 @ SHADD16/SHADD8
1448 @------------------------------------------------------------------------------
1449         shadd16 r4, r8, r2
1450         shadd16gt r4, r8, r2
1451         shadd8 r4, r8, r2
1452         shadd8gt r4, r8, r2
1453
1454 @ CHECK: shadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1455 @ CHECK: shadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1456 @ CHECK: shadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1457 @ CHECK: shadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1458
1459
1460 @------------------------------------------------------------------------------
1461 @ SHASX
1462 @------------------------------------------------------------------------------
1463         shasx r4, r8, r2
1464         shasxgt r4, r8, r2
1465
1466 @ CHECK: shasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1467 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1468
1469
1470 @------------------------------------------------------------------------------
1471 @ SHSUB16/SHSUB8
1472 @------------------------------------------------------------------------------
1473         shsub16 r4, r8, r2
1474         shsub16gt r4, r8, r2
1475         shsub8 r4, r8, r2
1476         shsub8gt r4, r8, r2
1477
1478 @ CHECK: shsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1479 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1480 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1481 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1482
1483 @------------------------------------------------------------------------------
1484 @ SMC
1485 @------------------------------------------------------------------------------
1486         smc #0xf
1487         smceq #0
1488
1489 @ CHECK: smc    #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1490 @ CHECK: smceq  #0                      @ encoding: [0x70,0x00,0x60,0x01]
1491
1492 @------------------------------------------------------------------------------
1493 @ SMLABB/SMLABT/SMLATB/SMLATT
1494 @------------------------------------------------------------------------------
1495         smlabb r3, r1, r9, r0
1496         smlabt r5, r6, r4, r1
1497         smlatb r4, r2, r3, r2
1498         smlatt r8, r3, r8, r4
1499         smlabbge r3, r1, r9, r0
1500         smlabtle r5, r6, r4, r1
1501         smlatbne r4, r2, r3, r2
1502         smlatteq r8, r3, r8, r4
1503
1504 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1505 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1506 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1507 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1508 @ CHECK: smlabbge       r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1509 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1510 @ CHECK: smlatbne       r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1511 @ CHECK: smlatteq       r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1512
1513 @------------------------------------------------------------------------------
1514 @ SMLAD/SMLADX
1515 @------------------------------------------------------------------------------
1516         smlad r2, r3, r5, r8
1517         smladx r2, r3, r5, r8
1518         smladeq r2, r3, r5, r8
1519         smladxhi r2, r3, r5, r8
1520
1521 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1522 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1523 @ CHECK: smladeq        r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1524 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1525
1526
1527 @------------------------------------------------------------------------------
1528 @ SMLAL
1529 @------------------------------------------------------------------------------
1530         smlal r2, r3, r5, r8
1531         smlals r2, r3, r5, r8
1532         smlaleq r2, r3, r5, r8
1533         smlalshi r2, r3, r5, r8
1534
1535 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1536 @ CHECK: smlals r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1537 @ CHECK: smlaleq        r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1538 @ CHECK: smlalshi       r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1539
1540
1541 @------------------------------------------------------------------------------
1542 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1543 @------------------------------------------------------------------------------
1544         smlalbb r3, r1, r9, r0
1545         smlalbt r5, r6, r4, r1
1546         smlaltb r4, r2, r3, r2
1547         smlaltt r8, r3, r8, r4
1548         smlalbbge r3, r1, r9, r0
1549         smlalbtle r5, r6, r4, r1
1550         smlaltbne r4, r2, r3, r2
1551         smlaltteq r8, r3, r8, r4
1552
1553 @ CHECK: smlalbb        r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1554 @ CHECK: smlalbt        r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1555 @ CHECK: smlaltb        r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1556 @ CHECK: smlaltt        r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1557 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1558 @ CHECK: smlalbtle      r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1559 @ CHECK: smlaltbne      r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1560 @ CHECK: smlaltteq      r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1561
1562
1563 @------------------------------------------------------------------------------
1564 @ SMLALD/SMLALDX
1565 @------------------------------------------------------------------------------
1566         smlald r2, r3, r5, r8
1567         smlaldx r2, r3, r5, r8
1568         smlaldeq r2, r3, r5, r8
1569         smlaldxhi r2, r3, r5, r8
1570
1571 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1572 @ CHECK: smlaldx        r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1573 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1574 @ CHECK: smlaldxhi      r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1575
1576
1577 @------------------------------------------------------------------------------
1578 @ SMLAWB/SMLAWT
1579 @------------------------------------------------------------------------------
1580         smlawb r2, r3, r10, r8
1581         smlawt r8, r3, r5, r9
1582         smlawbeq r2, r7, r5, r8
1583         smlawthi r1, r3, r0, r8
1584
1585 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1586 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1587 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1588 @ CHECK: smlawthi       r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1589
1590
1591 @------------------------------------------------------------------------------
1592 @ SMLSD/SMLSDX
1593 @------------------------------------------------------------------------------
1594         smlsd r2, r3, r5, r8
1595         smlsdx r2, r3, r5, r8
1596         smlsdeq r2, r3, r5, r8
1597         smlsdxhi r2, r3, r5, r8
1598
1599 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1600 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1601 @ CHECK: smlsdeq        r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1602 @ CHECK: smlsdxhi       r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1603
1604
1605 @------------------------------------------------------------------------------
1606 @ SMLSLD/SMLSLDX
1607 @------------------------------------------------------------------------------
1608         smlsld r2, r9, r5, r1
1609         smlsldx r4, r11, r2, r8
1610         smlsldeq r8, r2, r5, r6
1611         smlsldxhi r1, r0, r3, r8
1612
1613 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1614 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1615 @ CHECK: smlsldeq       r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1616 @ CHECK: smlsldxhi      r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1617
1618
1619 @------------------------------------------------------------------------------
1620 @ SMMLA/SMMLAR
1621 @------------------------------------------------------------------------------
1622         smmla r1, r2, r3, r4
1623         smmlar r4, r3, r2, r1
1624         smmlalo r1, r2, r3, r4
1625         smmlarcs r4, r3, r2, r1
1626
1627 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1628 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1629 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1630 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1631
1632
1633 @------------------------------------------------------------------------------
1634 @ SMMLS/SMMLSR
1635 @------------------------------------------------------------------------------
1636         smmls r1, r2, r3, r4
1637         smmlsr r4, r3, r2, r1
1638         smmlslo r1, r2, r3, r4
1639         smmlsrcs r4, r3, r2, r1
1640
1641 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1642 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1643 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1644 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1645
1646
1647 @------------------------------------------------------------------------------
1648 @ SMMUL/SMMULR
1649 @------------------------------------------------------------------------------
1650         smmul r2, r3, r4
1651         smmulr r3, r2, r1
1652         smmulcc r2, r3, r4
1653         smmulrhs r3, r2, r1
1654
1655 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1656 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1657 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1658 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1659
1660
1661 @------------------------------------------------------------------------------
1662 @ SMUAD/SMUADX
1663 @------------------------------------------------------------------------------
1664         smuad r2, r3, r4
1665         smuadx r3, r2, r1
1666         smuadlt r2, r3, r4
1667         smuadxge r3, r2, r1
1668
1669 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1670 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1671 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1672 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1673
1674
1675 @------------------------------------------------------------------------------
1676 @ SMULBB/SMLALBT/SMLALTB/SMLALTT
1677 @------------------------------------------------------------------------------
1678         smulbb r3, r9, r0
1679         smulbt r5, r4, r1
1680         smultb r4, r2, r2
1681         smultt r8, r3, r4
1682         smulbbge r1, r9, r0
1683         smulbtle r5, r6, r4
1684         smultbne r2, r3, r2
1685         smultteq r8, r3, r4
1686
1687 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1688 @ CHECK: smulbt r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1689 @ CHECK: smultb r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
1690 @ CHECK: smultt r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
1691 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
1692 @ CHECK: smulbtle       r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
1693 @ CHECK: smultbne       r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
1694 @ CHECK: smultteq       r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
1695
1696
1697 @------------------------------------------------------------------------------
1698 @ SMULL
1699 @------------------------------------------------------------------------------
1700         smull r3, r9, r0, r1
1701         smulls r3, r9, r0, r2
1702         smulleq r8, r3, r4, r5
1703         smullseq r8, r3, r4, r3
1704
1705 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
1706 @ CHECK: smulls r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
1707 @ CHECK: smulleq        r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
1708 @ CHECK: smullseq       r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
1709
1710
1711 @------------------------------------------------------------------------------
1712 @ SMULWB/SMULWT
1713 @------------------------------------------------------------------------------
1714         smulwb r3, r9, r0
1715         smulwt r3, r9, r2
1716
1717 @ CHECK: smulwb r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
1718 @ CHECK: smulwt r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
1719
1720
1721 @------------------------------------------------------------------------------
1722 @ SMUSD/SMUSDX
1723 @------------------------------------------------------------------------------
1724         smusd r3, r0, r1
1725         smusdx r3, r9, r2
1726         smusdeq r8, r3, r2
1727         smusdxne r7, r4, r3
1728
1729 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
1730 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
1731 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
1732 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
1733
1734
1735 @------------------------------------------------------------------------------
1736 @ SRS
1737 @------------------------------------------------------------------------------
1738         srsda sp, #5
1739         srsdb sp, #1
1740         srsia sp, #0
1741         srsib sp, #15
1742
1743         srsda sp!, #31
1744         srsdb sp!, #19
1745         srsia sp!, #2
1746         srsib sp!, #14
1747
1748         srsfa sp, #11
1749         srsea sp, #10
1750         srsfd sp, #9
1751         srsed sp, #5
1752
1753         srsfa sp!, #5
1754         srsea sp!, #5
1755         srsfd sp!, #5
1756         srsed sp!, #5
1757
1758         srs sp, #5
1759         srs sp!, #5
1760
1761 @ CHECK: srsda  sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
1762 @ CHECK: srsdb  sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
1763 @ CHECK: srsia  sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
1764 @ CHECK: srsib  sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
1765
1766 @ CHECK: srsda  sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
1767 @ CHECK: srsdb  sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
1768 @ CHECK: srsia  sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
1769 @ CHECK: srsib  sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
1770
1771 @ CHECK: srsda  sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
1772 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
1773 @ CHECK: srsia  sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
1774 @ CHECK: srsib  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
1775
1776 @ CHECK: srsda  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
1777 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
1778 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1779 @ CHECK: srsib  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
1780
1781 @ CHECK: srsia  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
1782 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1783
1784
1785 @------------------------------------------------------------------------------
1786 @ SSAT
1787 @------------------------------------------------------------------------------
1788         ssat    r8, #1, r10
1789         ssat    r8, #1, r10, lsl #0
1790         ssat    r8, #1, r10, lsl #31
1791         ssat    r8, #1, r10, asr #32
1792         ssat    r8, #1, r10, asr #1
1793
1794 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1795 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1796 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
1797 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
1798 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
1799
1800
1801 @------------------------------------------------------------------------------
1802 @ SSAT16
1803 @------------------------------------------------------------------------------
1804         ssat16  r2, #1, r7
1805         ssat16  r3, #16, r5
1806
1807 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
1808 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
1809
1810
1811 @------------------------------------------------------------------------------
1812 @ SSAX
1813 @------------------------------------------------------------------------------
1814         ssax r2, r3, r4
1815         ssaxlt r2, r3, r4
1816
1817 @ CHECK: ssax   r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
1818 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
1819
1820 @------------------------------------------------------------------------------
1821 @ SSUB16/SSUB8
1822 @------------------------------------------------------------------------------
1823         ssub16 r1, r0, r6
1824         ssub16ne r5, r3, r2
1825         ssub8 r9, r2, r4
1826         ssub8eq r5, r1, r2
1827
1828 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
1829 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
1830 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
1831 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
1832
1833
1834 @------------------------------------------------------------------------------
1835 @ STM*
1836 @------------------------------------------------------------------------------
1837         stm       r2, {r1,r3-r6,sp}
1838         stmia     r3, {r1,r3-r6,lr}
1839         stmib     r4, {r1,r3-r6,sp}
1840         stmda     r5, {r1,r3-r6,sp}
1841         stmdb     r6, {r1,r3-r6,r8}
1842         stmfd     sp, {r1,r3-r6,sp}
1843
1844         @ with update
1845         stm       r8!, {r1,r3-r6,sp}
1846         stmib     r9!, {r1,r3-r6,sp}
1847         stmda     sp!, {r1,r3-r6}
1848         stmdb     r0!, {r1,r5,r7,sp}
1849
1850 @ CHECK: stm    r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
1851 @ CHECK: stm    r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
1852 @ CHECK: stmib  r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
1853 @ CHECK: stmda  r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
1854 @ CHECK: stmdb  r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
1855 @ CHECK: stmdb  sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
1856
1857 @ CHECK: stm    r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
1858 @ CHECK: stmib  r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
1859 @ CHECK: stmda  sp!, {r1, r3, r4, r5, r6} @ encoding: [0x7a,0x00,0x2d,0xe8]
1860 @ CHECK: stmdb  r0!, {r1, r5, r7, sp}   @ encoding: [0xa2,0x20,0x20,0xe9]
1861
1862
1863 @------------------------------------------------------------------------------
1864 @ STREX/STREXB/STREXH/STREXD
1865 @------------------------------------------------------------------------------
1866         strexb  r1, r3, [r4]
1867         strexh  r4, r2, [r5]
1868         strex  r2, r1, [r7]
1869         strexd  r6, r2, r3, [r8]
1870
1871 @ CHECK: strexb r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
1872 @ CHECK: strexh r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
1873 @ CHECK: strex  r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
1874 @ CHECK: strexd r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
1875
1876
1877 @------------------------------------------------------------------------------
1878 @ SUB
1879 @------------------------------------------------------------------------------
1880         sub r4, r5, #0xf000
1881         sub r4, r5, r6
1882         sub r4, r5, r6, lsl #5
1883         sub r4, r5, r6, lsr #5
1884         sub r4, r5, r6, lsr #5
1885         sub r4, r5, r6, asr #5
1886         sub r4, r5, r6, ror #5
1887         sub r6, r7, r8, lsl r9
1888         sub r6, r7, r8, lsr r9
1889         sub r6, r7, r8, asr r9
1890         sub r6, r7, r8, ror r9
1891
1892         @ destination register is optional
1893         sub r5, #0xf000
1894         sub r4, r5
1895         sub r4, r5, lsl #5
1896         sub r4, r5, lsr #5
1897         sub r4, r5, lsr #5
1898         sub r4, r5, asr #5
1899         sub r4, r5, ror #5
1900         sub r6, r7, lsl r9
1901         sub r6, r7, lsr r9
1902         sub r6, r7, asr r9
1903         sub r6, r7, ror r9
1904
1905 @ CHECK: sub    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
1906 @ CHECK: sub    r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
1907 @ CHECK: sub    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
1908 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1909 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1910 @ CHECK: sub    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
1911 @ CHECK: sub    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
1912 @ CHECK: sub    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
1913 @ CHECK: sub    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
1914 @ CHECK: sub    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
1915 @ CHECK: sub    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
1916
1917
1918 @ CHECK: sub    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
1919 @ CHECK: sub    r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
1920 @ CHECK: sub    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
1921 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1922 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1923 @ CHECK: sub    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
1924 @ CHECK: sub    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
1925 @ CHECK: sub    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
1926 @ CHECK: sub    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
1927 @ CHECK: sub    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
1928 @ CHECK: sub    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
1929
1930
1931 @------------------------------------------------------------------------------
1932 @ SVC
1933 @------------------------------------------------------------------------------
1934         svc #16
1935         svc #0
1936         svc #0xffffff
1937
1938 @ CHECK: svc    #16                     @ encoding: [0x10,0x00,0x00,0xef]
1939 @ CHECK: svc    #0                      @ encoding: [0x00,0x00,0x00,0xef]
1940 @ CHECK: svc    #16777215               @ encoding: [0xff,0xff,0xff,0xef]
1941
1942
1943 @------------------------------------------------------------------------------
1944 @ SWP/SWPB
1945 @------------------------------------------------------------------------------
1946         swp r1, r2, [r3]
1947         swp r4, r4, [r6]
1948         swpb r5, r1, [r9]
1949
1950 @ CHECK: swp    r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
1951 @ CHECK: swp    r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
1952 @ CHECK: swpb   r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
1953
1954
1955 @------------------------------------------------------------------------------
1956 @ SXTAB
1957 @------------------------------------------------------------------------------
1958         sxtab r2, r3, r4
1959         sxtab r4, r5, r6, ror #0
1960         sxtablt r6, r2, r9, ror #8
1961         sxtab r5, r1, r4, ror #16
1962         sxtab r7, r8, r3, ror #24
1963
1964 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
1965 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
1966 @ CHECK: sxtablt        r6, r2, r9, ror #8
1967                                         @ encoding: [0x79,0x64,0xa2,0xb6]
1968 @ CHECK: sxtab  r5, r1, r4, ror #16
1969                                         @ encoding: [0x74,0x58,0xa1,0xe6]
1970 @ CHECK: sxtab  r7, r8, r3, ror #24
1971                                         @ encoding: [0x73,0x7c,0xa8,0xe6]
1972
1973
1974 @------------------------------------------------------------------------------
1975 @ SXTAB16
1976 @------------------------------------------------------------------------------
1977         sxtab16ge r0, r1, r4
1978         sxtab16 r6, r2, r7, ror #0
1979         sxtab16 r3, r5, r8, ror #8
1980         sxtab16 r3, r2, r1, ror #16
1981         sxtab16eq r1, r2, r3, ror #24
1982
1983 @ CHECK: sxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
1984 @ CHECK: sxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
1985 @ CHECK: sxtab16        r3, r5, r8, ror #8
1986                                         @ encoding: [0x78,0x34,0x85,0xe6]
1987 @ CHECK: sxtab16        r3, r2, r1, ror #16
1988                                         @ encoding: [0x71,0x38,0x82,0xe6]
1989 @ CHECK: sxtab16eq      r1, r2, r3, ror #24
1990                                         @ encoding: [0x73,0x1c,0x82,0x06]
1991
1992 @------------------------------------------------------------------------------
1993 @ SXTAH
1994 @------------------------------------------------------------------------------
1995         sxtah r1, r3, r9
1996         sxtahhi r6, r1, r6, ror #0
1997         sxtah r3, r8, r3, ror #8
1998         sxtahlo r2, r2, r4, ror #16
1999         sxtah r9, r3, r3, ror #24
2000
2001 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2002 @ CHECK: sxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2003 @ CHECK: sxtah  r3, r8, r3, ror #8
2004                                         @ encoding: [0x73,0x34,0xb8,0xe6]
2005 @ CHECK: sxtahlo        r2, r2, r4, ror #16
2006                                         @ encoding: [0x74,0x28,0xb2,0x36]
2007 @ CHECK: sxtah  r9, r3, r3, ror #24
2008                                         @ encoding: [0x73,0x9c,0xb3,0xe6]
2009
2010 @------------------------------------------------------------------------------
2011 @ SXTB
2012 @------------------------------------------------------------------------------
2013         sxtbge r2, r4
2014         sxtb r5, r6, ror #0
2015         sxtb r6, r9, ror #8
2016         sxtbcc r5, r1, ror #16
2017         sxtb r8, r3, ror #24
2018
2019 @ CHECK: sxtbge r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2020 @ CHECK: sxtb   r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2021 @ CHECK: sxtb   r6, r9, ror #8
2022                                         @ encoding: [0x79,0x64,0xaf,0xe6]
2023 @ CHECK: sxtblo r5, r1, ror #16
2024                                         @ encoding: [0x71,0x58,0xaf,0x36]
2025 @ CHECK: sxtb   r8, r3, ror #24
2026                                         @ encoding: [0x73,0x8c,0xaf,0xe6]
2027
2028
2029 @------------------------------------------------------------------------------
2030 @ SXTB16
2031 @------------------------------------------------------------------------------
2032         sxtb16 r1, r4
2033         sxtb16 r6, r7, ror #0
2034         sxtb16cs r3, r5, ror #8
2035         sxtb16 r3, r1, ror #16
2036         sxtb16ge r2, r3, ror #24
2037
2038 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2039 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2040 @ CHECK: sxtb16hs       r3, r5, ror #8
2041                                         @ encoding: [0x75,0x34,0x8f,0x26]
2042 @ CHECK: sxtb16 r3, r1, ror #16
2043                                         @ encoding: [0x71,0x38,0x8f,0xe6]
2044 @ CHECK: sxtb16ge       r2, r3, ror #24
2045                                         @ encoding: [0x73,0x2c,0x8f,0xa6]
2046
2047
2048 @------------------------------------------------------------------------------
2049 @ SXTH
2050 @------------------------------------------------------------------------------
2051         sxthne r3, r9
2052         sxth r1, r6, ror #0
2053         sxth r3, r8, ror #8
2054         sxthle r2, r2, ror #16
2055         sxth r9, r3, ror #24
2056
2057 @ CHECK: sxthne r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2058 @ CHECK: sxth   r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2059 @ CHECK: sxth   r3, r8, ror #8
2060                                         @ encoding: [0x78,0x34,0xbf,0xe6]
2061 @ CHECK: sxthle r2, r2, ror #16
2062                                         @ encoding: [0x72,0x28,0xbf,0xd6]
2063 @ CHECK: sxth   r9, r3, ror #24
2064                                         @ encoding: [0x73,0x9c,0xbf,0xe6]
2065
2066
2067 @------------------------------------------------------------------------------
2068 @ FIXME: TBB/TBH
2069 @------------------------------------------------------------------------------
2070
2071
2072 @------------------------------------------------------------------------------
2073 @ TEQ
2074 @------------------------------------------------------------------------------
2075         teq r5, #0xf000
2076         teq r4, r5
2077         teq r4, r5, lsl #5
2078         teq r4, r5, lsr #5
2079         teq r4, r5, lsr #5
2080         teq r4, r5, asr #5
2081         teq r4, r5, ror #5
2082         teq r6, r7, lsl r9
2083         teq r6, r7, lsr r9
2084         teq r6, r7, asr r9
2085         teq r6, r7, ror r9
2086
2087 @ CHECK: teq    r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2088 @ CHECK: teq    r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2089 @ CHECK: teq    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2090 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2091 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2092 @ CHECK: teq    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2093 @ CHECK: teq    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2094 @ CHECK: teq    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2095 @ CHECK: teq    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2096 @ CHECK: teq    r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2097 @ CHECK: teq    r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2098
2099
2100 @------------------------------------------------------------------------------
2101 @ TST
2102 @------------------------------------------------------------------------------
2103         tst r5, #0xf000
2104         tst r4, r5
2105         tst r4, r5, lsl #5
2106         tst r4, r5, lsr #5
2107         tst r4, r5, lsr #5
2108         tst r4, r5, asr #5
2109         tst r4, r5, ror #5
2110         tst r6, r7, lsl r9
2111         tst r6, r7, lsr r9
2112         tst r6, r7, asr r9
2113         tst r6, r7, ror r9
2114
2115 @ CHECK: tst    r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2116 @ CHECK: tst    r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2117 @ CHECK: tst    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2118 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2119 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2120 @ CHECK: tst    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2121 @ CHECK: tst    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2122 @ CHECK: tst    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2123 @ CHECK: tst    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2124 @ CHECK: tst    r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2125 @ CHECK: tst    r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2126
2127
2128 @------------------------------------------------------------------------------
2129 @ UADD16/UADD8
2130 @------------------------------------------------------------------------------
2131         uadd16 r1, r2, r3
2132         uadd16gt r1, r2, r3
2133         uadd8 r1, r2, r3
2134         uadd8le r1, r2, r3
2135
2136 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2137 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2138 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2139 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2140
2141
2142 @------------------------------------------------------------------------------
2143 @ UASX
2144 @------------------------------------------------------------------------------
2145         uasx r9, r12, r0
2146         uasxeq r9, r12, r0
2147
2148 @ CHECK: uasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2149 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2150
2151
2152 @------------------------------------------------------------------------------
2153 @ UBFX
2154 @------------------------------------------------------------------------------
2155         ubfx r4, r5, #16, #1
2156         ubfxgt r4, r5, #16, #16
2157
2158 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2159 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2160
2161
2162 @------------------------------------------------------------------------------
2163 @ UHADD16/UHADD8
2164 @------------------------------------------------------------------------------
2165         uhadd16 r4, r8, r2
2166         uhadd16gt r4, r8, r2
2167         uhadd8 r4, r8, r2
2168         uhadd8gt r4, r8, r2
2169
2170 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2171 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2172 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2173 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2174
2175
2176 @------------------------------------------------------------------------------
2177 @ UHASX
2178 @------------------------------------------------------------------------------
2179         uhasx r4, r8, r2
2180         uhasxgt r4, r8, r2
2181
2182 @ CHECK: uhasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2183 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2184
2185
2186 @------------------------------------------------------------------------------
2187 @ UHSUB16/UHSUB8
2188 @------------------------------------------------------------------------------
2189         uhsub16 r4, r8, r2
2190         uhsub16gt r4, r8, r2
2191         uhsub8 r4, r8, r2
2192         uhsub8gt r4, r8, r2
2193
2194 @ CHECK: uhsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2195 @ CHECK: uhsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2196 @ CHECK: uhsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2197 @ CHECK: uhsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2198
2199
2200 @------------------------------------------------------------------------------
2201 @ UMAAL
2202 @------------------------------------------------------------------------------
2203         umaal r3, r4, r5, r6
2204         umaallt r3, r4, r5, r6
2205
2206 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2207 @ CHECK: umaallt        r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xb0]
2208
2209
2210 @------------------------------------------------------------------------------
2211 @ UMLAL
2212 @------------------------------------------------------------------------------
2213         umlal r2, r4, r6, r8
2214         umlalgt r6, r1, r2, r6
2215         umlals r2, r9, r2, r3
2216         umlalseq r3, r5, r1, r2
2217
2218 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2219 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2220 @ CHECK: umlals r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2221 @ CHECK: umlalseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2222
2223
2224 @------------------------------------------------------------------------------
2225 @ UMULL
2226 @------------------------------------------------------------------------------
2227         umull r2, r4, r6, r8
2228         umullgt r6, r1, r2, r6
2229         umulls r2, r9, r2, r3
2230         umullseq r3, r5, r1, r2
2231
2232 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2233 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2234 @ CHECK: umulls r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2235 @ CHECK: umullseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2236
2237
2238 @------------------------------------------------------------------------------
2239 @ UQADD16/UQADD8
2240 @------------------------------------------------------------------------------
2241         uqadd16 r1, r2, r3
2242         uqadd16gt r4, r7, r9
2243         uqadd8 r3, r4, r8
2244         uqadd8le r8, r1, r2
2245
2246
2247 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2248 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2249 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2250 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2251
2252
2253 @------------------------------------------------------------------------------
2254 @ UQASX
2255 @------------------------------------------------------------------------------
2256         uqasx r2, r4, r1
2257         uqasxhi r5, r2, r9
2258
2259 @ CHECK: uqasx  r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2260 @ CHECK: uqasxhi        r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2261
2262
2263 @------------------------------------------------------------------------------
2264 @ UQSAX
2265 @------------------------------------------------------------------------------
2266         uqsax r1, r3, r7
2267         uqsaxal r3, r6, r2
2268
2269 @ CHECK: uqsax  r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2270 @ CHECK: uqsax  r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2271
2272
2273 @------------------------------------------------------------------------------
2274 @ UQSUB16/UQSUB8
2275 @------------------------------------------------------------------------------
2276         uqsub16 r1, r5, r3
2277         uqsub16gt r3, r2, r5
2278         uqsub8 r2, r1, r4
2279         uqsub8le r4, r6, r9
2280
2281 @ CHECK: uqsub16        r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2282 @ CHECK: uqsub16gt      r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2283 @ CHECK: uqsub8 r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2284 @ CHECK: uqsub8le       r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2285
2286
2287 @------------------------------------------------------------------------------
2288 @ USADA8/USAD8
2289 @------------------------------------------------------------------------------
2290         usad8 r2, r1, r4
2291         usad8le r4, r6, r9
2292         usada8 r1, r5, r3, r7
2293         usada8gt r3, r2, r5, r1
2294
2295 @ CHECK: usad8  r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2296 @ CHECK: usad8le        r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2297 @ CHECK: usada8 r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2298 @ CHECK: usada8gt       r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2299
2300
2301 @------------------------------------------------------------------------------
2302 @ USAT
2303 @------------------------------------------------------------------------------
2304
2305         usat    r8, #1, r10
2306         usat    r8, #4, r10, lsl #0
2307         usat    r8, #5, r10, lsl #31
2308         usat    r8, #31, r10, asr #32
2309         usat    r8, #16, r10, asr #1
2310
2311 @ CHECK: usat   r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
2312 @ CHECK: usat   r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
2313 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
2314 @ CHECK: usat   r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
2315 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
2316
2317 @------------------------------------------------------------------------------
2318 @ USAT16
2319 @------------------------------------------------------------------------------
2320         usat16  r2, #2, r7
2321         usat16  r3, #15, r5
2322
2323 @ CHECK: usat16 r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2324 @ CHECK: usat16 r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2325
2326
2327 @------------------------------------------------------------------------------
2328 @ USAX
2329 @------------------------------------------------------------------------------
2330         usax r2, r3, r4
2331         usaxne r2, r3, r4
2332
2333 @ CHECK: usax   r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2334 @ CHECK: usaxne r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2335
2336 @------------------------------------------------------------------------------
2337 @ USUB16/USUB8
2338 @------------------------------------------------------------------------------
2339         usub16 r4, r2, r7
2340         usub16hi r1, r1, r3
2341         usub8 r1, r8, r5
2342         usub8le r9, r2, r3
2343
2344 @ CHECK: usub16 r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2345 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2346 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2347 @ CHECK: usub8le        r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2348
2349
2350 @------------------------------------------------------------------------------
2351 @ UXTAB
2352 @------------------------------------------------------------------------------
2353         uxtab r2, r3, r4
2354         uxtab r4, r5, r6, ror #0
2355         uxtablt r6, r2, r9, ror #8
2356         uxtab r5, r1, r4, ror #16
2357         uxtab r7, r8, r3, ror #24
2358
2359 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2360 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2361 @ CHECK: uxtablt        r6, r2, r9, ror #8
2362                                         @ encoding: [0x79,0x64,0xe2,0xb6]
2363 @ CHECK: uxtab  r5, r1, r4, ror #16
2364                                         @ encoding: [0x74,0x58,0xe1,0xe6]
2365 @ CHECK: uxtab  r7, r8, r3, ror #24
2366                                         @ encoding: [0x73,0x7c,0xe8,0xe6]
2367
2368
2369 @------------------------------------------------------------------------------
2370 @ UXTAB16
2371 @------------------------------------------------------------------------------
2372         uxtab16ge r0, r1, r4
2373         uxtab16 r6, r2, r7, ror #0
2374         uxtab16 r3, r5, r8, ror #8
2375         uxtab16 r3, r2, r1, ror #16
2376         uxtab16eq r1, r2, r3, ror #24
2377
2378 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2379 @ CHECK: uxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2380 @ CHECK: uxtab16        r3, r5, r8, ror #8
2381                                         @ encoding: [0x78,0x34,0xc5,0xe6]
2382 @ CHECK: uxtab16        r3, r2, r1, ror #16
2383                                         @ encoding: [0x71,0x38,0xc2,0xe6]
2384 @ CHECK: uxtab16eq      r1, r2, r3, ror #24
2385                                         @ encoding: [0x73,0x1c,0xc2,0x06]
2386
2387 @------------------------------------------------------------------------------
2388 @ UXTAH
2389 @------------------------------------------------------------------------------
2390         uxtah r1, r3, r9
2391         uxtahhi r6, r1, r6, ror #0
2392         uxtah r3, r8, r3, ror #8
2393         uxtahlo r2, r2, r4, ror #16
2394         uxtah r9, r3, r3, ror #24
2395
2396 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2397 @ CHECK: uxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2398 @ CHECK: uxtah  r3, r8, r3, ror #8
2399                                         @ encoding: [0x73,0x34,0xf8,0xe6]
2400 @ CHECK: uxtahlo        r2, r2, r4, ror #16
2401                                         @ encoding: [0x74,0x28,0xf2,0x36]
2402 @ CHECK: uxtah  r9, r3, r3, ror #24
2403                                         @ encoding: [0x73,0x9c,0xf3,0xe6]
2404
2405 @------------------------------------------------------------------------------
2406 @ UXTB
2407 @------------------------------------------------------------------------------
2408         uxtbge r2, r4
2409         uxtb r5, r6, ror #0
2410         uxtb r6, r9, ror #8
2411         uxtbcc r5, r1, ror #16
2412         uxtb r8, r3, ror #24
2413
2414 @ CHECK: uxtbge r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2415 @ CHECK: uxtb   r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2416 @ CHECK: uxtb   r6, r9, ror #8
2417                                         @ encoding: [0x79,0x64,0xef,0xe6]
2418 @ CHECK: uxtblo r5, r1, ror #16
2419                                         @ encoding: [0x71,0x58,0xef,0x36]
2420 @ CHECK: uxtb   r8, r3, ror #24
2421                                         @ encoding: [0x73,0x8c,0xef,0xe6]
2422
2423
2424 @------------------------------------------------------------------------------
2425 @ UXTB16
2426 @------------------------------------------------------------------------------
2427         uxtb16 r1, r4
2428         uxtb16 r6, r7, ror #0
2429         uxtb16cs r3, r5, ror #8
2430         uxtb16 r3, r1, ror #16
2431         uxtb16ge r2, r3, ror #24
2432
2433 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2434 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2435 @ CHECK: uxtb16hs       r3, r5, ror #8
2436                                         @ encoding: [0x75,0x34,0xcf,0x26]
2437 @ CHECK: uxtb16 r3, r1, ror #16
2438                                         @ encoding: [0x71,0x38,0xcf,0xe6]
2439 @ CHECK: uxtb16ge       r2, r3, ror #24
2440                                         @ encoding: [0x73,0x2c,0xcf,0xa6]
2441
2442
2443 @------------------------------------------------------------------------------
2444 @ UXTH
2445 @------------------------------------------------------------------------------
2446         uxthne r3, r9
2447         uxth r1, r6, ror #0
2448         uxth r3, r8, ror #8
2449         uxthle r2, r2, ror #16
2450         uxth r9, r3, ror #24
2451
2452 @ CHECK: uxthne r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2453 @ CHECK: uxth   r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2454 @ CHECK: uxth   r3, r8, ror #8
2455                                         @ encoding: [0x78,0x34,0xff,0xe6]
2456 @ CHECK: uxthle r2, r2, ror #16
2457                                         @ encoding: [0x72,0x28,0xff,0xd6]
2458 @ CHECK: uxth   r9, r3, ror #24
2459                                         @ encoding: [0x73,0x9c,0xff,0xe6]
2460
2461 @------------------------------------------------------------------------------
2462 @ WFE/WFI/YIELD
2463 @------------------------------------------------------------------------------
2464         wfe
2465         wfehi
2466         wfi
2467         wfilt
2468         yield
2469         yieldne
2470
2471 @ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
2472 @ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83]
2473 @ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
2474 @ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
2475 @ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
2476 @ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]