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