mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
Summary: This is needed by the .cprestore assembler directive. This directive needs to be able to insert an LW instruction after every JALR replacement of a JAL pseudo-instruction (and never after a JALR which has NOT been a result of a pseudo-instruction replacement). The problem with using InstAlias for these is that after it replaces the pseudo-instruction, we can't find out if the resulting JALR instruction was generated by an InstAlias or not, so we don't know whether or not to insert our LW instruction. By replacing it manually, we know when the pseudo-instruction replacement happens and we can insert the LW instruction correctly. Reviewers: dsanders Reviewed By: dsanders Subscribers: emaste, llvm-commits Differential Revision: http://reviews.llvm.org/D5601 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227568 91177308-0d34-0410-b5e6-96231b3b80d8
61 lines
3.0 KiB
ArmAsm
61 lines
3.0 KiB
ArmAsm
# RUN: llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips \
|
|
# RUN: | FileCheck %s -check-prefix=CHECK-EL
|
|
# RUN: llvm-mc %s -triple=mips -show-encoding -mattr=micromips \
|
|
# RUN: | FileCheck %s -check-prefix=CHECK-EB
|
|
# Check that the assembler can handle the documented syntax
|
|
# for jump and branch instructions.
|
|
#------------------------------------------------------------------------------
|
|
# Jump instructions
|
|
#------------------------------------------------------------------------------
|
|
# Little endian
|
|
#------------------------------------------------------------------------------
|
|
# CHECK-EL: j 1328 # encoding: [0x00,0xd4,0x98,0x02]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EL: jal 1328 # encoding: [0x00,0xf4,0x98,0x02]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EL: jalr $ra, $6 # encoding: [0xe6,0x03,0x3c,0x0f]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EL: jr $7 # encoding: [0x07,0x00,0x3c,0x0f]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EL: jr $7 # encoding: [0x07,0x00,0x3c,0x0f]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EL: jals 1328 # encoding: [0x00,0x74,0x98,0x02]
|
|
# CHECK-EL: nop # encoding: [0x00,0x0c]
|
|
# CHECK-EL: jalrs $ra, $6 # encoding: [0xe6,0x03,0x3c,0x4f]
|
|
# CHECK-EL: nop # encoding: [0x00,0x0c]
|
|
# CHECK-EL: jalr $25 # encoding: [0xd9,0x45]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EL: jalr $4, $25 # encoding: [0x99,0x00,0x3c,0x0f]
|
|
# CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
#------------------------------------------------------------------------------
|
|
# Big endian
|
|
#------------------------------------------------------------------------------
|
|
# CHECK-EB: j 1328 # encoding: [0xd4,0x00,0x02,0x98]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EB: jal 1328 # encoding: [0xf4,0x00,0x02,0x98]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EB: jalr $ra, $6 # encoding: [0x03,0xe6,0x0f,0x3c]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EB: jr $7 # encoding: [0x00,0x07,0x0f,0x3c]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EB: jr $7 # encoding: [0x00,0x07,0x0f,0x3c]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EB: jals 1328 # encoding: [0x74,0x00,0x02,0x98]
|
|
# CHECK-EB: nop # encoding: [0x0c,0x00]
|
|
# CHECK-EB: jalrs $ra, $6 # encoding: [0x03,0xe6,0x4f,0x3c]
|
|
# CHECK-EB: nop # encoding: [0x0c,0x00]
|
|
# CHECK-EB: jalr $25 # encoding: [0x45,0xd9]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
# CHECK-EB: jalr $4, $25 # encoding: [0x00,0x99,0x0f,0x3c]
|
|
# CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00]
|
|
|
|
j 1328
|
|
jal 1328
|
|
jalr $ra, $6
|
|
jr $7
|
|
j $7
|
|
jals 1328
|
|
jalrs $ra, $6
|
|
jal $25
|
|
jal $4, $25
|