llvm-6502/test/MC/Mips/micromips-control-instructions.s
Daniel Sanders 0e0f907356 [mips] Marked up instructions added in MIPS32r2 and tested that IAS for -mcpu=mips(2|32) does not accept them
Summary:
This required a new instruction group representing the 32-bit subset of
MIPS-3 that was available in MIPS32R2.

To limit the number of tests required, only one 32-bit and one 64-bit ISA
prior to MIPS32/MIPS64 are tested.

rdhwr has been deliberately left without an ISA annotation for now. This is
because the assembler and CodeGen disagree on when the instruction is
available. Strictly speaking, it is only available in MIPS32r2 and
MIPS64r2. However, it is emulated by a kernel trap on earlier ISA's and is
necessary for TLS so CodeGen should emit it on older ISA's too.

Depends on D3696

Reviewers: vmedic

Reviewed By: vmedic

Differential Revision: http://reviews.llvm.org/D3697

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208690 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-13 11:45:36 +00:00

61 lines
3.2 KiB
ArmAsm

# RUN: llvm-mc %s -triple=mipsel -show-encoding -mcpu=mips32r2 -mattr=micromips \
# RUN: | FileCheck -check-prefix=CHECK-EL %s
# RUN: llvm-mc %s -triple=mips -show-encoding -mcpu=mips32r2 -mattr=micromips \
# RUN: | FileCheck -check-prefix=CHECK-EB %s
# Check that the assembler can handle the documented syntax
# for control instructions.
#------------------------------------------------------------------------------
# microMIPS Control Instructions
#------------------------------------------------------------------------------
# Little endian
#------------------------------------------------------------------------------
# CHECK-EL: break # encoding: [0x00,0x00,0x07,0x00]
# CHECK-EL: break 7 # encoding: [0x07,0x00,0x07,0x00]
# CHECK-EL: break 7, 5 # encoding: [0x07,0x00,0x47,0x01]
# CHECK-EL: syscall # encoding: [0x00,0x00,0x7c,0x8b]
# CHECK-EL: syscall 396 # encoding: [0x8c,0x01,0x7c,0x8b]
# CHECK-EL: eret # encoding: [0x00,0x00,0x7c,0xf3]
# CHECK-EL: deret # encoding: [0x00,0x00,0x7c,0xe3]
# CHECK-EL: di # encoding: [0x00,0x00,0x7c,0x47]
# CHECK-EL: di # encoding: [0x00,0x00,0x7c,0x47]
# CHECK-EL: di $10 # encoding: [0x0a,0x00,0x7c,0x47]
# CHECK-EL: ei # encoding: [0x00,0x00,0x7c,0x57]
# CHECK-EL: ei # encoding: [0x00,0x00,0x7c,0x57]
# CHECK-EL: ei $10 # encoding: [0x0a,0x00,0x7c,0x57]
# CHECK-EL: wait # encoding: [0x00,0x00,0x7c,0x93]
# CHECK-EL: wait 17 # encoding: [0x11,0x00,0x7c,0x93]
#------------------------------------------------------------------------------
# Big endian
#------------------------------------------------------------------------------
# CHECK-EB: break # encoding: [0x00,0x00,0x00,0x07]
# CHECK-EB: break 7 # encoding: [0x00,0x07,0x00,0x07]
# CHECK-EB: break 7, 5 # encoding: [0x00,0x07,0x01,0x47]
# CHECK-EB: syscall # encoding: [0x00,0x00,0x8b,0x7c]
# CHECK-EB: syscall 396 # encoding: [0x01,0x8c,0x8b,0x7c]
# CHECK-EB: eret # encoding: [0x00,0x00,0xf3,0x7c]
# CHECK-EB: deret # encoding: [0x00,0x00,0xe3,0x7c]
# CHECK-EB: di # encoding: [0x00,0x00,0x47,0x7c]
# CHECK-EB: di # encoding: [0x00,0x00,0x47,0x7c]
# CHECK-EB: di $10 # encoding: [0x00,0x0a,0x47,0x7c]
# CHECK-EB: ei # encoding: [0x00,0x00,0x57,0x7c]
# CHECK-EB: ei # encoding: [0x00,0x00,0x57,0x7c]
# CHECK-EB: ei $10 # encoding: [0x00,0x0a,0x57,0x7c]
# CHECK-EB: wait # encoding: [0x00,0x00,0x93,0x7c]
# CHECK-EB: wait 17 # encoding: [0x00,0x11,0x93,0x7c]
break
break 7
break 7,5
syscall
syscall 0x18c
eret
deret
di
di $0
di $10
ei
ei $0
ei $10
wait
wait 17