bfd/
[deliverable/binutils-gdb.git] / gas / testsuite / gas / mips / set-arch.s
1 .text
2
3 .set noreorder
4 .set noat
5
6 .set arch=4010
7
8 flushi
9 flushd
10 flushid
11 madd $4,$5
12 maddu $5,$6
13 ffc $6,$7
14 ffs $7,$8
15 msub $8,$9
16 msubu $9,$10
17 selsl $10,$11,$12
18 selsr $11,$12,$13
19 waiti
20 wb 16($14)
21 addciu $14,$15,16
22
23 .set arch=4100
24
25 hibernate
26 standby
27 suspend
28
29 .set arch=4650
30
31 mad $4,$5
32 madu $5,$6
33 mul $6,$7,$8
34
35 # test mips4 instructions.
36
37 .set arch=mips4
38
39 text_label:
40 bc1f text_label
41 bc1f $fcc1,text_label
42 bc1fl $fcc1,text_label
43 bc1t $fcc1,text_label
44 bc1tl $fcc2,text_label
45 c.f.d $f4,$f6
46 c.f.d $fcc1,$f4,$f6
47 ldxc1 $f2,$4($5)
48 lwxc1 $f2,$4($5)
49 madd.d $f0,$f2,$f4,$f6
50 madd.s $f0,$f2,$f4,$f6
51 movf $4,$5,$fcc4
52 movf.d $f4,$f6,$fcc0
53 movf.s $f4,$f6,$fcc0
54 movn $4,$6,$6
55 movn.d $f4,$f6,$6
56 movn.s $f4,$f6,$6
57 movt $4,$5,$fcc4
58 movt.d $f4,$f6,$fcc0
59 movt.s $f4,$f6,$fcc0
60 movz $4,$6,$6
61 movz.d $f4,$f6,$6
62 movz.s $f4,$f6,$6
63 msub.d $f0,$f2,$f4,$f6
64 msub.s $f0,$f2,$f4,$f6
65 nmadd.d $f0,$f2,$f4,$f6
66 nmadd.s $f0,$f2,$f4,$f6
67 nmsub.d $f0,$f2,$f4,$f6
68 nmsub.s $f0,$f2,$f4,$f6
69
70 # We don't test pref because currently the disassembler will
71 # disassemble it as lwc3. lwc3 is correct for mips1 to mips3,
72 # while pref is correct for mips4. Unfortunately, the
73 # disassembler does not know which architecture it is
74 # disassembling for.
75 # pref 4,0($4)
76
77 prefx 4,$4($5)
78 recip.d $f4,$f6
79 recip.s $f4,$f6
80 rsqrt.d $f4,$f6
81 rsqrt.s $f4,$f6
82 sdxc1 $f4,$4($5)
83 swxc1 $f4,$4($5)
84
85 # test mips5 instructions.
86
87 .set arch=mips5
88
89 abs.ps $f0, $f2
90 add.ps $f2, $f4, $f6
91 alnv.ps $f6, $f8, $f10, $3
92 c.eq.ps $f8, $f10
93 c.eq.ps $fcc2, $f10, $f12
94 c.f.ps $f8, $f10
95 c.f.ps $fcc2, $f10, $f12
96 c.le.ps $f8, $f10
97 c.le.ps $fcc2, $f10, $f12
98 c.lt.ps $f8, $f10
99 c.lt.ps $fcc2, $f10, $f12
100 c.nge.ps $f8, $f10
101 c.nge.ps $fcc2, $f10, $f12
102 c.ngl.ps $f8, $f10
103 c.ngl.ps $fcc2, $f10, $f12
104 c.ngle.ps $f8, $f10
105 c.ngle.ps $fcc2, $f10, $f12
106 c.ngt.ps $f8, $f10
107 c.ngt.ps $fcc2, $f10, $f12
108 c.ole.ps $f8, $f10
109 c.ole.ps $fcc2, $f10, $f12
110 c.olt.ps $f8, $f10
111 c.olt.ps $fcc2, $f10, $f12
112 c.seq.ps $f8, $f10
113 c.seq.ps $fcc2, $f10, $f12
114 c.sf.ps $f8, $f10
115 c.sf.ps $fcc2, $f10, $f12
116 c.ueq.ps $f8, $f10
117 c.ueq.ps $fcc2, $f10, $f12
118 c.ule.ps $f8, $f10
119 c.ule.ps $fcc2, $f10, $f12
120 c.ult.ps $f8, $f10
121 c.ult.ps $fcc2, $f10, $f12
122 c.un.ps $f8, $f10
123 c.un.ps $fcc2, $f10, $f12
124 cvt.ps.s $f12, $f14, $f16
125 cvt.s.pl $f16, $f18
126 cvt.s.pu $f18, $f20
127 luxc1 $f20, $4($5)
128 madd.ps $f20, $f22, $f24, $f26
129 mov.ps $f24, $f26
130 movf.ps $f26, $f28, $fcc2
131 movn.ps $f26, $f28, $3
132 movt.ps $f28, $f30, $fcc4
133 movz.ps $f28, $f30, $5
134 msub.ps $f30, $f0, $f2, $f4
135 mul.ps $f2, $f4, $f6
136 neg.ps $f6, $f8
137 nmadd.ps $f6, $f8, $f10, $f12
138 nmsub.ps $f6, $f8, $f10, $f12
139 pll.ps $f10, $f12, $f14
140 plu.ps $f14, $f16, $f18
141 pul.ps $f16, $f18, $f20
142 puu.ps $f20, $f22, $f24
143 sub.ps $f22, $f24, $f26
144 suxc1 $f26, $6($7)
145
146 c.eq.ps $fcc3, $f10, $f12 # warns
147 movf.ps $f26, $f28, $fcc3 # warns
148
149 # test assembly of mips32 instructions
150
151 .set arch=mips32
152
153 # unprivileged CPU instructions
154
155 clo $1, $2
156 clz $3, $4
157 madd $5, $6
158 maddu $7, $8
159 msub $9, $10
160 msubu $11, $12
161 mul $13, $14, $15
162 pref 4, ($16)
163 pref 4, 32767($17)
164 pref 4, -32768($18)
165 ssnop
166
167 # unprivileged coprocessor instructions.
168 # these tests use cp2 to avoid other (cp0, fpu, prefetch) opcodes.
169
170 bc2f text_label
171 nop
172 bc2fl text_label
173 nop
174 bc2t text_label
175 nop
176 bc2tl text_label
177 nop
178 # XXX other BCzCond encodings not currently expressable
179 cfc2 $1, $2
180 cop2 0x1234567 # disassembles as c2 ...
181 ctc2 $2, $3
182 mfc2 $3, $4
183 mfc2 $4, $5, 0 # disassembles without sel
184 mfc2 $5, $6, 7
185 mtc2 $6, $7
186 mtc2 $7, $8, 0 # disassembles without sel
187 mtc2 $8, $9, 7
188
189 # privileged instructions
190
191 cache 5, ($1)
192 cache 5, 32767($2)
193 cache 5, -32768($3)
194 eret
195 tlbp
196 tlbr
197 tlbwi
198 tlbwr
199 wait
200 wait 0 # disassembles without code
201 wait 0x56789
202
203 # For a while break for the mips32 ISA interpreted a single argument
204 # as a 20-bit code, placing it in the opcode differently to
205 # traditional ISAs. This turned out to cause problems, so it has
206 # been removed. This test is to assure consistent interpretation.
207 break
208 break 0 # disassembles without code
209 break 0x345
210 break 0x48,0x345 # this still specifies a 20-bit code
211
212 # Instructions in previous ISAs or CPUs which are now slightly
213 # different.
214 sdbbp
215 sdbbp 0 # disassembles without code
216 sdbbp 0x56789
217
218 # test assembly of mips32r2 instructions
219
220 .set arch=mips32r2
221
222 # unprivileged CPU instructions
223
224 ehb
225
226 ext $4, $5, 6, 8
227
228 ins $4, $5, 6, 8
229
230 jalr.hb $8
231 jalr.hb $20, $9
232
233 jr.hb $8
234
235 # Note, further testing of rdhwr is done in hwr-names-mips32r2.d
236 rdhwr $10, $0
237 rdhwr $11, $1
238 rdhwr $12, $2
239 rdhwr $13, $3
240 rdhwr $14, $4
241 rdhwr $15, $5
242
243 # This file checks that in fact HW rotate will
244 # be used for this arch, and checks assembly
245 # of the official MIPS mnemonics. (Note that disassembly
246 # uses the traditional "ror" and "rorv" mnemonics.)
247 # Additional rotate tests are done by rol-hw.d.
248 rotl $25, $10, 4
249 rotr $25, $10, 4
250 rotl $25, $10, $4
251 rotr $25, $10, $4
252 rotrv $25, $10, $4
253
254 seb $7
255 seb $8, $10
256
257 seh $7
258 seh $8, $10
259
260 synci 0x5555($10)
261
262 wsbh $7
263 wsbh $8, $10
264
265 # cp0 instructions
266
267 di
268 di $0
269 di $10
270
271 ei
272 ei $0
273 ei $10
274
275 rdpgpr $10, $25
276
277 wrpgpr $10, $25
278
279 # FPU (cp1) instructions
280 #
281 # Even registers are supported w/ 32-bit FPU, odd
282 # registers supported only for 64-bit FPU.
283 # Only the 32-bit FPU instructions are tested here.
284
285 mfhc1 $17, $f0
286 mthc1 $17, $f0
287
288 # cp2 instructions
289
290 mfhc2 $17, 0x5555
291 mthc2 $17, 0x5555
292
293 .set arch=mips64
294
295 # test assembly of mips64 instructions
296
297 # unprivileged CPU instructions
298
299 dclo $1, $2
300 dclz $3, $4
301
302 # unprivileged coprocessor instructions.
303 # these tests use cp2 to avoid other (cp0, fpu, prefetch) opcodes.
304
305 dmfc2 $3, $4
306 dmfc2 $4, $5, 0 # disassembles without sel
307 dmfc2 $5, $6, 7
308 dmtc2 $6, $7
309 dmtc2 $7, $8, 0 # disassembles without sel
310 dmtc2 $8, $9, 7
311
312 .set arch=vr4111
313
314 dmadd16 $4,$5
315 madd16 $5,$6
316
317 .set arch=vr4120
318
319 # Include mflos to check for nop insertion.
320 mflo $4
321 dmacc $4,$5,$6
322 dmacchi $4,$5,$6
323 dmacchis $4,$5,$6
324 dmacchiu $4,$5,$6
325 dmacchius $4,$5,$6
326 dmaccs $4,$5,$6
327 dmaccu $4,$5,$6
328 dmaccus $4,$5,$6
329 mflo $4
330 macc $4,$5,$6
331 macchi $4,$5,$6
332 macchis $4,$5,$6
333 macchiu $4,$5,$6
334 macchius $4,$5,$6
335 maccs $4,$5,$6
336 maccu $4,$5,$6
337 maccus $4,$5,$6
338
339 .set arch=vr5400
340
341 /* Integer instructions. */
342
343 mulu $4,$5,$6
344 mulhi $4,$5,$6
345 mulhiu $4,$5,$6
346 muls $4,$5,$6
347 mulsu $4,$5,$6
348 mulshi $4,$5,$6
349 mulshiu $4,$5,$6
350 macc $4,$5,$6
351 maccu $4,$5,$6
352 macchi $4,$5,$6
353 macchiu $4,$5,$6
354 msac $4,$5,$6
355 msacu $4,$5,$6
356 msachi $4,$5,$6
357 msachiu $4,$5,$6
358
359 ror $4,$5,25
360 rorv $4,$5,$6
361 dror $4,$5,25
362 dror $4,$5,57 /* Should expand to dror32 $4,$5,25. */
363 dror32 $4,$5,25
364 drorv $4,$5,$6
365
366 /* Debug instructions. */
367
368 dbreak
369 dret
370 mfdr $3,$3
371 mtdr $3,$3
372
373 /* Coprocessor 0 instructions, minus standard ISA 3 ones.
374 That leaves just the performance monitoring registers. */
375
376 mfpc $4,1
377 mfps $4,1
378 mtpc $4,1
379 mtps $4,1
380
381 /* Multimedia instructions. */
382
383 .macro nsel2 op
384 /* Test each form of each vector opcode. */
385 \op $f0,$f2
386 \op $f4,$f6[2]
387 \op $f6,15
388 .if 0 /* Which is right?? */
389 /* Test negative numbers in immediate-value slot. */
390 \op $f4,-3
391 .else
392 /* Test that it's recognized as an unsigned field. */
393 \op $f4,31
394 .endif
395 .endm
396
397 .macro nsel3 op
398 /* Test each form of each vector opcode. */
399 \op $f0,$f2,$f4
400 \op $f2,$f4,$f6[2]
401 \op $f6,$f4,15
402 .if 0 /* Which is right?? */
403 /* Test negative numbers in immediate-value slot. */
404 \op $f4,$f6,-3
405 .else
406 /* Test that it's recognized as an unsigned field. */
407 \op $f4,$f6,31
408 .endif
409 .endm
410
411 nsel3 add.ob
412 nsel3 and.ob
413 nsel2 c.eq.ob
414 nsel2 c.le.ob
415 nsel2 c.lt.ob
416 nsel3 max.ob
417 nsel3 min.ob
418 nsel3 mul.ob
419 nsel2 mula.ob
420 nsel2 mull.ob
421 nsel2 muls.ob
422 nsel2 mulsl.ob
423 nsel3 nor.ob
424 nsel3 or.ob
425 nsel3 pickf.ob
426 nsel3 pickt.ob
427 nsel3 sub.ob
428 nsel3 xor.ob
429
430 /* ALNI, SHFL: Vector only. */
431 alni.ob $f0,$f2,$f4,5
432 shfl.mixh.ob $f0,$f2,$f4
433 shfl.mixl.ob $f0,$f2,$f4
434 shfl.pach.ob $f0,$f2,$f4
435 shfl.pacl.ob $f0,$f2,$f4
436
437 /* SLL,SRL: Scalar or immediate. */
438 sll.ob $f2,$f4,$f6[3]
439 sll.ob $f4,$f6,14
440 srl.ob $f2,$f4,$f6[3]
441 srl.ob $f4,$f6,14
442
443 /* RZU: Immediate, must be 0, 8, or 16. */
444 rzu.ob $f2,13
445
446 /* No selector. */
447 rach.ob $f2
448 racl.ob $f2
449 racm.ob $f2
450 wach.ob $f2
451 wacl.ob $f2,$f4
452
453 ror $4,$5,$6
454 rol $4,$5,15
455 dror $4,$5,$6
456 drol $4,$5,31
457 drol $4,$5,62
458
459 .set arch=vr5500
460
461 /* Prefetch instructions. */
462 # We don't test pref because currently the disassembler will
463 # disassemble it as lwc3. lwc3 is correct for mips1 to mips3,
464 # while pref is correct for mips4. Unfortunately, the
465 # disassembler does not know which architecture it is
466 # disassembling for.
467 # pref 4,0($4)
468
469 prefx 4,$4($5)
470
471 /* Miscellaneous instructions. */
472
473 wait
474 wait 0 # disassembles without code
475 wait 0x56789
476
477 ssnop
478
479 clo $3,$4
480 dclo $3,$4
481 clz $3,$4
482 dclz $3,$4
483
484 luxc1 $f0,$4($2)
485 suxc1 $f2,$4($2)
486
487 tlbp
488 tlbr
489
490 .set arch=default
491
492 # make objdump print ...
493 .space 8
This page took 0.040273 seconds and 4 git commands to generate.