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