X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FMC%2FMips%2Fmips-jump-instructions.s;h=596c8a2f763360dfa2c15298cc2d0be1d90c7527;hb=b95580a711b70e373ba7a52b3867e7ea6881e413;hp=58250f306e87980aa6f7f5108cdb83f15b6a5d7d;hpb=189225369446136f82e080dbdcab3a0fa63c71ac;p=oota-llvm.git diff --git a/test/MC/Mips/mips-jump-instructions.s b/test/MC/Mips/mips-jump-instructions.s index 58250f306e8..596c8a2f763 100644 --- a/test/MC/Mips/mips-jump-instructions.s +++ b/test/MC/Mips/mips-jump-instructions.s @@ -1,30 +1,65 @@ -# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s +# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \ +# RUN: FileCheck -check-prefix=CHECK32 %s +# RUN: llvm-mc %s -triple=mips64el-unknown-linux -show-encoding -mcpu=mips64r2 | \ +# RUN: FileCheck -check-prefix=CHECK64 %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,0x11,0x04] -# CHECK: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: b 1332 # encoding: [0x4d,0x01,0x00,0x10] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bc1f 1332 # encoding: [0x4d,0x01,0x00,0x45] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bc1t 1332 # encoding: [0x4d,0x01,0x01,0x45] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: beq $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x11] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bgez $6, 1332 # encoding: [0x4d,0x01,0xc1,0x04] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bgezal $6, 1332 # encoding: [0x4d,0x01,0xd1,0x04] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bgtz $6, 1332 # encoding: [0x4d,0x01,0xc0,0x1c] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: blez $6, 1332 # encoding: [0x4d,0x01,0xc0,0x18] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bne $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x15] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bal 1332 # encoding: [0x4d,0x01,0x11,0x04] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: bnez $11, 1332 # encoding: [0x4d,0x01,0x60,0x15] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: beqz $11, 1332 # encoding: [0x4d,0x01,0x60,0x11] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] + +# CHECK64: b 1332 # encoding: [0x4d,0x01,0x00,0x10] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bc1f 1332 # encoding: [0x4d,0x01,0x00,0x45] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bc1t 1332 # encoding: [0x4d,0x01,0x01,0x45] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: beq $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x11] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bgez $6, 1332 # encoding: [0x4d,0x01,0xc1,0x04] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bgezal $6, 1332 # encoding: [0x4d,0x01,0xd1,0x04] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bgtz $6, 1332 # encoding: [0x4d,0x01,0xc0,0x1c] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: blez $6, 1332 # encoding: [0x4d,0x01,0xc0,0x18] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bne $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x15] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bal 1332 # encoding: [0x4d,0x01,0x11,0x04] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: bnez $11, 1332 # encoding: [0x4d,0x01,0x60,0x15] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: beqz $11, 1332 # encoding: [0x4d,0x01,0x60,0x11] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] + +.set noreorder + b 1332 nop bc1f 1332 @@ -45,21 +80,60 @@ nop bal 1332 nop + bnez $11,1332 + nop + beqz $11,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] +# CHECK32: j 1328 # encoding: [0x4c,0x01,0x00,0x08] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: jal 1328 # encoding: [0x4c,0x01,0x00,0x0c] +# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK32: jalr $6 # encoding: [0x09,0xf8,0xc0,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 $10, $11 # encoding: [0x09,0x50,0x60,0x01] +# 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] +# CHECK64: jal 1328 # encoding: [0x4c,0x01,0x00,0x0c] +# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK64: jalr $6 # encoding: [0x09,0xf8,0xc0,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 $10, $11 # encoding: [0x09,0x50,0x60,0x01] +# 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 @@ -67,6 +141,18 @@ end_of_code: nop jalr $6 nop + jalr $31, $25 + nop + jalr $10, $11 + nop jr $7 nop +lab: j $7 + nop + jal $25 + nop + jal $4,$25 + nop + jalx lab + nop