170 lines
2.9 KiB
ArmAsm
170 lines
2.9 KiB
ArmAsm
# Source file to test assembly of SB-1 MDMX subset instructions and extensions.
|
|
#
|
|
# SB-1 implements only the .ob MDMX instructions, and adds three additional
|
|
# MDMX-ish instructions (pabsdiff, pabsdiffc, pavg).
|
|
|
|
.set noreorder
|
|
.set noat
|
|
|
|
.globl text_label .text
|
|
text_label:
|
|
|
|
# The normal MDMX instructions:
|
|
|
|
movf.l $v1, $v12, $fcc5
|
|
|
|
movn.l $v1, $v12, $18
|
|
|
|
movt.l $v1, $v12, $fcc5
|
|
|
|
movz.l $v1, $v12, $18
|
|
|
|
add.ob $v1, $v12, 18
|
|
add.ob $v1, $v12, $v18
|
|
add.ob $v1, $v12, $v18[6]
|
|
|
|
adda.ob $v12, 18
|
|
adda.ob $v12, $v18
|
|
adda.ob $v12, $v18[6]
|
|
|
|
addl.ob $v12, 18
|
|
addl.ob $v12, $v18
|
|
addl.ob $v12, $v18[6]
|
|
|
|
alni.ob $v1, $v12, $v18, 6
|
|
|
|
alnv.ob $v1, $v12, $v18, $21
|
|
|
|
and.ob $v1, $v12, 18
|
|
and.ob $v1, $v12, $v18
|
|
and.ob $v1, $v12, $v18[6]
|
|
|
|
c.eq.ob $v12, 18
|
|
c.eq.ob $v12, $v18
|
|
c.eq.ob $v12, $v18[6]
|
|
|
|
c.le.ob $v12, 18
|
|
c.le.ob $v12, $v18
|
|
c.le.ob $v12, $v18[6]
|
|
|
|
c.lt.ob $v12, 18
|
|
c.lt.ob $v12, $v18
|
|
c.lt.ob $v12, $v18[6]
|
|
|
|
max.ob $v1, $v12, 18
|
|
max.ob $v1, $v12, $v18
|
|
max.ob $v1, $v12, $v18[6]
|
|
|
|
min.ob $v1, $v12, 18
|
|
min.ob $v1, $v12, $v18
|
|
min.ob $v1, $v12, $v18[6]
|
|
|
|
mul.ob $v1, $v12, 18
|
|
mul.ob $v1, $v12, $v18
|
|
mul.ob $v1, $v12, $v18[6]
|
|
|
|
mula.ob $v12, 18
|
|
mula.ob $v12, $v18
|
|
mula.ob $v12, $v18[6]
|
|
|
|
mull.ob $v12, 18
|
|
mull.ob $v12, $v18
|
|
mull.ob $v12, $v18[6]
|
|
|
|
muls.ob $v12, 18
|
|
muls.ob $v12, $v18
|
|
muls.ob $v12, $v18[6]
|
|
|
|
mulsl.ob $v12, 18
|
|
mulsl.ob $v12, $v18
|
|
mulsl.ob $v12, $v18[6]
|
|
|
|
nor.ob $v1, $v12, 18
|
|
nor.ob $v1, $v12, $v18
|
|
nor.ob $v1, $v12, $v18[6]
|
|
|
|
or.ob $v1, $v12, 18
|
|
or.ob $v1, $v12, $v18
|
|
or.ob $v1, $v12, $v18[6]
|
|
|
|
pickf.ob $v1, $v12, 18
|
|
pickf.ob $v1, $v12, $v18
|
|
pickf.ob $v1, $v12, $v18[6]
|
|
|
|
pickt.ob $v1, $v12, 18
|
|
pickt.ob $v1, $v12, $v18
|
|
pickt.ob $v1, $v12, $v18[6]
|
|
|
|
rach.ob $v1
|
|
|
|
racl.ob $v1
|
|
|
|
racm.ob $v1
|
|
|
|
rnau.ob $v1, 18
|
|
rnau.ob $v1, $v18
|
|
rnau.ob $v1, $v18[6]
|
|
|
|
rneu.ob $v1, 18
|
|
rneu.ob $v1, $v18
|
|
rneu.ob $v1, $v18[6]
|
|
|
|
rzu.ob $v1, 18
|
|
rzu.ob $v1, $v18
|
|
rzu.ob $v1, $v18[6]
|
|
|
|
shfl.mixh.ob $v1, $v12, $v18
|
|
|
|
shfl.mixl.ob $v1, $v12, $v18
|
|
|
|
shfl.pach.ob $v1, $v12, $v18
|
|
|
|
shfl.upsl.ob $v1, $v12, $v18
|
|
|
|
sll.ob $v1, $v12, 18
|
|
sll.ob $v1, $v12, $v18
|
|
sll.ob $v1, $v12, $v18[6]
|
|
|
|
srl.ob $v1, $v12, 18
|
|
srl.ob $v1, $v12, $v18
|
|
srl.ob $v1, $v12, $v18[6]
|
|
|
|
sub.ob $v1, $v12, 18
|
|
sub.ob $v1, $v12, $v18
|
|
sub.ob $v1, $v12, $v18[6]
|
|
|
|
suba.ob $v12, 18
|
|
suba.ob $v12, $v18
|
|
suba.ob $v12, $v18[6]
|
|
|
|
subl.ob $v12, 18
|
|
subl.ob $v12, $v18
|
|
subl.ob $v12, $v18[6]
|
|
|
|
wach.ob $v12
|
|
|
|
wacl.ob $v12, $v18
|
|
|
|
xor.ob $v1, $v12, 18
|
|
xor.ob $v1, $v12, $v18
|
|
xor.ob $v1, $v12, $v18[6]
|
|
|
|
|
|
# The extensions:
|
|
|
|
pabsdiff.ob $v1, $v12, 18
|
|
pabsdiff.ob $v1, $v12, $v18
|
|
pabsdiff.ob $v1, $v12, $v18[6]
|
|
|
|
pabsdiffc.ob $v12, 18
|
|
pabsdiffc.ob $v12, $v18
|
|
pabsdiffc.ob $v12, $v18[6]
|
|
|
|
pavg.ob $v1, $v12, 18
|
|
pavg.ob $v1, $v12, $v18
|
|
pavg.ob $v1, $v12, $v18[6]
|
|
|
|
|
|
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
|
|
.space 8
|