xref: /llvm-project/llvm/test/MC/PowerPC/ppc64-errors.s (revision 48cc43510931625ea23cd4ba621e5c0ddb12a452)
1
2# RUN: not llvm-mc -triple powerpc64-unknown-unknown < %s 2> %t
3# RUN: FileCheck < %t %s
4# RUN: not llvm-mc -triple powerpc64le-unknown-unknown < %s 2> %t
5# RUN: FileCheck < %t %s
6
7# Register operands
8
9# CHECK: error: invalid operand for instruction
10# CHECK-NEXT: add 32, 32, 32
11              add 32, 32, 32
12
13# CHECK: error: invalid register name
14# CHECK-NEXT: add %r32, %r32, %r32
15              add %r32, %r32, %r32
16
17# TLS register operands
18
19# CHECK: error: invalid operand for instruction
20# CHECK-NEXT: add 3, symbol@tls, 4
21              add 3, symbol@tls, 4
22
23# CHECK: error: invalid operand for instruction
24# CHECK-NEXT: subf 3, 4, symbol@tls
25              subf 3, 4, symbol@tls
26
27# Unsigned 1-bit immediate operands
28
29# CHECK: error: invalid operand for instruction
30# CHECK-NEXT: mtmsr 1, 2
31              mtmsr 1, 2
32
33# CHECK: error: invalid operand for instruction
34# CHECK-NEXT: mtmsrd 1, 2
35              mtmsrd 1, 2
36
37# CHECK: error: invalid operand for instruction
38# CHECK-NEXT: mtfsf 1, 2, 2, 1
39              mtfsf 1, 2, 2, 1
40
41# CHECK: error: invalid operand for instruction
42# CHECK-NEXT: mtfsf. 1, 2, 2, 1
43              mtfsf. 1, 2, 2, 1
44
45# Unsigned 2-bit immediate operands
46
47# CHECK: error: invalid operand for instruction
48# CHECK-NEXT: darn 1, 4
49              darn 1, 4
50
51# CHECK: error: invalid operand for instruction
52# CHECK-NEXT: wait 4
53              wait 4
54
55# CHECK: error: invalid operand for instruction
56# CHECK-NEXT: sync 8
57              sync 8
58
59# Unsigned 3-bit immediate operands
60
61# CHECK: error: invalid operand for instruction
62# CHECK-NEXT: dcbf 0, 1, 8
63              dcbf 0, 1, 8
64
65# Signed 16-bit immediate operands
66
67# CHECK: error: invalid operand for instruction
68# CHECK-NEXT: addi 1, 0, -32769
69              addi 1, 0, -32769
70
71# CHECK: error: invalid operand for instruction
72# CHECK-NEXT: addi 1, 0, 32768
73              addi 1, 0, 32768
74
75# Unsigned 16-bit immediate operands
76
77# CHECK: error: invalid operand for instruction
78# CHECK-NEXT: ori 1, 2, -1
79              ori 1, 2, -1
80
81# CHECK: error: invalid operand for instruction
82# CHECK-NEXT: ori 1, 2, 65536
83              ori 1, 2, 65536
84
85# Signed 16-bit immediate operands (extended range for addis)
86
87# CHECK: error: invalid operand for instruction
88         addis 1, 0, -65537
89
90# CHECK: error: invalid operand for instruction
91         addis 1, 0, 65536
92
93# D-Form memory operands
94
95# CHECK: error: invalid register number
96# CHECK-NEXT: lwz 1, 0(32)
97              lwz 1, 0(32)
98
99# CHECK: error: invalid register name
100# CHECK-NEXT: lwz 1, 0(%r32)
101              lwz 1, 0(%r32)
102
103# CHECK: error: invalid operand for instruction
104# CHECK-NEXT: lwz 1, -32769(2)
105              lwz 1, -32769(2)
106
107# CHECK: error: invalid operand for instruction
108# CHECK-NEXT: lwz 1, 32768(2)
109              lwz 1, 32768(2)
110
111# CHECK: error: invalid register number
112# CHECK-NEXT: ld 1, 0(32)
113              ld 1, 0(32)
114
115# CHECK: error: invalid register name
116# CHECK-NEXT: ld 1, 0(%r32)
117              ld 1, 0(%r32)
118
119# CHECK: error: invalid operand for instruction
120# CHECK-NEXT: ld 1, 1(2)
121              ld 1, 1(2)
122
123# CHECK: error: invalid operand for instruction
124# CHECK-NEXT: ld 1, 2(2)
125              ld 1, 2(2)
126
127# CHECK: error: invalid operand for instruction
128# CHECK-NEXT: ld 1, 3(2)
129              ld 1, 3(2)
130
131# CHECK: error: invalid operand for instruction
132# CHECK-NEXT: ld 1, -32772(2)
133              ld 1, -32772(2)
134
135# CHECK: error: invalid operand for instruction
136# CHECK-NEXT: ld 1, 32768(2)
137              ld 1, 32768(2)
138
139# CHECK: error: invalid modifier 'got' (no symbols present)
140         addi 4, 3, 123@got
141# CHECK-NEXT: addi 4, 3, 123@got
142
143# CHECK: error: invalid operand for instruction
144# CHECK-NEXT: lwarx 1, 2, 3, a
145              lwarx 1, 2, 3, a
146
147# Instruction requires memory operand
148# CHECK: error: invalid operand for instruction
149# CHECK-NEXT: la 3, 3, 10
150              la 3, 3, 10
151
152# Instruction doesn't support memory operands
153# CHECK: error: invalid operand for instruction
154# CHECK-NEXT: addi 3, 10(3)
155              addi 3, 10(3)
156
157# Invalid memory operand position
158# CHECK: error: invalid operand for instruction
159# CHECK-NEXT: la 0(3), 3
160              la 0(3), 3
161