1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
.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
|