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