blob: cd028cbc8ee00717f8bb943d996847ae92301247 [file] [log] [blame]
.set noreorder
.set noat
.globl text_label .text
text_label:
# VU Macromode instruction set
vabs.xyzw $vf0xyzw,$vf31xyzw
vadd.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vaddi.xyzw $vf10xyzw,$vf31xyzw,$I
vaddq.xyzw $vf10xyzw,$vf31xyzw,$Q
vaddw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vaddx.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vaddy.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vaddz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vadda.xyzw $ACCxyzw,$vf0xyzw,$vf31xyzw
vaddai.xyzw $ACCxyzw,$vf31xyzw,$I
vaddaq.xyzw $ACCxyzw,$vf31xyzw,$Q
vaddaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w
vaddax.xyzw $ACCxyzw,$vf31xyzw,$vf1x
vadday.xyzw $ACCxyzw,$vf31xyzw,$vf1y
vaddaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z
vcallms 0x0
vcallms 0x340
vcallms 0xff8
vcallmsr $vi27
vclipw.xyz $vf31xyz,$vf1w
vclipw $vf31xyz,$vf1w
vdiv $Q,$vf1y,$vf11x
vftoi0.xyzw $vf0xyzw,$vf31xyzw
vftoi4.xyzw $vf0xyzw,$vf31xyzw
vftoi12.xyzw $vf0xyzw,$vf31xyzw
vftoi15.xyzw $vf0xyzw,$vf31xyzw
viadd $vi1,$vi15,$vi0
viaddi $vi0,$vi15,-1
viand $vi1,$vi15,$vi0
vilwr.w $vi0,($vi15)
vilwr.x $vi0,($vi15)
vilwr.y $vi0,($vi15)
vilwr.z $vi0,($vi15)
vior $vi1,$vi15,$vi0
viswr.w $vi0,($vi15)
viswr.x $vi0,($vi15)
viswr.y $vi0,($vi15)
viswr.z $vi0,($vi15)
visub $vi1,$vi15,$vi0
vitof0.xyzw $vf0xyzw,$vf31xyzw
vitof4.xyzw $vf0xyzw,$vf31xyzw
vitof12.xyzw $vf0xyzw,$vf31xyzw
vitof15.xyzw $vf0xyzw,$vf31xyzw
vlqd.xyzw $vf0xyzw,(--$vi15)
vlqi.xyzw $vf0xyzw,($vi15++)
vmadd.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vmaddi.xyzw $vf10xyzw,$vf31xyzw,$I
vmaddq.xyzw $vf10xyzw,$vf31xyzw,$Q
vmaddw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vmaddx.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vmaddy.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vmaddz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vmaddz $vf6, $vf3, $vf5
vmadda.xyzw $ACCxyzw,$vf31xyzw,$vf0xyzw
vmaddai.xyzw $ACCxyzw,$vf31xyzw,$I
vmaddaq.xyzw $ACCxyzw,$vf31xyzw,$Q
vmaddaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w
vmaddax.xyzw $ACCxyzw,$vf31xyzw,$vf1x
vmaddax $ACC, $vf1, $vf5
vmadday.xyzw $ACCxyzw,$vf31xyzw,$vf1y
vmadday $ACC, $vf2, $vf5
vmaddaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z
vmax.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vmaxi.xyzw $vf10xyzw,$vf31xyzw,$I
vmaxw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vmaxx.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vmaxy.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vmaxz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vmfir.xyzw $vf0xyzw,$vi15
vmini.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vminii.xyzw $vf10xyzw,$vf31xyzw,$I
vminiw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vminix.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vminiy.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vminiz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vmove.xyzw $vf0xyzw,$vf31xyzw
vmr32.xyzw $vf0xyzw,$vf31xyzw
vmsub.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vmsubi.xyzw $vf10xyzw,$vf31xyzw,$I
vmsubq.xyzw $vf10xyzw,$vf31xyzw,$Q
vmsubw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vmsubx.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vmsuby.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vmsubz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vmsuba.xyzw $ACCxyzw,$vf0xyzw,$vf31xyzw
vmsubai.xyzw $ACCxyzw,$vf31xyzw,$I
vmsubaq.xyzw $ACCxyzw,$vf31xyzw,$Q
vmsubaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w
vmsubax.xyzw $ACCxyzw,$vf31xyzw,$vf1x
vmsubay.xyzw $ACCxyzw,$vf31xyzw,$vf1y
vmsubaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z
vmtir $vi0,$vf1z
vmul.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vmuli.xyzw $vf10xyzw,$vf31xyzw,$I
vmulq.xyzw $vf10xyzw,$vf31xyzw,$Q
vmulw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vmulx.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vmuly.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vmulz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vmula.xyzw $ACCxyzw,$vf31xyzw,$vf0xyzw
vmulai.xyzw $ACCxyzw,$vf31xyzw,$I
vmulaq.xyzw $ACCxyzw,$vf31xyzw,$Q
vmulaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w
vmulaw $ACC, $vf4, $vf0
vmulax.xyzw $ACCxyzw,$vf31xyzw,$vf1x
vmulay.xyzw $ACCxyzw,$vf31xyzw,$vf1y
vmulaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z
vnop
vopmula.xyz $ACCxyz,$vf31xyz,$vf0xyz
vopmsub.xyz $vf10xyz,$vf31xyz,$vf0xyz
vrget.xyzw $vf0xyzw,$R
vrinit $R,$vf1w
vrnext.xyzw $vf0xyzw,$R
vrsqrt $Q,$vf1w,$vf11x
vrxor $R,$vf1x
vsqd.xyzw $vf31xyzw,(--$vi0)
vsqi.xyzw $vf31xyzw,($vi0++)
vsqrt $Q,$vf11z
vsub.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw
vsubi.xyzw $vf10xyzw,$vf31xyzw,$I
vsubq.xyzw $vf10xyzw,$vf31xyzw,$Q
vsubw.xyzw $vf10xyzw,$vf31xyzw,$vf1w
vsubx.xyzw $vf10xyzw,$vf31xyzw,$vf1x
vsuby.xyzw $vf10xyzw,$vf31xyzw,$vf1y
vsubz.xyzw $vf10xyzw,$vf31xyzw,$vf1z
vsuba.xyzw $ACCxyzw,$vf31xyzw,$vf0xyzw
vsubai.xyzw $ACCxyzw,$vf31xyzw,$I
vsubaq.xyzw $ACCxyzw,$vf31xyzw,$Q
vsubaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w
vsubax.xyzw $ACCxyzw,$vf31xyzw,$vf1x
vsubay.xyzw $ACCxyzw,$vf31xyzw,$vf1y
vsubaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z
vwaitq
# Implicit suffixes
vadd.xyzw $vf10,$vf31,$vf0
vadd.xy $vf10,$vf31,$vf0
vadd.xyzw $vf10,$vf31,$vf0
vlqi.xy $vf0,($vi15++)
# VU floating point registers
vadd.xyzw $vf0,$vf1,$vf2
vadd.xyzw $vf3,$vf4,$vf5
vadd.xyzw $vf6,$vf7,$vf8
vadd.xyzw $vf9,$vf10,$vf11
vadd.xyzw $vf12,$vf13,$vf14
vadd.xyzw $vf15,$vf16,$vf17
vadd.xyzw $vf18,$vf19,$vf20
vadd.xyzw $vf21,$vf22,$vf23
vadd.xyzw $vf24,$vf25,$vf26
vadd.xyzw $vf27,$vf28,$vf29
vadd.xyzw $vf30,$vf31,$vf0
# VU integer registers
viadd $vi0,$vi1,$vi2
viadd $vi3,$vi4,$vi5
viadd $vi6,$vi7,$vi8
viadd $vi9,$vi10,$vi11
viadd $vi12,$vi13,$vi14
viadd $vi15,$vi16,$vi17
viadd $vi18,$vi19,$vi20
viadd $vi21,$vi22,$vi23
viadd $vi24,$vi25,$vi26
viadd $vi27,$vi28,$vi29
viadd $vi30,$vi31,$vi0
# Floating point transfer to VU
lqc2 $0,0($0)
lqc2 $1, 0x7fff($1)
lqc2 $8, -0x8000($8)
lqc2 $31, -1($31)
# Floating point transfer from VU
sqc2 $0,0($0)
sqc2 $1, 0x7fff($1)
sqc2 $8, -0x8000($8)
sqc2 $31, -1($31)
# Integer transfer from VU
cfc2 $0,$0
cfc2 $0,$31
cfc2.i $0,$0
cfc2.i $0,$31
cfc2.ni $0,$0
cfc2.ni $0,$31
# Integer transfer to VU
ctc2 $0,$0
ctc2 $0,$31
ctc2.i $0,$0
ctc2.i $0,$31
ctc2.ni $0,$0
ctc2.ni $0,$31
# Floating point transfer from VU
qmfc2 $0,$0
qmfc2 $0,$31
qmfc2.i $0,$0
qmfc2.i $0,$31
qmfc2.ni $0,$0
qmfc2.ni $0,$31
# Floating point transfer to VU
qmtc2 $0,$0
qmtc2 $0,$31
qmtc2.i $0,$0
qmtc2.i $0,$31
qmtc2.ni $0,$0
qmtc2.ni $0,$31
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
.space 8