Home | History | Annotate | Download | only in ARM
      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