]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gas/testsuite/gas/m32r/m32rx.s
Add support for m32r-linux target, including a RELA ABI and PIC.
[thirdparty/binutils-gdb.git] / gas / testsuite / gas / m32r / m32rx.s
1 # Test new instructions
2 branchpoint:
3
4 .text
5 .global bcl
6 bcl:
7 bcl branchpoint
8
9 .text
10 .global bncl
11 bncl:
12 bncl branchpoint
13
14 .text
15 .global cmpz
16 cmpz:
17 cmpz fp
18
19 .text
20 .global cmpeq
21 cmpeq:
22 cmpeq fp, fp
23
24 .text
25 .global maclh1
26 maclh1:
27 maclh1 fp, fp
28
29 .text
30 .global macsl0
31 msblo:
32 msblo fp, fp
33
34 .text
35 .global mulwu1
36 mulwu1:
37 mulwu1 fp, fp
38
39 .text
40 .global macwu1
41 macwu1:
42 macwu1 fp, fp
43
44 .text
45 .global sadd
46 sadd:
47 sadd
48
49 .text
50 .global satb
51 satb:
52 satb fp, fp
53
54
55 .text
56 .global mulhi
57 mulhi:
58 mulhi fp, fp, a1
59
60 .text
61 .global mullo
62 mullo:
63 mullo fp, fp, a0
64
65 .text
66 .global divh
67 divh:
68 divh fp, fp
69
70 .text
71 .global machi
72 machi:
73 machi fp, fp, a1
74
75 .text
76 .global maclo
77 maclo:
78 maclo fp, fp, a0
79
80 .text
81 .global mvfachi
82 mvfachi:
83 mvfachi fp, a1
84
85 .text
86 .global mvfacmi
87 mvfacmi:
88 mvfacmi fp, a1
89
90 .text
91 .global mvfaclo
92 mvfaclo:
93 mvfaclo fp, a1
94
95 .text
96 .global mvtachi
97 mvtachi:
98 mvtachi fp, a1
99
100 .text
101 .global mvtaclo
102 mvtaclo:
103 mvtaclo fp, a0
104
105 .text
106 .global rac
107 rac:
108 rac a1
109
110 .text
111 .global rac_ds
112 rac_ds:
113 rac a1, a0
114
115 .text
116 .global rac_dsi
117 rac_dsi:
118 rac a0, a1, #1
119
120 .text
121 .global rach
122 rach:
123 rach a1
124
125 .text
126 .global rach_ds
127 rach_ds:
128 rach a0, a1
129
130 .text
131 .global rach_dsi
132 rach_dsi:
133 rach a1, a0, #2
134
135 # Test explicitly parallel and implicitly parallel instructions
136 # Including apparent instruction sequence reordering.
137 .text
138 .global bc__add
139 bc__add:
140 bc bcl || add fp, fp
141 # Use bc.s here as bc is relaxable and thus a nop will be emitted.
142 bc.s bcl
143 add fp, fp
144
145 .text
146 .global bcl__addi
147 bcl__addi:
148 bcl bcl || addi fp, #77
149 addi fp, #77
150 # Use bcl.s here as bcl is relaxable and thus the parallelization won't happen.
151 bcl.s bcl
152
153 .text
154 .global bl__addv
155 bl__addv:
156 bl bcl || addv fp, fp
157 addv fp, fp
158 # Use bl.s here as bl is relaxable and thus the parallelization won't happen.
159 bl.s bcl
160
161 .text
162 .global bnc__addx
163 bnc__addx:
164 bnc bcl || addx fp, fp
165 # Use bnc.s here as bnc is relaxable and thus the parallelization attempt won't
166 # happen. Things still won't be parallelized, but we want this test to try.
167 bnc.s bcl
168 addx fp, fp
169
170 .text
171 .global bncl__and
172 bncl__and:
173 bncl bcl || and fp, fp
174 and fp, fp
175 bncl.s bcl
176
177 .text
178 .global bra__cmp
179 bra__cmp:
180 bra bcl || cmp fp, fp
181 cmp fp, fp
182 # Use bra.s here as bra is relaxable and thus the parallelization won't happen.
183 bra.s bcl
184
185 .text
186 .global jl__cmpeq
187 jl__cmpeq:
188 jl fp || cmpeq fp, fp
189 cmpeq fp, fp
190 jl fp
191
192 .text
193 .global jmp__cmpu
194 jmp__cmpu:
195 jmp fp || cmpu fp, fp
196 cmpu fp, fp
197 jmp fp
198
199 .text
200 .global ld__cmpz
201 ld__cmpz:
202 ld fp, @fp || cmpz r1
203 cmpz r1
204 ld fp, @fp
205
206 .text
207 .global ld__ldi
208 ld__ldi:
209 ld fp, @r1+ || ldi r2, #77
210 ld fp, @r1+
211 ldi r2, #77
212
213 .text
214 .global ldb__mv
215 ldb__mv:
216 ldb fp, @fp || mv r2, fp
217 ldb fp, @fp
218 mv r2, fp
219
220 .text
221 .global ldh__neg
222 ldh__neg:
223 ldh fp, @fp || neg r2, fp
224 ldh fp, @fp
225 neg r2, fp
226
227 .text
228 .global ldub__nop
229 ldub__nop:
230 ldub fp, @fp || nop
231 ldub fp, @fp
232 nop
233
234 .text
235 .global lduh__not
236 lduh__not:
237 lduh fp, @fp || not r2, fp
238 lduh fp, @fp
239 not r2, fp
240
241 .text
242 .global lock__or
243 lock__or:
244 lock fp, @fp || or r2, fp
245 lock fp, @fp
246 or r2, fp
247
248 .text
249 .global mvfc__sub
250 mvfc__sub:
251 mvfc fp, cr1 || sub r2, fp
252 mvfc fp, cr1
253 sub r2, fp
254
255 .text
256 .global mvtc__subv
257 mvtc__subv:
258 mvtc fp, cr2 || subv r2, fp
259 mvtc fp, cr2
260 subv r2, fp
261
262 .text
263 .global rte__subx
264 rte__subx:
265 rte || sub r2, fp
266 rte
267 subx r2, fp
268
269 .text
270 .global sll__xor
271 sll__xor:
272 sll fp, r1 || xor r2, fp
273 sll fp, r1
274 xor r2, fp
275
276 .text
277 .global slli__machi
278 slli__machi:
279 slli fp, #22 || machi r2, fp
280 slli fp, #22
281 machi r2, fp
282
283 .text
284 .global sra__maclh1
285 sra__maclh1:
286 sra fp, fp || maclh1 r2, fp
287 sra fp, fp
288 maclh1 r2, fp
289
290 .text
291 .global srai__maclo
292 srai__maclo:
293 srai fp, #22 || maclo r2, fp
294 srai fp, #22
295 maclo r2, fp
296
297 .text
298 .global srl__macwhi
299 srl__macwhi:
300 srl fp, fp || macwhi r2, fp
301 srl fp, fp
302 macwhi r2, fp
303
304 .text
305 .global srli__macwlo
306 srli__macwlo:
307 srli fp, #22 || macwlo r2, fp
308 srli fp, #22
309 macwlo r2, fp
310
311 .text
312 .global st__macwu1
313 st__macwu1:
314 st fp, @fp || macwu1 r2, fp
315 st fp, @fp
316 macwu1 r2, fp
317
318 .text
319 .global st__msblo
320 st__msblo:
321 st fp, @+fp || msblo r2, fp
322 st fp, @+fp
323 msblo r2, fp
324
325 .text
326 .global st__mul
327 st__mul:
328 st fp, @-fp || mul r2, fp
329 st fp, @-fp
330 mul r2, fp
331
332 .text
333 .global stb__mulhi
334 stb__mulhi:
335 stb fp, @fp || mulhi r2, fp
336 stb fp, @fp
337 mulhi r2, fp
338
339 .text
340 .global sth__mullo
341 sth__mullo:
342 sth fp, @fp || mullo r2, fp
343 sth fp, @fp
344 mullo r2, fp
345
346 .text
347 .global trap__mulwhi
348 trap__mulwhi:
349 trap #2 || mulwhi r2, fp
350 trap #2
351 mulwhi r2, fp
352
353 .text
354 .global unlock__mulwlo
355 unlock__mulwlo:
356 unlock fp, @fp || mulwlo r2, fp
357 unlock fp, @fp
358 mulwlo r2, fp
359
360 .text
361 .global add__mulwu1
362 add__mulwu1:
363 add fp, fp || mulwu1 r2, fp
364 add fp, fp
365 mulwu1 r2, fp
366
367 .text
368 .global addi__mvfachi
369 addi__mvfachi:
370 addi fp, #77 || mvfachi r2, a0
371 addi fp, #77
372 mvfachi r2, a0
373
374 .text
375 .global addv__mvfaclo
376 addv__mvfaclo:
377 addv fp, fp || mvfaclo r2, a1
378 addv fp, fp
379 mvfaclo r2, a1
380
381 .text
382 .global addx__mvfacmi
383 addx__mvfacmi:
384 addx fp, fp || mvfacmi r2, a0
385 addx fp, fp
386 mvfacmi r2, a0
387
388 .text
389 .global and__mvtachi
390 and__mvtachi:
391 and fp, fp || mvtachi r2, a0
392 and fp, fp
393 mvtachi r2, a0
394
395 .text
396 .global cmp__mvtaclo
397 cmp__mvtaclo:
398 cmp fp, fp || mvtaclo r2, a0
399 cmp fp, fp
400 mvtaclo r2, a0
401
402 .text
403 .global cmpeq__rac
404 cmpeq__rac:
405 cmpeq fp, fp || rac a1
406 cmpeq fp, fp
407 rac a1
408
409 .text
410 .global cmpu__rach
411 cmpu__rach:
412 cmpu fp, fp || rach a0, a1
413 cmpu fp, fp
414 rach a1, a1, #1
415
416 .text
417 .global cmpz__sadd
418 cmpz__sadd:
419 cmpz fp || sadd
420 cmpz fp
421 sadd
422
423
424
425 # Test private instructions
426 .text
427 .global sc
428 sc:
429 sc
430 sadd
431
432 .text
433 .global snc
434 snc:
435 snc
436 sadd
437
438 .text
439 .global jc
440 jc:
441 jc fp
442
443 .text
444 .global jnc
445 jnc:
446 jnc fp
447
448 .text
449 .global pcmpbz
450 pcmpbz:
451 pcmpbz fp
452
453 .text
454 .global sat
455 sat:
456 sat fp, fp
457
458 .text
459 .global sath
460 sath:
461 sath fp, fp
462
463
464 # Test parallel versions of the private instructions
465
466 .text
467 .global jc__pcmpbz
468 jc__pcmpbz:
469 jc fp || pcmpbz fp
470 jc fp
471 pcmpbz fp
472
473 .text
474 .global jnc__ldi
475 jnc__ldi:
476 jnc fp || ldi fp, #77
477 jnc fp
478 ldi fp, #77
479
480 .text
481 .global sc__mv
482 sc__mv:
483 sc || mv fp, r2
484 sc
485 mv fp, r2
486
487 .text
488 .global snc__neg
489 snc__neg:
490 snc || neg fp, r2
491 snc
492 neg fp, r2
493
494 # Test automatic and explicit parallelisation of instructions
495 .text
496 .global nop__sadd
497 nop__sadd:
498 nop
499 sadd
500
501 .text
502 .global sadd__nop
503 sadd__nop:
504 sadd
505 nop
506
507 .text
508 .global sadd__nop_reverse
509 sadd__nop_reverse:
510 sadd || nop
511
512 .text
513 .global add__not
514 add__not:
515 add r0, r1
516 not r3, r5
517
518 .text
519 .global add__not__dest_clash
520 add__not_dest_clash:
521 add r3, r4
522 not r3, r5
523
524 .text
525 .global add__not__src_clash
526 add__not__src_clash:
527 add r3, r4
528 not r5, r3
529
530 .text
531 .global add__not__no_clash
532 add__not__no_clash:
533 add r3, r4
534 not r4, r5
535
536 .text
537 .global mul__sra
538 mul__sra:
539 mul r1, r2
540 sra r3, r4
541
542 .text
543 .global mul__sra__reverse_src_clash
544 mul__sra__reverse_src_clash:
545 mul r1, r3
546 sra r3, r4
547
548 .text
549 .global bc__add_
550 bc__add_:
551 bc.s label
552 add r1, r2
553
554 .text
555 .global add__bc
556 add__bc:
557 add r3, r4
558 bc.s label
559
560 .text
561 .global bc__add__forced_parallel
562 bc__add__forced_parallel:
563 bc label || add r5, r6
564
565 .text
566 .global add__bc__forced_parallel
567 add__bc__forced_parallel:
568 add r7, r8 || bc label
569 label:
570 nop
571
572 ; Additional testcases.
573 ; These insns were added to the chip later.
574
575 .text
576 mulwhi:
577 mulwhi fp, fp, a0
578 mulwhi fp, fp, a1
579
580 mulwlo:
581 mulwlo fp, fp, a0
582 mulwlo fp, fp, a1
583
584 macwhi:
585 macwhi fp, fp, a0
586 macwhi fp, fp, a1
587
588 macwlo:
589 macwlo fp, fp, a0
590 macwlo fp, fp, a1