1 # RUN: llvm-mc -triple=thumbv6-apple-darwin -disassemble -show-encoding < %s | FileCheck %s 2 3 #------------------------------------------------------------------------------ 4 # ADC (register) 5 #------------------------------------------------------------------------------ 6 # CHECK: adcs r4, r6 7 8 0x74 0x41 9 10 11 #------------------------------------------------------------------------------ 12 # ADD (immediate) 13 #------------------------------------------------------------------------------ 14 # CHECK: adds r1, r2, #3 15 # CHECK: adds r2, r2, #3 16 # CHECK: adds r2, #8 17 18 0xd1 0x1c 19 0xd2 0x1c 20 0x08 0x32 21 22 #------------------------------------------------------------------------------ 23 # ADD (register) 24 #------------------------------------------------------------------------------ 25 # CHECK: adds r1, r2, r3 26 # CHECK: add r2, r8 27 28 0xd1 0x18 29 0x42 0x44 30 31 #------------------------------------------------------------------------------ 32 # ADD (SP plus immediate) 33 #------------------------------------------------------------------------------ 34 # CHECK: add sp, #508 35 # CHECK: add sp, #4 36 # CHECK: add r2, sp, #8 37 # CHECK: add r2, sp, #1020 38 39 0x7f 0xb0 40 0x01 0xb0 41 0x02 0xaa 42 0xff 0xaa 43 44 45 #------------------------------------------------------------------------------ 46 # ADD (SP plus register) 47 #------------------------------------------------------------------------------ 48 # CHECK: add sp, r3 49 # CHECK: add r2, sp, r2 50 51 0x9d 0x44 52 0x6a 0x44 53 54 #------------------------------------------------------------------------------ 55 # ADR 56 #------------------------------------------------------------------------------ 57 # CHECK: adr r2, #3 58 0x03 0xa2 59 60 #------------------------------------------------------------------------------ 61 # ASR (immediate) 62 #------------------------------------------------------------------------------ 63 # CHECK: asrs r2, r3, #32 64 # CHECK: asrs r2, r3, #5 65 # CHECK: asrs r2, r3, #1 66 67 0x1a 0x10 68 0x5a 0x11 69 0x5a 0x10 70 71 #------------------------------------------------------------------------------ 72 # ASR (register) 73 #------------------------------------------------------------------------------ 74 # CHECK: asrs r5, r2 75 76 0x15 0x41 77 78 #------------------------------------------------------------------------------ 79 # BICS 80 #------------------------------------------------------------------------------ 81 # CHECK: bics r1, r6 82 83 0xb1 0x43 84 85 #------------------------------------------------------------------------------ 86 # B 87 #------------------------------------------------------------------------------ 88 # CHECK: bls #128 @ encoding: [0x40,0xd9] 89 # CHECK: beq #-256 @ encoding: [0x80,0xd0] 90 91 0x40 0xd9 92 0x80 0xd0 93 94 #------------------------------------------------------------------------------ 95 # BKPT 96 #------------------------------------------------------------------------------ 97 # CHECK: bkpt #0 98 # CHECK: bkpt #255 99 100 0x00 0xbe 101 0xff 0xbe 102 103 #------------------------------------------------------------------------------ 104 # BLX (register) 105 #------------------------------------------------------------------------------ 106 # CHECK: blx r4 107 108 0xa0 0x47 109 110 #------------------------------------------------------------------------------ 111 # BX 112 #------------------------------------------------------------------------------ 113 # CHECK: bx r2 114 115 0x10 0x47 116 117 #------------------------------------------------------------------------------ 118 # CMN 119 #------------------------------------------------------------------------------ 120 # CHECK: cmn r5, r1 121 122 0xcd 0x42 123 124 #------------------------------------------------------------------------------ 125 # CMP 126 #------------------------------------------------------------------------------ 127 # CHECK: cmp r6, #32 128 # CHECK: cmp r3, r4 129 # CHECK: cmp r8, r1 130 131 0x20 0x2e 132 0xa3 0x42 133 0x88 0x45 134 135 #------------------------------------------------------------------------------ 136 # EOR 137 #------------------------------------------------------------------------------ 138 # CHECK: eors r4, r5 139 140 0x6c 0x40 141 142 #------------------------------------------------------------------------------ 143 # LDM 144 #------------------------------------------------------------------------------ 145 # CHECK: ldm r3, {r0, r1, r2, r3, r4, r5, r6, r7} 146 # CHECK: ldm r2!, {r1, r3, r4, r5, r7} 147 # CHECK: ldm r1, {r1} 148 149 0xff 0xcb 150 0xba 0xca 151 0x02 0xc9 152 153 154 #------------------------------------------------------------------------------ 155 # LDR (immediate) 156 #------------------------------------------------------------------------------ 157 # CHECK: ldr r1, [r5] 158 # CHECK: ldr r2, [r6, #32] 159 # CHECK: ldr r3, [r7, #124] 160 # CHECK: ldr r1, [sp] 161 # CHECK: ldr r2, [sp, #24] 162 # CHECK: ldr r3, [sp, #1020] 163 164 165 0x29 0x68 166 0x32 0x6a 167 0xfb 0x6f 168 0x00 0x99 169 0x06 0x9a 170 0xff 0x9b 171 172 #------------------------------------------------------------------------------ 173 # LDR (register) 174 #------------------------------------------------------------------------------ 175 # CHECK: ldr r1, [r2, r3] 176 177 0xd1 0x58 178 179 180 #------------------------------------------------------------------------------ 181 # LDRB (immediate) 182 #------------------------------------------------------------------------------ 183 # CHECK: ldrb r4, [r3] 184 # CHECK: ldrb r5, [r6] 185 # CHECK: ldrb r6, [r7, #31] 186 187 0x1c 0x78 188 0x35 0x78 189 0xfe 0x7f 190 191 192 #------------------------------------------------------------------------------ 193 # LDRB (register) 194 #------------------------------------------------------------------------------ 195 # CHECK: ldrb r6, [r4, r5] 196 197 0x66 0x5d 198 199 200 #------------------------------------------------------------------------------ 201 # LDRH (immediate) 202 #------------------------------------------------------------------------------ 203 # CHECK: ldrh r3, [r3] 204 # CHECK: ldrh r4, [r6, #2] 205 # CHECK: ldrh r5, [r7, #62] 206 207 0x1b 0x88 208 0x74 0x88 209 0xfd 0x8f 210 211 #------------------------------------------------------------------------------ 212 # LDRH (register) 213 #------------------------------------------------------------------------------ 214 # CHECK: ldrh r6, [r2, r6] 215 216 0x96 0x5b 217 218 219 #------------------------------------------------------------------------------ 220 # LDRSB/LDRSH 221 #------------------------------------------------------------------------------ 222 # CHECK: ldrsb r6, [r2, r6] 223 # CHECK: ldrsh r3, [r7, r1] 224 225 0x96 0x57 226 0x7b 0x5e 227 228 #------------------------------------------------------------------------------ 229 # LSL (immediate) 230 #------------------------------------------------------------------------------ 231 # CHECK: movs r4, r5 232 # CHECK: lsls r4, r5, #4 233 234 0x2c 0x00 235 0x2c 0x01 236 237 238 #------------------------------------------------------------------------------ 239 # LSL (register) 240 #------------------------------------------------------------------------------ 241 # CHECK: lsls r2, r6 242 243 0xb2 0x40 244 245 246 #------------------------------------------------------------------------------ 247 # LSR (immediate) 248 #------------------------------------------------------------------------------ 249 # CHECK: lsrs r1, r3, #1 250 # CHECK: lsrs r1, r3, #32 251 252 0x59 0x08 253 0x19 0x08 254 255 256 #------------------------------------------------------------------------------ 257 # LSR (register) 258 #------------------------------------------------------------------------------ 259 # CHECK: lsrs r2, r6 260 261 0xf2 0x40 262 263 #------------------------------------------------------------------------------ 264 # MOV (immediate) 265 #------------------------------------------------------------------------------ 266 # CHECK: movs r2, #0 267 # CHECK: movs r2, #255 268 # CHECK: movs r2, #23 269 270 0x00 0x22 271 0xff 0x22 272 0x17 0x22 273 274 275 #------------------------------------------------------------------------------ 276 # MOV (register) 277 #------------------------------------------------------------------------------ 278 # CHECK: mov r3, r4 279 # CHECK: movs r1, r3 280 281 0x23 0x46 282 0x19 0x00 283 284 285 #------------------------------------------------------------------------------ 286 # MUL 287 #------------------------------------------------------------------------------ 288 # CHECK: muls r1, r2, r1 289 # CHECK: muls r3, r4 290 291 0x51 0x43 292 0x63 0x43 293 294 295 #------------------------------------------------------------------------------ 296 # MVN 297 #------------------------------------------------------------------------------ 298 # CHECK: mvns r6, r3 299 300 0xde 0x43 301 302 #------------------------------------------------------------------------------ 303 # NEG 304 #------------------------------------------------------------------------------ 305 # CHECK: rsbs r3, r4, #0 306 307 0x63 0x42 308 309 310 #------------------------------------------------------------------------------ 311 # NOP 312 #------------------------------------------------------------------------------ 313 # CHECK: nop 314 315 0xc0 0x46 316 317 318 #------------------------------------------------------------------------------ 319 # ORR 320 #------------------------------------------------------------------------------ 321 # CHECK: orrs r3, r4 322 323 0x23 0x43 324 325 #------------------------------------------------------------------------------ 326 # POP 327 #------------------------------------------------------------------------------ 328 # CHECK: pop {r2, r3, r6} 329 330 0x4c 0xbc 331 332 333 #------------------------------------------------------------------------------ 334 # PUSH 335 #------------------------------------------------------------------------------ 336 # CHECK: push {r1, r2, r7} 337 338 0x86 0xb4 339 340 341 #------------------------------------------------------------------------------ 342 # REV/REV16/REVSH 343 #------------------------------------------------------------------------------ 344 # CHECK: rev r6, r3 345 # CHECK: rev16 r7, r2 346 # CHECK: revsh r5, r1 347 348 0x1e 0xba 349 0x57 0xba 350 0xcd 0xba 351 352 353 #------------------------------------------------------------------------------ 354 # ROR 355 #------------------------------------------------------------------------------ 356 # CHECK: rors r2, r7 357 358 0xfa 0x41 359 360 #------------------------------------------------------------------------------ 361 # RSB 362 #------------------------------------------------------------------------------ 363 # CHECK: rsbs r1, r3, #0 364 365 0x59 0x42 366 367 368 #------------------------------------------------------------------------------ 369 # SBC 370 #------------------------------------------------------------------------------ 371 # CHECK: sbcs r4, r3 372 373 0x9c 0x41 374 375 376 #------------------------------------------------------------------------------ 377 # SETEND 378 #------------------------------------------------------------------------------ 379 # CHECK: setend be 380 # CHECK: setend le 381 382 0x58 0xb6 383 0x50 0xb6 384 385 #------------------------------------------------------------------------------ 386 # STM 387 #------------------------------------------------------------------------------ 388 # CHECK: stm r1!, {r2, r6} 389 # CHECK: stm r1!, {r1, r2, r3, r7} 390 391 0x44 0xc1 392 0x8e 0xc1 393 394 395 #------------------------------------------------------------------------------ 396 # STR (immediate) 397 #------------------------------------------------------------------------------ 398 # CHECK: str r2, [r7] 399 # CHECK: str r2, [r7] 400 # CHECK: str r5, [r1, #4] 401 # CHECK: str r3, [r7, #124] 402 # CHECK: str r2, [sp] 403 # CHECK: str r3, [sp] 404 # CHECK: str r4, [sp, #20] 405 # CHECK: str r5, [sp, #1020] 406 407 0x3a 0x60 408 0x3a 0x60 409 0x4d 0x60 410 0xfb 0x67 411 0x00 0x92 412 0x00 0x93 413 0x05 0x94 414 0xff 0x95 415 416 417 #------------------------------------------------------------------------------ 418 # STR (register) 419 #------------------------------------------------------------------------------ 420 # CHECK: str r2, [r7, r3] 421 422 0xfa 0x50 423 424 425 #------------------------------------------------------------------------------ 426 # STRB (immediate) 427 #------------------------------------------------------------------------------ 428 # CHECK: strb r4, [r3] 429 # CHECK: strb r5, [r6] 430 # CHECK: strb r6, [r7, #31] 431 432 0x1c 0x70 433 0x35 0x70 434 0xfe 0x77 435 436 437 #------------------------------------------------------------------------------ 438 # STRB (register) 439 #------------------------------------------------------------------------------ 440 # CHECK: strb r6, [r4, r5] 441 442 0x66 0x55 443 444 445 #------------------------------------------------------------------------------ 446 # STRH (immediate) 447 #------------------------------------------------------------------------------ 448 # CHECK: strh r3, [r3] 449 # CHECK: strh r4, [r6, #2] 450 # CHECK: strh r5, [r7, #62] 451 452 0x1b 0x80 453 0x74 0x80 454 0xfd 0x87 455 456 457 #------------------------------------------------------------------------------ 458 # STRH (register) 459 #------------------------------------------------------------------------------ 460 # CHECK: strh r6, [r2, r6] 461 462 0x96 0x53 463 464 465 #------------------------------------------------------------------------------ 466 # SUB (immediate) 467 #------------------------------------------------------------------------------ 468 # CHECK: subs r1, r2, #3 469 # CHECK: subs r2, #3 470 # CHECK: subs r2, #8 471 472 0xd1 0x1e 473 0x03 0x3a 474 0x08 0x3a 475 476 #------------------------------------------------------------------------------ 477 # SUB (register) 478 #------------------------------------------------------------------------------ 479 # CHECK: subs r1, r2, r3 480 481 0xd1 0x1a 482 483 #------------------------------------------------------------------------------ 484 # SUB (SP minus immediate) 485 #------------------------------------------------------------------------------ 486 # CHECK: sub sp, #12 487 # CHECK: sub sp, #508 488 489 0x83 0xb0 490 0xff 0xb0 491 492 #------------------------------------------------------------------------------ 493 # SVC 494 #------------------------------------------------------------------------------ 495 # CHECK: svc #0 496 # CHECK: svc #255 497 498 0x00 0xdf 499 0xff 0xdf 500 501 502 #------------------------------------------------------------------------------ 503 # SXTB/SXTH 504 #------------------------------------------------------------------------------ 505 # CHECK: sxtb r3, r5 506 # CHECK: sxth r3, r5 507 508 0x6b 0xb2 509 0x2b 0xb2 510 511 512 #------------------------------------------------------------------------------ 513 # TST 514 #------------------------------------------------------------------------------ 515 # CHECK: tst r6, r1 516 517 0x0e 0x42 518 519 520 #------------------------------------------------------------------------------ 521 # UXTB/UXTH 522 #------------------------------------------------------------------------------ 523 # CHECK: uxtb r7, r2 524 # CHECK: uxth r1, r4 525 526 0xd7 0xb2 527 0xa1 0xb2 528