597f6872d60f578c43d1541a61c9c2db66758586
[oota-llvm.git] / test / MC / Mips / mips-jump-instructions.s
1 # RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \
2 # RUN: FileCheck -check-prefix=CHECK32  %s
3 # RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips64r2 | \
4 # RUN: FileCheck -check-prefix=CHECK64  %s
5
6 # Check that the assembler can handle the documented syntax
7 # for jumps and branches.
8 #------------------------------------------------------------------------------
9 # Branch instructions
10 #------------------------------------------------------------------------------
11 # CHECK32:   b 1332                 # encoding: [0x4d,0x01,0x00,0x10]
12 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
13 # CHECK32:   bc1f 1332              # encoding: [0x4d,0x01,0x00,0x45]
14 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
15 # CHECK32:   bc1t 1332              # encoding: [0x4d,0x01,0x01,0x45]
16 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
17 # CHECK32:   beq $9, $6, 1332       # encoding: [0x4d,0x01,0x26,0x11]
18 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
19 # CHECK32:   bgez $6, 1332          # encoding: [0x4d,0x01,0xc1,0x04]
20 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
21 # CHECK32:   bgezal $6, 1332        # encoding: [0x4d,0x01,0xd1,0x04]
22 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
23 # CHECK32:   bgtz $6, 1332          # encoding: [0x4d,0x01,0xc0,0x1c]
24 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
25 # CHECK32:   blez $6, 1332          # encoding: [0x4d,0x01,0xc0,0x18]
26 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
27 # CHECK32:   bne $9, $6, 1332       # encoding: [0x4d,0x01,0x26,0x15]
28 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
29 # CHECK32:   bal     1332           # encoding: [0x4d,0x01,0x11,0x04]
30 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
31
32 # CHECK64:   b 1332                 # encoding: [0x4d,0x01,0x00,0x10]
33 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
34 # CHECK64:   bc1f 1332              # encoding: [0x4d,0x01,0x00,0x45]
35 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
36 # CHECK64:   bc1t 1332              # encoding: [0x4d,0x01,0x01,0x45]
37 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
38 # CHECK64:   beq $9, $6, 1332       # encoding: [0x4d,0x01,0x26,0x11]
39 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
40 # CHECK64:   bgez $6, 1332          # encoding: [0x4d,0x01,0xc1,0x04]
41 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
42 # CHECK64:   bgezal $6, 1332        # encoding: [0x4d,0x01,0xd1,0x04]
43 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
44 # CHECK64:   bgtz $6, 1332          # encoding: [0x4d,0x01,0xc0,0x1c]
45 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
46 # CHECK64:   blez $6, 1332          # encoding: [0x4d,0x01,0xc0,0x18]
47 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
48 # CHECK64:   bne $9, $6, 1332       # encoding: [0x4d,0x01,0x26,0x15]
49 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
50 # CHECK64:   bal     1332           # encoding: [0x4d,0x01,0x11,0x04]
51 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
52
53 .set noreorder
54
55          b 1332
56          nop
57          bc1f 1332
58          nop
59          bc1t 1332
60          nop
61          beq $9,$6,1332
62          nop
63          bgez $6,1332
64          nop
65          bgezal $6,1332
66          nop
67          bgtz $6,1332
68          nop
69          blez $6,1332
70          nop
71          bne $9,$6,1332
72          nop
73          bal 1332
74          nop
75
76 end_of_code:
77 #------------------------------------------------------------------------------
78 # Jump instructions
79 #------------------------------------------------------------------------------
80 # CHECK32:   j 1328               # encoding: [0x4c,0x01,0x00,0x08]
81 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
82 # CHECK32:   jal 1328             # encoding: [0x4c,0x01,0x00,0x0c]
83 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
84 # CHECK32:   jalr $6              # encoding: [0x09,0xf8,0xc0,0x00]
85 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
86 # CHECK32:   jalr $25             # encoding: [0x09,0xf8,0x20,0x03]
87 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
88 # CHECK32:   jalr $10, $11        # encoding: [0x09,0x50,0x60,0x01]
89 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
90 # CHECK32:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
91 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
92 # CHECK32:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
93 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
94 # CHECK32:   jalr  $25            # encoding: [0x09,0xf8,0x20,0x03]
95 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
96 # CHECK32:   jalr  $4, $25        # encoding: [0x09,0x20,0x20,0x03]
97 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
98
99 # CHECK64:   j 1328               # encoding: [0x4c,0x01,0x00,0x08]
100 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
101 # CHECK64:   jal 1328             # encoding: [0x4c,0x01,0x00,0x0c]
102 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
103 # CHECK64:   jalr $6              # encoding: [0x09,0xf8,0xc0,0x00]
104 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
105 # CHECK64:   jalr $25             # encoding: [0x09,0xf8,0x20,0x03]
106 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
107 # CHECK64:   jalr $10, $11        # encoding: [0x09,0x50,0x60,0x01]
108 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
109 # CHECK64:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
110 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
111 # CHECK64:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
112 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
113 # CHECK64:   jalr  $25            # encoding: [0x09,0xf8,0x20,0x03]
114 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
115 # CHECK64:   jalr  $4, $25        # encoding: [0x09,0x20,0x20,0x03]
116 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
117
118
119    j 1328
120    nop
121    jal 1328
122    nop
123    jalr $6
124    nop
125    jalr $31, $25
126    nop
127    jalr $10, $11
128    nop
129    jr $7
130    nop
131    j $7
132    nop
133    jal  $25
134    nop
135    jal  $4,$25
136    nop