Home | History | Annotate | Download | only in m32r
      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
    591