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 80x74 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 180xd1 0x1c 190xd2 0x1c 200x08 0x32 21 22#------------------------------------------------------------------------------ 23# ADD (register) 24#------------------------------------------------------------------------------ 25# CHECK: adds r1, r2, r3 26# CHECK: add r2, r8 27 280xd1 0x18 290x42 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 390x7f 0xb0 400x01 0xb0 410x02 0xaa 420xff 0xaa 43 44 45#------------------------------------------------------------------------------ 46# ADD (SP plus register) 47#------------------------------------------------------------------------------ 48# CHECK: add sp, r3 49# CHECK: add r2, sp, r2 50 510x9d 0x44 520x6a 0x44 53 54#------------------------------------------------------------------------------ 55# ADR 56#------------------------------------------------------------------------------ 57# CHECK: adr r2, #3 580x03 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 670x1a 0x10 680x5a 0x11 690x5a 0x10 70 71#------------------------------------------------------------------------------ 72# ASR (register) 73#------------------------------------------------------------------------------ 74# CHECK: asrs r5, r2 75 760x15 0x41 77 78#------------------------------------------------------------------------------ 79# BICS 80#------------------------------------------------------------------------------ 81# CHECK: bics r1, r6 82 830xb1 0x43 84 85#------------------------------------------------------------------------------ 86# B 87#------------------------------------------------------------------------------ 88# CHECK: bls #128 @ encoding: [0x40,0xd9] 89# CHECK: beq #-256 @ encoding: [0x80,0xd0] 90 910x40 0xd9 920x80 0xd0 93 94#------------------------------------------------------------------------------ 95# BKPT 96#------------------------------------------------------------------------------ 97# CHECK: bkpt #0 98# CHECK: bkpt #255 99 1000x00 0xbe 1010xff 0xbe 102 103#------------------------------------------------------------------------------ 104# BLX (register) 105#------------------------------------------------------------------------------ 106# CHECK: blx r4 107 1080xa0 0x47 109 110#------------------------------------------------------------------------------ 111# BX 112#------------------------------------------------------------------------------ 113# CHECK: bx r2 114 1150x10 0x47 116 117#------------------------------------------------------------------------------ 118# CMN 119#------------------------------------------------------------------------------ 120# CHECK: cmn r5, r1 121 1220xcd 0x42 123 124#------------------------------------------------------------------------------ 125# CMP 126#------------------------------------------------------------------------------ 127# CHECK: cmp r6, #32 128# CHECK: cmp r3, r4 129# CHECK: cmp r8, r1 130 1310x20 0x2e 1320xa3 0x42 1330x88 0x45 134 135#------------------------------------------------------------------------------ 136# EOR 137#------------------------------------------------------------------------------ 138# CHECK: eors r4, r5 139 1400x6c 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 1490xff 0xcb 1500xba 0xca 1510x02 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# CHECK: ldr r1, [pc, #12] 164 165 1660x29 0x68 1670x32 0x6a 1680xfb 0x6f 1690x00 0x99 1700x06 0x9a 1710xff 0x9b 1720x03 0x49 173 174#------------------------------------------------------------------------------ 175# LDR (register) 176#------------------------------------------------------------------------------ 177# CHECK: ldr r1, [r2, r3] 178 1790xd1 0x58 180 181 182#------------------------------------------------------------------------------ 183# LDRB (immediate) 184#------------------------------------------------------------------------------ 185# CHECK: ldrb r4, [r3] 186# CHECK: ldrb r5, [r6] 187# CHECK: ldrb r6, [r7, #31] 188 1890x1c 0x78 1900x35 0x78 1910xfe 0x7f 192 193 194#------------------------------------------------------------------------------ 195# LDRB (register) 196#------------------------------------------------------------------------------ 197# CHECK: ldrb r6, [r4, r5] 198 1990x66 0x5d 200 201 202#------------------------------------------------------------------------------ 203# LDRH (immediate) 204#------------------------------------------------------------------------------ 205# CHECK: ldrh r3, [r3] 206# CHECK: ldrh r4, [r6, #2] 207# CHECK: ldrh r5, [r7, #62] 208 2090x1b 0x88 2100x74 0x88 2110xfd 0x8f 212 213#------------------------------------------------------------------------------ 214# LDRH (register) 215#------------------------------------------------------------------------------ 216# CHECK: ldrh r6, [r2, r6] 217 2180x96 0x5b 219 220 221#------------------------------------------------------------------------------ 222# LDRSB/LDRSH 223#------------------------------------------------------------------------------ 224# CHECK: ldrsb r6, [r2, r6] 225# CHECK: ldrsh r3, [r7, r1] 226 2270x96 0x57 2280x7b 0x5e 229 230#------------------------------------------------------------------------------ 231# LSL (immediate) 232#------------------------------------------------------------------------------ 233# CHECK: movs r4, r5 234# CHECK: lsls r4, r5, #4 235 2360x2c 0x00 2370x2c 0x01 238 239 240#------------------------------------------------------------------------------ 241# LSL (register) 242#------------------------------------------------------------------------------ 243# CHECK: lsls r2, r6 244 2450xb2 0x40 246 247 248#------------------------------------------------------------------------------ 249# LSR (immediate) 250#------------------------------------------------------------------------------ 251# CHECK: lsrs r1, r3, #1 252# CHECK: lsrs r1, r3, #32 253 2540x59 0x08 2550x19 0x08 256 257 258#------------------------------------------------------------------------------ 259# LSR (register) 260#------------------------------------------------------------------------------ 261# CHECK: lsrs r2, r6 262 2630xf2 0x40 264 265#------------------------------------------------------------------------------ 266# MOV (immediate) 267#------------------------------------------------------------------------------ 268# CHECK: movs r2, #0 269# CHECK: movs r2, #255 270# CHECK: movs r2, #23 271 2720x00 0x22 2730xff 0x22 2740x17 0x22 275 276 277#------------------------------------------------------------------------------ 278# MOV (register) 279#------------------------------------------------------------------------------ 280# CHECK: mov r3, r4 281# CHECK: movs r1, r3 282 2830x23 0x46 2840x19 0x00 285 286 287#------------------------------------------------------------------------------ 288# MUL 289#------------------------------------------------------------------------------ 290# CHECK: muls r1, r2, r1 291# CHECK: muls r3, r4 292 2930x51 0x43 2940x63 0x43 295 296 297#------------------------------------------------------------------------------ 298# MVN 299#------------------------------------------------------------------------------ 300# CHECK: mvns r6, r3 301 3020xde 0x43 303 304#------------------------------------------------------------------------------ 305# NEG 306#------------------------------------------------------------------------------ 307# CHECK: rsbs r3, r4, #0 308 3090x63 0x42 310 311 312#------------------------------------------------------------------------------ 313# NOP 314#------------------------------------------------------------------------------ 315# CHECK: nop 316 3170xc0 0x46 318 319 320#------------------------------------------------------------------------------ 321# ORR 322#------------------------------------------------------------------------------ 323# CHECK: orrs r3, r4 324 3250x23 0x43 326 327#------------------------------------------------------------------------------ 328# POP 329#------------------------------------------------------------------------------ 330# CHECK: pop {r2, r3, r6} 331 3320x4c 0xbc 333 334 335#------------------------------------------------------------------------------ 336# PUSH 337#------------------------------------------------------------------------------ 338# CHECK: push {r1, r2, r7} 339 3400x86 0xb4 341 342 343#------------------------------------------------------------------------------ 344# REV/REV16/REVSH 345#------------------------------------------------------------------------------ 346# CHECK: rev r6, r3 347# CHECK: rev16 r7, r2 348# CHECK: revsh r5, r1 349 3500x1e 0xba 3510x57 0xba 3520xcd 0xba 353 354 355#------------------------------------------------------------------------------ 356# ROR 357#------------------------------------------------------------------------------ 358# CHECK: rors r2, r7 359 3600xfa 0x41 361 362#------------------------------------------------------------------------------ 363# RSB 364#------------------------------------------------------------------------------ 365# CHECK: rsbs r1, r3, #0 366 3670x59 0x42 368 369 370#------------------------------------------------------------------------------ 371# SBC 372#------------------------------------------------------------------------------ 373# CHECK: sbcs r4, r3 374 3750x9c 0x41 376 377 378#------------------------------------------------------------------------------ 379# SETEND 380#------------------------------------------------------------------------------ 381# CHECK: setend be 382# CHECK: setend le 383 3840x58 0xb6 3850x50 0xb6 386 387#------------------------------------------------------------------------------ 388# STM 389#------------------------------------------------------------------------------ 390# CHECK: stm r1!, {r2, r6} 391# CHECK: stm r1!, {r1, r2, r3, r7} 392 3930x44 0xc1 3940x8e 0xc1 395 396 397#------------------------------------------------------------------------------ 398# STR (immediate) 399#------------------------------------------------------------------------------ 400# CHECK: str r2, [r7] 401# CHECK: str r2, [r7] 402# CHECK: str r5, [r1, #4] 403# CHECK: str r3, [r7, #124] 404# CHECK: str r2, [sp] 405# CHECK: str r3, [sp] 406# CHECK: str r4, [sp, #20] 407# CHECK: str r5, [sp, #1020] 408 4090x3a 0x60 4100x3a 0x60 4110x4d 0x60 4120xfb 0x67 4130x00 0x92 4140x00 0x93 4150x05 0x94 4160xff 0x95 417 418 419#------------------------------------------------------------------------------ 420# STR (register) 421#------------------------------------------------------------------------------ 422# CHECK: str r2, [r7, r3] 423 4240xfa 0x50 425 426 427#------------------------------------------------------------------------------ 428# STRB (immediate) 429#------------------------------------------------------------------------------ 430# CHECK: strb r4, [r3] 431# CHECK: strb r5, [r6] 432# CHECK: strb r6, [r7, #31] 433 4340x1c 0x70 4350x35 0x70 4360xfe 0x77 437 438 439#------------------------------------------------------------------------------ 440# STRB (register) 441#------------------------------------------------------------------------------ 442# CHECK: strb r6, [r4, r5] 443 4440x66 0x55 445 446 447#------------------------------------------------------------------------------ 448# STRH (immediate) 449#------------------------------------------------------------------------------ 450# CHECK: strh r3, [r3] 451# CHECK: strh r4, [r6, #2] 452# CHECK: strh r5, [r7, #62] 453 4540x1b 0x80 4550x74 0x80 4560xfd 0x87 457 458 459#------------------------------------------------------------------------------ 460# STRH (register) 461#------------------------------------------------------------------------------ 462# CHECK: strh r6, [r2, r6] 463 4640x96 0x53 465 466 467#------------------------------------------------------------------------------ 468# SUB (immediate) 469#------------------------------------------------------------------------------ 470# CHECK: subs r1, r2, #3 471# CHECK: subs r2, #3 472# CHECK: subs r2, #8 473 4740xd1 0x1e 4750x03 0x3a 4760x08 0x3a 477 478#------------------------------------------------------------------------------ 479# SUB (register) 480#------------------------------------------------------------------------------ 481# CHECK: subs r1, r2, r3 482 4830xd1 0x1a 484 485#------------------------------------------------------------------------------ 486# SUB (SP minus immediate) 487#------------------------------------------------------------------------------ 488# CHECK: sub sp, #12 489# CHECK: sub sp, #508 490 4910x83 0xb0 4920xff 0xb0 493 494#------------------------------------------------------------------------------ 495# SVC 496#------------------------------------------------------------------------------ 497# CHECK: svc #0 498# CHECK: svc #255 499 5000x00 0xdf 5010xff 0xdf 502 503 504#------------------------------------------------------------------------------ 505# SXTB/SXTH 506#------------------------------------------------------------------------------ 507# CHECK: sxtb r3, r5 508# CHECK: sxth r3, r5 509 5100x6b 0xb2 5110x2b 0xb2 512 513 514#------------------------------------------------------------------------------ 515# TST 516#------------------------------------------------------------------------------ 517# CHECK: tst r6, r1 518 5190x0e 0x42 520 521 522#------------------------------------------------------------------------------ 523# UXTB/UXTH 524#------------------------------------------------------------------------------ 525# CHECK: uxtb r7, r2 526# CHECK: uxth r1, r4 527 5280xd7 0xb2 5290xa1 0xb2 530