mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 04:39:51 +00:00
04376ebe9f
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
73 lines
2.9 KiB
ArmAsm
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
|