[mips] Allow constant expressions in second argument of .cpsetup.
[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=mips64el-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 # CHECK32:   bnez $11, 1332         # encoding: [0x4d,0x01,0x60,0x15]
32 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
33 # CHECK32:   beqz $11, 1332         # encoding: [0x4d,0x01,0x60,0x11]
34 # CHECK32:   nop                    # encoding: [0x00,0x00,0x00,0x00]
35
36 # CHECK64:   b 1332                 # encoding: [0x4d,0x01,0x00,0x10]
37 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
38 # CHECK64:   bc1f 1332              # encoding: [0x4d,0x01,0x00,0x45]
39 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
40 # CHECK64:   bc1t 1332              # encoding: [0x4d,0x01,0x01,0x45]
41 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
42 # CHECK64:   beq $9, $6, 1332       # encoding: [0x4d,0x01,0x26,0x11]
43 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
44 # CHECK64:   bgez $6, 1332          # encoding: [0x4d,0x01,0xc1,0x04]
45 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
46 # CHECK64:   bgezal $6, 1332        # encoding: [0x4d,0x01,0xd1,0x04]
47 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
48 # CHECK64:   bgtz $6, 1332          # encoding: [0x4d,0x01,0xc0,0x1c]
49 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
50 # CHECK64:   blez $6, 1332          # encoding: [0x4d,0x01,0xc0,0x18]
51 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
52 # CHECK64:   bne $9, $6, 1332       # encoding: [0x4d,0x01,0x26,0x15]
53 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
54 # CHECK64:   bal     1332           # encoding: [0x4d,0x01,0x11,0x04]
55 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
56 # CHECK64:   bnez $11, 1332         # encoding: [0x4d,0x01,0x60,0x15]
57 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
58 # CHECK64:   beqz $11, 1332         # encoding: [0x4d,0x01,0x60,0x11]
59 # CHECK64:   nop                    # encoding: [0x00,0x00,0x00,0x00]
60
61 .set noreorder
62
63          b 1332
64          nop
65          bc1f 1332
66          nop
67          bc1t 1332
68          nop
69          beq $9,$6,1332
70          nop
71          bgez $6,1332
72          nop
73          bgezal $6,1332
74          nop
75          bgtz $6,1332
76          nop
77          blez $6,1332
78          nop
79          bne $9,$6,1332
80          nop
81          bal 1332
82          nop
83          bnez $11,1332
84          nop
85          beqz $11,1332
86          nop
87
88 end_of_code:
89 #------------------------------------------------------------------------------
90 # Jump instructions
91 #------------------------------------------------------------------------------
92 # CHECK32:   j 1328               # encoding: [0x4c,0x01,0x00,0x08]
93 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
94 # CHECK32:   jal 1328             # encoding: [0x4c,0x01,0x00,0x0c]
95 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
96 # CHECK32:   jalr $6              # encoding: [0x09,0xf8,0xc0,0x00]
97 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
98 # CHECK32:   jalr $25             # encoding: [0x09,0xf8,0x20,0x03]
99 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
100 # CHECK32:   jalr $10, $11        # encoding: [0x09,0x50,0x60,0x01]
101 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
102 # CHECK32:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
103 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
104 # CHECK32:lab:
105 # CHECK32:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
106 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
107 # CHECK32:   jalr  $25            # encoding: [0x09,0xf8,0x20,0x03]
108 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
109 # CHECK32:   jalr  $4, $25        # encoding: [0x09,0x20,0x20,0x03]
110 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
111 # CHECK32:   jalx    lab          # encoding: [A,A,A,0b011101AA]
112 # CHECK32:                        #   fixup A - offset: 0, value: lab, kind: fixup_Mips_26
113 # CHECK32:   nop                  # encoding: [0x00,0x00,0x00,0x00]
114
115 # CHECK64:   j 1328               # encoding: [0x4c,0x01,0x00,0x08]
116 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
117 # CHECK64:   jal 1328             # encoding: [0x4c,0x01,0x00,0x0c]
118 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
119 # CHECK64:   jalr $6              # encoding: [0x09,0xf8,0xc0,0x00]
120 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
121 # CHECK64:   jalr $25             # encoding: [0x09,0xf8,0x20,0x03]
122 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
123 # CHECK64:   jalr $10, $11        # encoding: [0x09,0x50,0x60,0x01]
124 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
125 # CHECK64:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
126 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
127 # CHECK64:lab:
128 # CHECK64:   jr $7                # encoding: [0x08,0x00,0xe0,0x00]
129 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
130 # CHECK64:   jalr  $25            # encoding: [0x09,0xf8,0x20,0x03]
131 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
132 # CHECK64:   jalr  $4, $25        # encoding: [0x09,0x20,0x20,0x03]
133 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
134 # CHECK64:   jalx    lab          # encoding: [A,A,A,0b011101AA]
135 # CHECK64:                        #   fixup A - offset: 0, value: lab, kind: fixup_Mips_26
136 # CHECK64:   nop                  # encoding: [0x00,0x00,0x00,0x00]
137
138    j 1328
139    nop
140    jal 1328
141    nop
142    jalr $6
143    nop
144    jalr $31, $25
145    nop
146    jalr $10, $11
147    nop
148    jr $7
149    nop
150 lab:
151    j $7
152    nop
153    jal  $25
154    nop
155    jal  $4,$25
156    nop
157    jalx lab
158    nop