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