| ; RUN: llvm-mc -triple msp430 -show-encoding %s \ |
| ; RUN: | FileCheck -check-prefixes=CHECK,CHECK-INST %s |
| |
| ; RUN: llvm-mc -triple msp430 -filetype=obj %s \ |
| ; RUN: | llvm-objdump -d - | FileCheck -check-prefix=CHECK-INST %s |
| |
| ;; IForm8 instructions |
| mov.b r7, r8 ; CHECK-INST: mov.b r7, r8 |
| ; CHECK: encoding: [0x48,0x47] |
| add.b r7, r8 ; CHECK-INST: add.b r7, r8 |
| ; CHECK: encoding: [0x48,0x57] |
| addc.b r7, r8 ; CHECK-INST: addc.b r7, r8 |
| ; CHECK: encoding: [0x48,0x67] |
| subc.b r7, r8 ; CHECK-INST: subc.b r7, r8 |
| ; CHECK: encoding: [0x48,0x77] |
| sub.b r7, r8 ; CHECK-INST: sub.b r7, r8 |
| ; CHECK: encoding: [0x48,0x87] |
| cmp.b r7, r8 ; CHECK-INST: cmp.b r7, r8 |
| ; CHECK: encoding: [0x48,0x97] |
| dadd.b r7, r8 ; CHECK-INST: dadd.b r7, r8 |
| ; CHECK: encoding: [0x48,0xa7] |
| bit.b r7, r8 ; CHECK-INST: bit.b r7, r8 |
| ; CHECK: encoding: [0x48,0xb7] |
| bic.b r7, r8 ; CHECK-INST: bic.b r7, r8 |
| ; CHECK: encoding: [0x48,0xc7] |
| bis.b r7, r8 ; CHECK-INST: bis.b r7, r8 |
| ; CHECK: encoding: [0x48,0xd7] |
| xor.b r7, r8 ; CHECK-INST: xor.b r7, r8 |
| ; CHECK: encoding: [0x48,0xe7] |
| and.b r7, r8 ; CHECK-INST: and.b r7, r8 |
| ; CHECK: encoding: [0x48,0xf7] |
| |
| ;; IForm16 instructions |
| mov r7, r8 ; CHECK-INST: mov r7, r8 |
| ; CHECK: encoding: [0x08,0x47] |
| add r7, r8 ; CHECK-INST: add r7, r8 |
| ; CHECK: encoding: [0x08,0x57] |
| addc r7, r8 ; CHECK-INST: addc r7, r8 |
| ; CHECK: encoding: [0x08,0x67] |
| subc r7, r8 ; CHECK-INST: subc r7, r8 |
| ; CHECK: encoding: [0x08,0x77] |
| sub r7, r8 ; CHECK-INST: sub r7, r8 |
| ; CHECK: encoding: [0x08,0x87] |
| cmp r7, r8 ; CHECK-INST: cmp r7, r8 |
| ; CHECK: encoding: [0x08,0x97] |
| dadd r7, r8 ; CHECK-INST: dadd r7, r8 |
| ; CHECK: encoding: [0x08,0xa7] |
| bit r7, r8 ; CHECK-INST: bit r7, r8 |
| ; CHECK: encoding: [0x08,0xb7] |
| bic r7, r8 ; CHECK-INST: bic r7, r8 |
| ; CHECK: encoding: [0x08,0xc7] |
| bis r7, r8 ; CHECK-INST: bis r7, r8 |
| ; CHECK: encoding: [0x08,0xd7] |
| xor r7, r8 ; CHECK-INST: xor r7, r8 |
| ; CHECK: encoding: [0x08,0xe7] |
| and r7, r8 ; CHECK-INST: and r7, r8 |
| ; CHECK: encoding: [0x08,0xf7] |
| |
| ;; IIForm8 instructions |
| rrc.b r7 ; CHECK-INST: rrc.b r7 |
| ; CHECK: encoding: [0x47,0x10] |
| rra.b r7 ; CHECK-INST: rra.b r7 |
| ; CHECK: encoding: [0x47,0x11] |
| push.b r7 ; CHECK-INST: push.b r7 |
| ; CHECK: encoding: [0x47,0x12] |
| |
| ;; IIForm16 instructions |
| rrc r7 ; CHECK-INST: rrc r7 |
| ; CHECK: encoding: [0x07,0x10] |
| swpb r7 ; CHECK-INST: swpb r7 |
| ; CHECK: encoding: [0x87,0x10] |
| rra r7 ; CHECK-INST: rra r7 |
| ; CHECK: encoding: [0x07,0x11] |
| sxt r7 ; CHECK-INST: sxt r7 |
| ; CHECK: encoding: [0x87,0x11] |
| push r7 ; CHECK-INST: push r7 |
| ; CHECK: encoding: [0x07,0x12] |
| call r7 ; CHECK-INST: call r7 |
| ; CHECK: encoding: [0x87,0x12] |
| reti ; CHECK-INST: reti |
| ; CHECK: encoding: [0x00,0x13] |
| |
| ;; CJForm instructions |
| jnz -2 ; CHECK-INST: jne $-2 |
| ; CHECK: encoding: [0xfe,0x23] |
| jne -2 ; CHECK-INST: jne $-2 |
| ; CHECK: encoding: [0xfe,0x23] |
| jeq -2 ; CHECK-INST: jeq $-2 |
| ; CHECK: encoding: [0xfe,0x27] |
| jz -2 ; CHECK-INST: jeq $-2 |
| ; CHECK: encoding: [0xfe,0x27] |
| jnc -2 ; CHECK-INST: jlo $-2 |
| ; CHECK: encoding: [0xfe,0x2b] |
| jlo -2 ; CHECK-INST: jlo $-2 |
| ; CHECK: encoding: [0xfe,0x2b] |
| jc -2 ; CHECK-INST: jhs $-2 |
| ; CHECK: encoding: [0xfe,0x2f] |
| jhs -2 ; CHECK-INST: jhs $-2 |
| ; CHECK: encoding: [0xfe,0x2f] |
| jn -2 ; CHECK-INST: jn $-2 |
| ; CHECK: encoding: [0xfe,0x33] |
| jge -2 ; CHECK-INST: jge $-2 |
| ; CHECK: encoding: [0xfe,0x37] |
| jl -2 ; CHECK-INST: jl $-2 |
| ; CHECK: encoding: [0xfe,0x3b] |
| jmp $-2 ; CHECK-INST: jmp $-2 |
| ; CHECK: encoding: [0xfe,0x3f] |
| |
| ;; Emulated arithmetic instructions |
| adc r7 ; CHECK-INST: adc r7 |
| ; CHECK: encoding: [0x07,0x63] |
| dadc r7 ; CHECK-INST: dadc r7 |
| ; CHECK: encoding: [0x07,0xa3] |
| dec r7 ; CHECK-INST: dec r7 |
| ; CHECK: encoding: [0x17,0x83] |
| decd r7 ; CHECK-INST: decd r7 |
| ; CHECK: encoding: [0x27,0x83] |
| inc r7 ; CHECK-INST: inc r7 |
| ; CHECK: encoding: [0x17,0x53] |
| incd r7 ; CHECK-INST: incd r7 |
| ; CHECK: encoding: [0x27,0x53] |
| sbc r7 ; CHECK-INST: sbc r7 |
| ; CHECK: encoding: [0x07,0x73] |
| |
| ;; Emulated logical instructions |
| inv r7 ; CHECK-INST: inv r7 |
| ; CHECK: encoding: [0x37,0xe3] |
| rla r7 ; CHECK-INST: add r7, r7 |
| ; CHECK: encoding: [0x07,0x57] |
| rlc r7 ; CHECK-INST: addc r7, r7 |
| ; CHECK: encoding: [0x07,0x67] |
| |
| ;; Emulated program flow control instructions |
| br r7 ; CHECK-INST: br r7 |
| ; CHECK: encoding: [0x00,0x47] |
| dint ; CHECK-INST: dint |
| ; CHECK: encoding: [0x32,0xc2] |
| eint ; CHECK-INST: eint |
| ; CHECK: encoding: [0x32,0xd2] |
| nop ; CHECK-INST: nop |
| ; CHECK: encoding: [0x03,0x43] |
| ret ; CHECK-INST: ret |
| ; CHECK: encoding: [0x30,0x41] |
| |
| ;; Emulated data instruction |
| clr r7 ; CHECK-INST: clr r7 |
| ; CHECK: encoding: [0x07,0x43] |
| clrc ; CHECK-INST: clrc |
| ; CHECK: encoding: [0x12,0xc3] |
| clrn ; CHECK-INST: clrn |
| ; CHECK: encoding: [0x22,0xc2] |
| clrz ; CHECK-INST: clrz |
| ; CHECK: encoding: [0x22,0xc3] |
| pop r7 ; CHECK-INST: pop r7 |
| ; CHECK: encoding: [0x37,0x41] |
| setc ; CHECK-INST: setc |
| ; CHECK: encoding: [0x12,0xd3] |
| setn ; CHECK-INST: setn |
| ; CHECK: encoding: [0x22,0xd2] |
| setz ; CHECK-INST: setz |
| ; CHECK: encoding: [0x22,0xd3] |
| tst r7 ; CHECK-INST: tst r7 |
| ; CHECK: encoding: [0x07,0x93] |