1
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
3
6
# Check that the assembler can handle the documented syntax
4
7
# for jumps and branches.
5
8
#------------------------------------------------------------------------------
6
9
# Branch instructions
7
10
#------------------------------------------------------------------------------
8
# CHECK: b 1332 # encoding: [0x4d,0x01,0x00,0x10]
9
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
10
# CHECK: bc1f 1332 # encoding: [0x4d,0x01,0x00,0x45]
11
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
12
# CHECK: bc1t 1332 # encoding: [0x4d,0x01,0x01,0x45]
13
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
14
# CHECK: beq $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x11]
15
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
16
# CHECK: bgez $6, 1332 # encoding: [0x4d,0x01,0xc1,0x04]
17
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
18
# CHECK: bgezal $6, 1332 # encoding: [0x4d,0x01,0xd1,0x04]
19
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
20
# CHECK: bgtz $6, 1332 # encoding: [0x4d,0x01,0xc0,0x1c]
21
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
22
# CHECK: blez $6, 1332 # encoding: [0x4d,0x01,0xc0,0x18]
23
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
24
# CHECK: bne $9, $6, 1332 # encoding: [0x4d,0x01,0x26,0x15]
25
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
26
# CHECK: bal 1332 # encoding: [0x4d,0x01,0x11,0x04]
27
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
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: bne $11, $zero, 1332 # encoding: [0x4d,0x01,0x60,0x15]
32
# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
33
# CHECK32: beq $11, $zero, 1332 # encoding: [0x4d,0x01,0x60,0x11]
34
# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
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: bne $11, $zero, 1332 # encoding: [0x4d,0x01,0x60,0x15]
57
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
58
# CHECK64: beq $11, $zero, 1332 # encoding: [0x4d,0x01,0x60,0x11]
59
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
53
89
#------------------------------------------------------------------------------
54
90
# Jump instructions
55
91
#------------------------------------------------------------------------------
56
# CHECK: j 1328 # encoding: [0x4c,0x01,0x00,0x08]
57
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
58
# CHECK: jal 1328 # encoding: [0x4c,0x01,0x00,0x0c]
59
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
60
# CHECK: jalr $6 # encoding: [0x09,0xf8,0xc0,0x00]
61
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
62
# CHECK: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
63
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
64
# CHECK: jalr $10, $11 # encoding: [0x09,0x50,0x60,0x01]
65
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
66
# CHECK: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
67
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
68
# CHECK: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
69
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
70
# CHECK: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
71
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
72
# CHECK: jalr $4, $25 # encoding: [0x09,0x20,0x20,0x03]
73
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
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: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
105
# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
106
# CHECK32: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
107
# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
108
# CHECK32: jalr $4, $25 # encoding: [0x09,0x20,0x20,0x03]
109
# CHECK32: nop # encoding: [0x00,0x00,0x00,0x00]
111
# CHECK64: j 1328 # encoding: [0x4c,0x01,0x00,0x08]
112
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
113
# CHECK64: jal 1328 # encoding: [0x4c,0x01,0x00,0x0c]
114
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
115
# CHECK64: jalr $6 # encoding: [0x09,0xf8,0xc0,0x00]
116
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
117
# CHECK64: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
118
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
119
# CHECK64: jalr $10, $11 # encoding: [0x09,0x50,0x60,0x01]
120
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
121
# CHECK64: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
122
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
123
# CHECK64: jr $7 # encoding: [0x08,0x00,0xe0,0x00]
124
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
125
# CHECK64: jalr $25 # encoding: [0x09,0xf8,0x20,0x03]
126
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]
127
# CHECK64: jalr $4, $25 # encoding: [0x09,0x20,0x20,0x03]
128
# CHECK64: nop # encoding: [0x00,0x00,0x00,0x00]