Upload Tizen:Base source
[external/binutils.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