1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00
llvm-mirror/test/MC/Mips/micromips-control-instructions.s
Simon Dardis 36cd99ffe9 [mips] Correct the definitions of some control instructions
Correct the definitions of ei, di, eret, deret, wait, syscall and break.
Also provide microMIPS specific aliases to match the MIPS aliases.

Additionally correct the definition of the wait instruction so that
it is present in the instruction mapping tables.

Reviewers: smaksimovic, abeserminji, atanasyan

Differential Revision: https://reviews.llvm.org/D45939

llvm-svn: 330952
2018-04-26 16:06:34 +00:00

118 lines
6.2 KiB
ArmAsm

# RUN: llvm-mc %s -triple=mipsel -show-encoding -mcpu=mips32r2 -mattr=micromips -show-inst \
# RUN: | FileCheck -check-prefix=CHECK-EL %s
# RUN: llvm-mc %s -triple=mips -show-encoding -mcpu=mips32r2 -mattr=micromips -show-inst \
# 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: sdbbp # encoding: [0x00,0x00,0x7c,0xdb]
# CHECK-EL: sdbbp 34 # encoding: [0x22,0x00,0x7c,0xdb]
# CHECK-EL-NOT: .set push
# CHECK-EL-NOT: .set mips32r2
# CHECK-EL: rdhwr $5, $29 # encoding: [0xbd,0x00,0x3c,0x6b]
# CHECK-EL-NOT: .set pop
# CHECK-EL: cache 1, 8($5) # encoding: [0x25,0x20,0x08,0x60]
# CHECK-EL: pref 1, 8($5) # encoding: [0x25,0x60,0x08,0x20]
# CHECK-EL: ssnop # encoding: [0x00,0x00,0x00,0x08]
# CHECK-EL: ehb # encoding: [0x00,0x00,0x00,0x18]
# CHECK-EL: pause # encoding: [0x00,0x00,0x00,0x28]
# CHECK-EL: break # encoding: [0x00,0x00,0x07,0x00]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} BREAK_MM
# CHECK-EL: break 7 # encoding: [0x07,0x00,0x07,0x00]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} BREAK_MM
# CHECK-EL: break 7, 5 # encoding: [0x07,0x00,0x47,0x01]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} BREAK_MM
# CHECK-EL: syscall # encoding: [0x00,0x00,0x7c,0x8b]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SYSCALL_MM
# CHECK-EL: syscall 396 # encoding: [0x8c,0x01,0x7c,0x8b]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SYSCALL_MM
# CHECK-EL: eret # encoding: [0x00,0x00,0x7c,0xf3]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} ERET_MM
# CHECK-EL: deret # encoding: [0x00,0x00,0x7c,0xe3]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} DERET_MM
# CHECK-EL: di # encoding: [0x00,0x00,0x7c,0x47]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} DI_MM
# CHECK-EL: di $10 # encoding: [0x0a,0x00,0x7c,0x47]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} DI_MM
# CHECK-EL: ei # encoding: [0x00,0x00,0x7c,0x57]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} EI_MM
# CHECK-EL: ei $10 # encoding: [0x0a,0x00,0x7c,0x57]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} EI_MM
# CHECK-EL: wait # encoding: [0x00,0x00,0x7c,0x93]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} WAIT_MM
# CHECK-EL: wait 17 # encoding: [0x11,0x00,0x7c,0x93]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} WAIT_MM
# CHECK-EL: tlbp # encoding: [0x00,0x00,0x7c,0x03]
# CHECK-EL: tlbr # encoding: [0x00,0x00,0x7c,0x13]
# CHECK-EL: tlbwi # encoding: [0x00,0x00,0x7c,0x23]
# CHECK-EL: tlbwr # encoding: [0x00,0x00,0x7c,0x33]
# CHECK-EL: prefx 1, $3($5) # encoding: [0x65,0x54,0xa0,0x09]
#------------------------------------------------------------------------------
# Big endian
#------------------------------------------------------------------------------
# CHECK-EB: sdbbp # encoding: [0x00,0x00,0xdb,0x7c]
# CHECK-EB: sdbbp 34 # encoding: [0x00,0x22,0xdb,0x7c]
# CHECK-EB-NOT: .set push
# CHECK-EB-NOT: .set mips32r2
# CHECK-EB: rdhwr $5, $29 # encoding: [0x00,0xbd,0x6b,0x3c]
# CHECK-EB-NOT: .set pop
# CHECK-EB: cache 1, 8($5) # encoding: [0x20,0x25,0x60,0x08]
# CHECK-EB: pref 1, 8($5) # encoding: [0x60,0x25,0x20,0x08]
# CHECK-EB: ssnop # encoding: [0x00,0x00,0x08,0x00]
# CHECK-EB: ehb # encoding: [0x00,0x00,0x18,0x00]
# CHECK-EB: pause # encoding: [0x00,0x00,0x28,0x00]
# 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]
# CHECK-EB: tlbp # encoding: [0x00,0x00,0x03,0x7c]
# CHECK-EB: tlbr # encoding: [0x00,0x00,0x13,0x7c]
# CHECK-EB: tlbwi # encoding: [0x00,0x00,0x23,0x7c]
# CHECK-EB: tlbwr # encoding: [0x00,0x00,0x33,0x7c]
# CHECK-EB: prefx 1, $3($5) # encoding: [0x54,0x65,0x09,0xa0]
sdbbp
sdbbp 34
rdhwr $5, $29
cache 1, 8($5)
pref 1, 8($5)
ssnop
ehb
pause
break
break 7
break 7,5
syscall
syscall 0x18c
eret
deret
di
di $0
di $10
ei
ei $0
ei $10
wait
wait 17
tlbp
tlbr
tlbwi
tlbwr
prefx 1, $3($5)