This patch implements jalx instruction for Mips architecture.This instruction execute...
authorVladimir Medic <Vladimir.Medic@imgtec.com>
Mon, 3 Mar 2014 13:12:59 +0000 (13:12 +0000)
committerVladimir Medic <Vladimir.Medic@imgtec.com>
Mon, 3 Mar 2014 13:12:59 +0000 (13:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202706 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsInstrInfo.td
test/MC/Disassembler/Mips/mips32.txt
test/MC/Disassembler/Mips/mips32_le.txt
test/MC/Disassembler/Mips/mips32r2.txt
test/MC/Disassembler/Mips/mips32r2_le.txt
test/MC/Mips/mips-jump-instructions.s

index e39fd690fb900b4a77e27a46e4cf632ff4c20626..faf185131f781c4fc6fe920b39675cf70f2ca09a 100644 (file)
@@ -1038,6 +1038,7 @@ def B       : UncondBranch<BEQ>;
 
 def JAL  : MMRel, JumpLink<"jal", calltarget>, FJ<3>;
 def JALR : MMRel, JumpLinkReg<"jalr", GPR32Opnd>, JALR_FM;
+def JALX  : MMRel, JumpLink<"jalx", calltarget>, FJ<0x1D>;
 def JALRPseudo : JumpLinkRegPseudo<GPR32Opnd, JALR, RA>;
 def BGEZAL : MMRel, BGEZAL_FT<"bgezal", brtarget, GPR32Opnd>, BGEZAL_FM<0x11>;
 def BLTZAL : MMRel, BGEZAL_FT<"bltzal", brtarget, GPR32Opnd>, BGEZAL_FM<0x10>;
index 6d02925ff7b6636f7a5ac0fc34aec756f029e917..bfb145e39596a270c2ca3cbcfa26a6083ac17a26 100644 (file)
 # CHECK: jal 1328
 0x0c 0x00 0x01 0x4c
 
+# CHECK: jalx 1328
+0x74 0x00 0x01 0x4c
+
 # CHECK: jalr  $7
 0x00 0xe0 0xf8 0x09
 
index 61e6fc868d047d9762a2a461ddec033fb37d7e0e..533fc69598c1711eef9134c3666b702b358947db 100644 (file)
 # CHECK: jal 1328
 0x4c 0x01 0x00 0x0c
 
+# CHECK: jalx 1328
+0x4c 0x01 0x00 0x74
+
 # CHECK: jalr  $7
 0x09 0xf8 0xe0 0x00
 
index 11d9058221c2bde0eadd265bb380108e51c15e17..299f6f0c8a3ea294eb5abc8072141c36d86d3dec 100644 (file)
 # CHECK: jal 1328
 0x0c 0x00 0x01 0x4c
 
+# CHECK: jalx 1328
+0x74 0x00 0x01 0x4c
+
 # CHECK: jalr  $7
 0x00 0xe0 0xf8 0x09
 
index adafcf1258cc62c4e59bd5de492f2e569e9836cf..0362ca6d8d67256e8580d46d9ad044adb69ac8a5 100644 (file)
 # CHECK: jal 1328
 0x4c 0x01 0x00 0x0c
 
+# CHECK: jalx 1328
+0x4c 0x01 0x00 0x74
+
 # CHECK: jalr  $7
 0x09 0xf8 0xe0 0x00
 
index 989826a1a2b32c173206240f5cca7aad19936533..596c8a2f763360dfa2c15298cc2d0be1d90c7527 100644 (file)
@@ -101,12 +101,16 @@ end_of_code:
 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 # CHECK32:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32:lab:
 # CHECK32:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 # CHECK32:   jalr  $25            # encoding: [0x09,0xf8,0x20,0x03]
 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 # CHECK32:   jalr  $4, $25        # encoding: [0x09,0x20,0x20,0x03]
 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
+# CHECK32:   jalx    lab          # encoding: [A,A,A,0b011101AA]
+# CHECK32:                        #   fixup A - offset: 0, value: lab, kind: fixup_Mips_26
+# CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 
 # CHECK64:   j 1328               # encoding: [0x4c,0x01,0x00,0x08]
 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
@@ -120,13 +124,16 @@ end_of_code:
 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 # CHECK64:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
+# CHECK64:lab:
 # CHECK64:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 # CHECK64:   jalr  $25            # encoding: [0x09,0xf8,0x20,0x03]
 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 # CHECK64:   jalr  $4, $25        # encoding: [0x09,0x20,0x20,0x03]
 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
-
+# CHECK64:   jalx    lab          # encoding: [A,A,A,0b011101AA]
+# CHECK64:                        #   fixup A - offset: 0, value: lab, kind: fixup_Mips_26
+# CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
 
    j 1328
    nop
@@ -140,9 +147,12 @@ end_of_code:
    nop
    jr $7
    nop
+lab:
    j $7
    nop
    jal  $25
    nop
    jal  $4,$25
    nop
+   jalx lab
+   nop