llvm/test/MC/Mips/mips-jump-instructions.s
Jack Carter 04376ebe9f The Mips standalone assembler aliased instruction support.
The assembler can alias one instruction into another based
on the operands. For example the jump instruction "J" takes
and immediate operand, but if the operand is a register the
assembler will change it into a jump register "JR" instruction.

These changes are in the instruction td file.

Test cases included

Contributer: Vladimir Medic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163368 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-07 01:42:38 +00:00

73 lines
2.9 KiB
ArmAsm

# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
# Check that the assembler can handle the documented syntax
# for jumps and branches.
# CHECK: .section __TEXT,__text,regular,pure_instructions
#------------------------------------------------------------------------------
# Branch instructions
#------------------------------------------------------------------------------
# CHECK: b 1332 # encoding: [0x34,0x05,0x00,0x10]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bc1f 1332 # encoding: [0x34,0x05,0x00,0x45]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bc1t 1332 # encoding: [0x34,0x05,0x01,0x45]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: beq $9, $6, 1332 # encoding: [0x34,0x05,0x26,0x11]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bgez $6, 1332 # encoding: [0x34,0x05,0xc1,0x04]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bgezal $6, 1332 # encoding: [0x34,0x05,0xd1,0x04]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bgtz $6, 1332 # encoding: [0x34,0x05,0xc0,0x1c]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: blez $6, 1332 # encoding: [0x34,0x05,0xc0,0x18]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bne $9, $6, 1332 # encoding: [0x34,0x05,0x26,0x15]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: bal 1332 # encoding: [0x34,0x05,0x00,0x04]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
b 1332
nop
bc1f 1332
nop
bc1t 1332
nop
beq $9,$6,1332
nop
bgez $6,1332
nop
bgezal $6,1332
nop
bgtz $6,1332
nop
blez $6,1332
nop
bne $9,$6,1332
nop
bal 1332
nop
end_of_code:
#------------------------------------------------------------------------------
# Jump instructions
#------------------------------------------------------------------------------
# CHECK: j 1328 # encoding: [0x30,0x05,0x00,0x08]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: jal 1328 # encoding: [0x30,0x05,0x00,0x0c]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: jalr $6 # encoding: [0x09,0xf8,0xc0,0x00]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
# CHECK: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
j 1328
nop
jal 1328
nop
jalr $6
nop
jr $7
nop
j $7