1# RUN: not llvm-mc %s -triple=mips-unknown-linux -mcpu=mips32 -mattr=+soft-float 2>&1 |\
2# RUN:   FileCheck %s --check-prefix=32
3# RUN: not llvm-mc %s -triple=mips-unknown-linux -mcpu=mips64 -mattr=+soft-float 2>&1 |\
4# RUN:   FileCheck %s --check-prefix=64
5# RUN: not llvm-mc %s -triple=mips-unknown-linux -mcpu=mips32r2 -mattr=+soft-float 2>&1 |\
6# RUN:   FileCheck %s --check-prefix=R2
7# RUN: not llvm-mc %s -triple=mips-unknown-linux -mcpu=mips32r6 -mattr=+soft-float 2>&1 |\
8# RUN:   FileCheck %s --check-prefix=R6
9
10foo:
11  dmfc1      $7, $f2
12  # 64: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
13  dmtc1      $6, $f2
14  # 64: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
15
16  ceil.l.d   $f2, $f2
17  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
18  ceil.l.s   $f2, $f2
19  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
20  cvt.d.l    $f2, $f2
21  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
22  cvt.l.d    $f2, $f2
23  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
24  cvt.l.s    $f2, $f2
25  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
26  cvt.s.l    $f2, $f2
27  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
28  floor.l.d  $f2, $f2
29  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
30  floor.l.s  $f2, $f2
31  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
32  ldxc1      $f2, $4($6)
33  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
34  luxc1      $f2, $4($6)
35  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
36  lwxc1      $f2, $4($6)
37  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
38  mfhc1      $7, $f2
39  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
40  msub.s     $f2, $f2, $f2, $f2
41  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
42  mthc1      $7, $f2
43  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
44  nmadd.s    $f2, $f2, $f2, $f2
45  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
46  nmsub.s    $f2, $f2, $f2, $f2
47  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
48  round.l.s  $f2, $f2
49  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
50  sdxc1      $f2, $4($6)
51  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
52  suxc1      $f2, $4($6)
53  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
54  swxc1      $f2, $4($6)
55  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
56  trunc.l.d  $f2, $f2
57  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
58  trunc.l.s  $f2, $f2
59  # R2: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
60
61  bc1eqz     $f2, 123
62  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
63  bc1nez     $f2, 456
64  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
65  class.d    $f2, $f2
66  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
67  class.s    $f2, $f2
68  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
69  cmp.af.d   $f2, $f2, $f2
70  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
71  cmp.af.s   $f2, $f2, $f2
72  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
73  cmp.eq.d   $f2, $f2, $f2
74  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
75  cmp.eq.s   $f2, $f2, $f2
76  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
77  cmp.le.d   $f2, $f2, $f2
78  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
79  cmp.le.s   $f2, $f2, $f2
80  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
81  cmp.lt.d   $f2, $f2, $f2
82  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
83  cmp.lt.s   $f2, $f2, $f2
84  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
85  cmp.saf.d  $f2, $f2, $f2
86  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
87  cmp.saf.s  $f2, $f2, $f2
88  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
89  cmp.seq.d  $f2, $f2, $f2
90  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
91  cmp.seq.s  $f2, $f2, $f2
92  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
93  cmp.sle.d  $f2, $f2, $f2
94  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
95  cmp.sle.s  $f2, $f2, $f2
96  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
97  cmp.slt.d  $f2, $f2, $f2
98  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
99  cmp.slt.s  $f2, $f2, $f2
100  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
101  cmp.sueq.d $f2, $f2, $f2
102  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
103  cmp.sueq.s $f2, $f2, $f2
104  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
105  cmp.sule.d $f2, $f2, $f2
106  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
107  cmp.sule.s $f2, $f2, $f2
108  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
109  cmp.sult.d $f2, $f2, $f2
110  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
111  cmp.sult.s $f2, $f2, $f2
112  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
113  cmp.sun.d  $f2, $f2, $f2
114  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
115  cmp.sun.s  $f2, $f2, $f2
116  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
117  cmp.ueq.d  $f2, $f2, $f2
118  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
119  cmp.ueq.s  $f2, $f2, $f2
120  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
121  cmp.ule.d  $f2, $f2, $f2
122  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
123  cmp.ule.s  $f2, $f2, $f2
124  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
125  cmp.ult.d  $f2, $f2, $f2
126  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
127  cmp.ult.s  $f2, $f2, $f2
128  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
129  cmp.un.d   $f2, $f2, $f2
130  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
131  cmp.un.s   $f2, $f2, $f2
132  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
133  maddf.d    $f2, $f2, $f2
134  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
135  maddf.s    $f2, $f2, $f2
136  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
137  max.d      $f2, $f2, $f2
138  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
139  max.s      $f2, $f2, $f2
140  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
141  maxa.d     $f2, $f2, $f2
142  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
143  maxa.s     $f2, $f2, $f2
144  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
145  min.d      $f2, $f2, $f2
146  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
147  min.s      $f2, $f2, $f2
148  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
149  mina.d     $f2, $f2, $f2
150  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
151  mina.s     $f2, $f2, $f2
152  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
153  msubf.d    $f2, $f2, $f2
154  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
155  msubf.s    $f2, $f2, $f2
156  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
157  rint.d     $f2, $f2
158  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
159  rint.s     $f2, $f2
160  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
161  sel.d      $f2, $f2, $f2
162  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
163  sel.s      $f2, $f2, $f2
164  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
165  seleqz.d   $f2, $f2, $f2
166  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
167  seleqz.s   $f2, $f2, $f2
168  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
169  selnez.d   $f2, $f2, $f2
170  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
171  selnez.s   $f2, $f2, $f2
172  # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
173
174  abs.d      $f2, $f2
175  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
176  abs.s      $f2, $f2
177  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
178  add.d      $f2, $f2, $f2
179  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
180  add.s      $f2, $f2, $f2
181  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
182  c.eq.d     $f2, $f2
183  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
184  c.eq.s     $f2, $f2
185  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
186  c.f.d      $f2, $f2
187  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
188  c.f.s      $f2, $f2
189  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
190  c.le.d     $f2, $f2
191  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
192  c.le.s     $f2, $f2
193  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
194  c.lt.d     $f2, $f2
195  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
196  c.lt.s     $f2, $f2
197  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
198  c.nge.d    $f2, $f2
199  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
200  c.nge.s    $f2, $f2
201  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
202  c.ngl.d    $f2, $f2
203  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
204  c.ngl.s    $f2, $f2
205  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
206  c.ngle.d   $f2, $f2
207  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
208  c.ngle.s   $f2, $f2
209  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
210  c.ngt.d    $f2, $f2
211  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
212  c.ngt.s    $f2, $f2
213  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
214  c.ole.d    $f2, $f2
215  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
216  c.ole.s    $f2, $f2
217  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
218  c.olt.d    $f2, $f2
219  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
220  c.olt.s    $f2, $f2
221  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
222  c.seq.d    $f2, $f2
223  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
224  c.seq.s    $f2, $f2
225  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
226  c.sf.d     $f2, $f2
227  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
228  c.sf.s     $f2, $f2
229  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
230  c.ueq.d    $f2, $f2
231  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
232  c.ueq.s    $f2, $f2
233  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
234  c.ule.d    $f2, $f2
235  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
236  c.ule.s    $f2, $f2
237  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
238  c.ult.d    $f2, $f2
239  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
240  c.ult.s    $f2, $f2
241  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
242  c.un.d     $f2, $f2
243  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
244  c.un.s     $f2, $f2
245  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
246  ceil.w.d   $f2, $f2
247  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
248  ceil.w.s   $f2, $f2
249  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
250  cvt.d.s    $f2, $f2
251  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
252  cvt.d.w    $f2, $f2
253  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
254  cvt.s.d    $f2, $f2
255  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
256  cvt.s.w    $f2, $f2
257  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
258  cvt.w.d    $f2, $f2
259  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
260  cvt.w.s    $f2, $f2
261  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
262  div.d      $f2, $f2, $f2
263  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
264  div.s      $f2, $f2, $f2
265  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
266  floor.w.d  $f2, $f2
267  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
268  floor.w.s  $f2, $f2
269  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
270  ldc1       $f2, 16($7)
271  # FIXME: LDC1 is correctly rejected but the wrong error message is emitted.
272  # 32: :[[@LINE-2]]:19: error: invalid operand for instruction
273  lwc1       $f2, 16($7)
274  # FIXME: LWC1 is correctly rejected but the wrong error message is emitted.
275  # 32: :[[@LINE-2]]:19: error: invalid operand for instruction
276  madd.s     $f2, $f2, $f2, $f2
277  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
278  mfc1       $7, $f2
279  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
280  mov.d      $f2, $f2
281  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
282  mov.s      $f2, $f2
283  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
284  movf.d     $f2, $f2, $fcc2
285  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
286  movf.s     $f2, $f2, $fcc5
287  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
288  movn.d     $f2, $f2, $6
289  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
290  movn.s     $f2, $f2, $6
291  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
292  movt.d     $f2, $f2, $fcc0
293  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
294  movt.s     $f2, $f2, $fcc1
295  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
296  movz.d     $f2, $f2, $6
297  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
298  movz.s     $f2, $f2, $6
299  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
300  mtc1       $7, $f2
301  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
302  mul.d      $f2, $f2, $f2
303  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
304  mul.s      $f2, $f2, $f2
305  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
306  neg.d      $f2, $f2
307  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
308  neg.s      $f2, $f2
309  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
310  round.w.d  $f2, $f2
311  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
312  round.w.s  $f2, $f2
313  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
314  sdc1       $f2, 16($7)
315  # FIXME: SDC1 is correctly rejected but the wrong error message is emitted.
316  # 32: :[[@LINE-2]]:19: error: invalid operand for instruction
317  sqrt.d     $f2, $f2
318  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
319  sqrt.s     $f2, $f2
320  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
321  sub.d      $f2, $f2, $f2
322  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
323  sub.s      $f2, $f2, $f2
324  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
325  swc1       $f2, 16($7)
326  # FIXME: SWC1 is correctly rejected but the wrong error message is emitted.
327  # 32: :[[@LINE-2]]:19: error: invalid operand for instruction
328  trunc.w.d  $f2, $f2
329  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
330  trunc.w.s  $f2, $f2
331  # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled
332