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