* elf64-mips.c (mips_elf64_slurp_one_reloc_table): Call
[deliverable/binutils-gdb.git] / gas / testsuite / gas / mips / set-arch.s
CommitLineData
fef14a42
TS
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
39text_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 # Instructions in previous ISAs or CPUs which are now slightly
204 # different.
205 break
206 break 0 # disassembles without code
207 break 0x12345
208 sdbbp
209 sdbbp 0 # disassembles without code
210 sdbbp 0x56789
211
212 # test assembly of mips32r2 instructions
213
214 .set arch=mips32r2
215
216 # unprivileged CPU instructions
217
218 ehb
219
220 ext $4, $5, 6, 8
221
222 ins $4, $5, 6, 8
223
224 jalr.hb $8
225 jalr.hb $20, $9
226
227 jr.hb $8
228
229 # Note, further testing of rdhwr is done in hwr-names-mips32r2.d
230 rdhwr $10, $0
231 rdhwr $11, $1
232 rdhwr $12, $2
233 rdhwr $13, $3
234 rdhwr $14, $4
235 rdhwr $15, $5
236
237 # This file checks that in fact HW rotate will
238 # be used for this arch, and checks assembly
239 # of the official MIPS mnemonics. (Note that disassembly
240 # uses the traditional "ror" and "rorv" mnemonics.)
241 # Additional rotate tests are done by rol-hw.d.
242 rotl $25, $10, 4
243 rotr $25, $10, 4
244 rotl $25, $10, $4
245 rotr $25, $10, $4
246 rotrv $25, $10, $4
247
248 seb $7
249 seb $8, $10
250
251 seh $7
252 seh $8, $10
253
254 synci 0x5555($10)
255
256 wsbh $7
257 wsbh $8, $10
258
259 # cp0 instructions
260
261 di
262 di $0
263 di $10
264
265 ei
266 ei $0
267 ei $10
268
269 rdpgpr $10, $25
270
271 wrpgpr $10, $25
272
273 # FPU (cp1) instructions
274 #
275 # Even registers are supported w/ 32-bit FPU, odd
276 # registers supported only for 64-bit FPU.
277 # Only the 32-bit FPU instructions are tested here.
278
279 mfhc1 $17, $f0
280 mthc1 $17, $f0
281
282 # cp2 instructions
283
284 mfhc2 $17, 0x5555
285 mthc2 $17, 0x5555
286
287 .set arch=mips64
288
289 # test assembly of mips64 instructions
290
291 # unprivileged CPU instructions
292
293 dclo $1, $2
294 dclz $3, $4
295
296 # unprivileged coprocessor instructions.
297 # these tests use cp2 to avoid other (cp0, fpu, prefetch) opcodes.
298
299 dmfc2 $3, $4
300 dmfc2 $4, $5, 0 # disassembles without sel
301 dmfc2 $5, $6, 7
302 dmtc2 $6, $7
303 dmtc2 $7, $8, 0 # disassembles without sel
304 dmtc2 $8, $9, 7
305
306 .set arch=vr4111
307
308 dmadd16 $4,$5
309 madd16 $5,$6
310
311 .set arch=vr4120
312
313 # Include mflos to check for nop insertion.
314 mflo $4
315 dmacc $4,$5,$6
316 dmacchi $4,$5,$6
317 dmacchis $4,$5,$6
318 dmacchiu $4,$5,$6
319 dmacchius $4,$5,$6
320 dmaccs $4,$5,$6
321 dmaccu $4,$5,$6
322 dmaccus $4,$5,$6
323 mflo $4
324 macc $4,$5,$6
325 macchi $4,$5,$6
326 macchis $4,$5,$6
327 macchiu $4,$5,$6
328 macchius $4,$5,$6
329 maccs $4,$5,$6
330 maccu $4,$5,$6
331 maccus $4,$5,$6
332
333 .set arch=vr5400
334
335 /* Integer instructions. */
336
337 mulu $4,$5,$6
338 mulhi $4,$5,$6
339 mulhiu $4,$5,$6
340 muls $4,$5,$6
341 mulsu $4,$5,$6
342 mulshi $4,$5,$6
343 mulshiu $4,$5,$6
344 macc $4,$5,$6
345 maccu $4,$5,$6
346 macchi $4,$5,$6
347 macchiu $4,$5,$6
348 msac $4,$5,$6
349 msacu $4,$5,$6
350 msachi $4,$5,$6
351 msachiu $4,$5,$6
352
353 ror $4,$5,25
354 rorv $4,$5,$6
355 dror $4,$5,25
356 dror $4,$5,57 /* Should expand to dror32 $4,$5,25. */
357 dror32 $4,$5,25
358 drorv $4,$5,$6
359
360 /* Debug instructions. */
361
362 dbreak
363 dret
364 mfdr $3,$3
365 mtdr $3,$3
366
367 /* Coprocessor 0 instructions, minus standard ISA 3 ones.
368 That leaves just the performance monitoring registers. */
369
370 mfpc $4,1
371 mfps $4,1
372 mtpc $4,1
373 mtps $4,1
374
375 /* Multimedia instructions. */
376
377 .macro nsel2 op
378 /* Test each form of each vector opcode. */
379 \op $f0,$f2
380 \op $f4,$f6[2]
381 \op $f6,15
382 .if 0 /* Which is right?? */
383 /* Test negative numbers in immediate-value slot. */
384 \op $f4,-3
385 .else
386 /* Test that it's recognized as an unsigned field. */
387 \op $f4,31
388 .endif
389 .endm
390
391 .macro nsel3 op
392 /* Test each form of each vector opcode. */
393 \op $f0,$f2,$f4
394 \op $f2,$f4,$f6[2]
395 \op $f6,$f4,15
396 .if 0 /* Which is right?? */
397 /* Test negative numbers in immediate-value slot. */
398 \op $f4,$f6,-3
399 .else
400 /* Test that it's recognized as an unsigned field. */
401 \op $f4,$f6,31
402 .endif
403 .endm
404
405 nsel3 add.ob
406 nsel3 and.ob
407 nsel2 c.eq.ob
408 nsel2 c.le.ob
409 nsel2 c.lt.ob
410 nsel3 max.ob
411 nsel3 min.ob
412 nsel3 mul.ob
413 nsel2 mula.ob
414 nsel2 mull.ob
415 nsel2 muls.ob
416 nsel2 mulsl.ob
417 nsel3 nor.ob
418 nsel3 or.ob
419 nsel3 pickf.ob
420 nsel3 pickt.ob
421 nsel3 sub.ob
422 nsel3 xor.ob
423
424 /* ALNI, SHFL: Vector only. */
425 alni.ob $f0,$f2,$f4,5
426 shfl.mixh.ob $f0,$f2,$f4
427 shfl.mixl.ob $f0,$f2,$f4
428 shfl.pach.ob $f0,$f2,$f4
429 shfl.pacl.ob $f0,$f2,$f4
430
431 /* SLL,SRL: Scalar or immediate. */
432 sll.ob $f2,$f4,$f6[3]
433 sll.ob $f4,$f6,14
434 srl.ob $f2,$f4,$f6[3]
435 srl.ob $f4,$f6,14
436
437 /* RZU: Immediate, must be 0, 8, or 16. */
438 rzu.ob $f2,13
439
440 /* No selector. */
441 rach.ob $f2
442 racl.ob $f2
443 racm.ob $f2
444 wach.ob $f2
445 wacl.ob $f2,$f4
446
447 ror $4,$5,$6
448 rol $4,$5,15
449 dror $4,$5,$6
450 drol $4,$5,31
451 drol $4,$5,62
452
453 .set arch=vr5500
454
455 /* Prefetch instructions. */
456 # We don't test pref because currently the disassembler will
457 # disassemble it as lwc3. lwc3 is correct for mips1 to mips3,
458 # while pref is correct for mips4. Unfortunately, the
459 # disassembler does not know which architecture it is
460 # disassembling for.
461 # pref 4,0($4)
462
463 prefx 4,$4($5)
464
465 /* Miscellaneous instructions. */
466
467 wait
468 wait 0 # disassembles without code
469 wait 0x56789
470
471 ssnop
472
473 clo $3,$4
474 dclo $3,$4
475 clz $3,$4
476 dclz $3,$4
477
478 luxc1 $f0,$4($2)
479 suxc1 $f2,$4($2)
480
481 tlbp
482 tlbr
483
484.set arch=default
485
486# make objdump print ...
487 .space 8
This page took 0.065094 seconds and 4 git commands to generate.