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
88end_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
150lab:
151   j $7
152   nop
153   jal  $25
154   nop
155   jal  $4,$25
156   nop
157   jalx lab
158   nop
159