Commit | Line | Data |
---|---|---|
14daeee3 RS |
1 | .set noreorder |
2 | .set noat | |
3 | ||
4 | .globl text_label .text | |
5 | text_label: | |
6 | ||
7 | # VU Macromode instruction set | |
8 | vabs.xyzw $vf0xyzw,$vf31xyzw | |
9 | vadd.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
10 | vaddi.xyzw $vf10xyzw,$vf31xyzw,$I | |
11 | vaddq.xyzw $vf10xyzw,$vf31xyzw,$Q | |
12 | vaddw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
13 | vaddx.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
14 | vaddy.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
15 | vaddz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
16 | vadda.xyzw $ACCxyzw,$vf0xyzw,$vf31xyzw | |
17 | vaddai.xyzw $ACCxyzw,$vf31xyzw,$I | |
18 | vaddaq.xyzw $ACCxyzw,$vf31xyzw,$Q | |
19 | vaddaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w | |
20 | vaddax.xyzw $ACCxyzw,$vf31xyzw,$vf1x | |
21 | vadday.xyzw $ACCxyzw,$vf31xyzw,$vf1y | |
22 | vaddaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z | |
23 | vcallms 0x0 | |
24 | vcallms 0x340 | |
25 | vcallms 0xff8 | |
26 | vcallmsr $vi27 | |
27 | vclipw.xyz $vf31xyz,$vf1w | |
ee5734f0 RS |
28 | vclipw $vf31xyz,$vf1w |
29 | vdiv $Q,$vf1y,$vf11x | |
14daeee3 RS |
30 | vftoi0.xyzw $vf0xyzw,$vf31xyzw |
31 | vftoi4.xyzw $vf0xyzw,$vf31xyzw | |
32 | vftoi12.xyzw $vf0xyzw,$vf31xyzw | |
33 | vftoi15.xyzw $vf0xyzw,$vf31xyzw | |
34 | viadd $vi1,$vi15,$vi0 | |
35 | viaddi $vi0,$vi15,-1 | |
36 | viand $vi1,$vi15,$vi0 | |
37 | vilwr.w $vi0,($vi15) | |
38 | vilwr.x $vi0,($vi15) | |
39 | vilwr.y $vi0,($vi15) | |
40 | vilwr.z $vi0,($vi15) | |
41 | vior $vi1,$vi15,$vi0 | |
42 | viswr.w $vi0,($vi15) | |
43 | viswr.x $vi0,($vi15) | |
44 | viswr.y $vi0,($vi15) | |
45 | viswr.z $vi0,($vi15) | |
46 | visub $vi1,$vi15,$vi0 | |
47 | vitof0.xyzw $vf0xyzw,$vf31xyzw | |
48 | vitof4.xyzw $vf0xyzw,$vf31xyzw | |
49 | vitof12.xyzw $vf0xyzw,$vf31xyzw | |
50 | vitof15.xyzw $vf0xyzw,$vf31xyzw | |
51 | vlqd.xyzw $vf0xyzw,(--$vi15) | |
52 | vlqi.xyzw $vf0xyzw,($vi15++) | |
53 | vmadd.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
54 | vmaddi.xyzw $vf10xyzw,$vf31xyzw,$I | |
55 | vmaddq.xyzw $vf10xyzw,$vf31xyzw,$Q | |
56 | vmaddw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
57 | vmaddx.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
58 | vmaddy.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
59 | vmaddz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
ee5734f0 | 60 | vmaddz $vf6, $vf3, $vf5 |
14daeee3 RS |
61 | vmadda.xyzw $ACCxyzw,$vf31xyzw,$vf0xyzw |
62 | vmaddai.xyzw $ACCxyzw,$vf31xyzw,$I | |
63 | vmaddaq.xyzw $ACCxyzw,$vf31xyzw,$Q | |
64 | vmaddaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w | |
65 | vmaddax.xyzw $ACCxyzw,$vf31xyzw,$vf1x | |
ee5734f0 | 66 | vmaddax $ACC, $vf1, $vf5 |
14daeee3 | 67 | vmadday.xyzw $ACCxyzw,$vf31xyzw,$vf1y |
ee5734f0 | 68 | vmadday $ACC, $vf2, $vf5 |
14daeee3 RS |
69 | vmaddaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z |
70 | vmax.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
71 | vmaxi.xyzw $vf10xyzw,$vf31xyzw,$I | |
72 | vmaxw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
73 | vmaxx.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
74 | vmaxy.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
75 | vmaxz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
76 | vmfir.xyzw $vf0xyzw,$vi15 | |
77 | vmini.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
78 | vminii.xyzw $vf10xyzw,$vf31xyzw,$I | |
79 | vminiw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
80 | vminix.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
81 | vminiy.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
82 | vminiz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
83 | vmove.xyzw $vf0xyzw,$vf31xyzw | |
84 | vmr32.xyzw $vf0xyzw,$vf31xyzw | |
85 | vmsub.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
86 | vmsubi.xyzw $vf10xyzw,$vf31xyzw,$I | |
87 | vmsubq.xyzw $vf10xyzw,$vf31xyzw,$Q | |
88 | vmsubw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
89 | vmsubx.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
90 | vmsuby.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
91 | vmsubz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
92 | vmsuba.xyzw $ACCxyzw,$vf0xyzw,$vf31xyzw | |
93 | vmsubai.xyzw $ACCxyzw,$vf31xyzw,$I | |
94 | vmsubaq.xyzw $ACCxyzw,$vf31xyzw,$Q | |
95 | vmsubaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w | |
96 | vmsubax.xyzw $ACCxyzw,$vf31xyzw,$vf1x | |
97 | vmsubay.xyzw $ACCxyzw,$vf31xyzw,$vf1y | |
98 | vmsubaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z | |
99 | vmtir $vi0,$vf1z | |
100 | vmul.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
101 | vmuli.xyzw $vf10xyzw,$vf31xyzw,$I | |
102 | vmulq.xyzw $vf10xyzw,$vf31xyzw,$Q | |
103 | vmulw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
104 | vmulx.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
105 | vmuly.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
106 | vmulz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
107 | vmula.xyzw $ACCxyzw,$vf31xyzw,$vf0xyzw | |
108 | vmulai.xyzw $ACCxyzw,$vf31xyzw,$I | |
109 | vmulaq.xyzw $ACCxyzw,$vf31xyzw,$Q | |
110 | vmulaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w | |
ee5734f0 | 111 | vmulaw $ACC, $vf4, $vf0 |
14daeee3 RS |
112 | vmulax.xyzw $ACCxyzw,$vf31xyzw,$vf1x |
113 | vmulay.xyzw $ACCxyzw,$vf31xyzw,$vf1y | |
114 | vmulaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z | |
115 | vnop | |
116 | vopmula.xyz $ACCxyz,$vf31xyz,$vf0xyz | |
117 | vopmsub.xyz $vf10xyz,$vf31xyz,$vf0xyz | |
118 | vrget.xyzw $vf0xyzw,$R | |
119 | vrinit $R,$vf1w | |
120 | vrnext.xyzw $vf0xyzw,$R | |
121 | vrsqrt $Q,$vf1w,$vf11x | |
122 | vrxor $R,$vf1x | |
123 | vsqd.xyzw $vf31xyzw,(--$vi0) | |
124 | vsqi.xyzw $vf31xyzw,($vi0++) | |
125 | vsqrt $Q,$vf11z | |
126 | vsub.xyzw $vf10xyzw,$vf31xyzw,$vf0xyzw | |
127 | vsubi.xyzw $vf10xyzw,$vf31xyzw,$I | |
128 | vsubq.xyzw $vf10xyzw,$vf31xyzw,$Q | |
129 | vsubw.xyzw $vf10xyzw,$vf31xyzw,$vf1w | |
130 | vsubx.xyzw $vf10xyzw,$vf31xyzw,$vf1x | |
131 | vsuby.xyzw $vf10xyzw,$vf31xyzw,$vf1y | |
132 | vsubz.xyzw $vf10xyzw,$vf31xyzw,$vf1z | |
133 | vsuba.xyzw $ACCxyzw,$vf31xyzw,$vf0xyzw | |
134 | vsubai.xyzw $ACCxyzw,$vf31xyzw,$I | |
135 | vsubaq.xyzw $ACCxyzw,$vf31xyzw,$Q | |
136 | vsubaw.xyzw $ACCxyzw,$vf31xyzw,$vf1w | |
137 | vsubax.xyzw $ACCxyzw,$vf31xyzw,$vf1x | |
138 | vsubay.xyzw $ACCxyzw,$vf31xyzw,$vf1y | |
139 | vsubaz.xyzw $ACCxyzw,$vf31xyzw,$vf1z | |
140 | vwaitq | |
141 | ||
142 | # Implicit suffixes | |
143 | vadd.xyzw $vf10,$vf31,$vf0 | |
144 | vadd.xy $vf10,$vf31,$vf0 | |
145 | vadd.xyzw $vf10,$vf31,$vf0 | |
146 | vlqi.xy $vf0,($vi15++) | |
147 | ||
148 | # VU floating point registers | |
149 | vadd.xyzw $vf0,$vf1,$vf2 | |
150 | vadd.xyzw $vf3,$vf4,$vf5 | |
151 | vadd.xyzw $vf6,$vf7,$vf8 | |
152 | vadd.xyzw $vf9,$vf10,$vf11 | |
153 | vadd.xyzw $vf12,$vf13,$vf14 | |
154 | vadd.xyzw $vf15,$vf16,$vf17 | |
155 | vadd.xyzw $vf18,$vf19,$vf20 | |
156 | vadd.xyzw $vf21,$vf22,$vf23 | |
157 | vadd.xyzw $vf24,$vf25,$vf26 | |
158 | vadd.xyzw $vf27,$vf28,$vf29 | |
159 | vadd.xyzw $vf30,$vf31,$vf0 | |
160 | ||
161 | # VU integer registers | |
162 | viadd $vi0,$vi1,$vi2 | |
163 | viadd $vi3,$vi4,$vi5 | |
164 | viadd $vi6,$vi7,$vi8 | |
165 | viadd $vi9,$vi10,$vi11 | |
166 | viadd $vi12,$vi13,$vi14 | |
167 | viadd $vi15,$vi16,$vi17 | |
168 | viadd $vi18,$vi19,$vi20 | |
169 | viadd $vi21,$vi22,$vi23 | |
170 | viadd $vi24,$vi25,$vi26 | |
171 | viadd $vi27,$vi28,$vi29 | |
172 | viadd $vi30,$vi31,$vi0 | |
173 | ||
174 | # Floating point transfer to VU | |
175 | lqc2 $0,0($0) | |
176 | lqc2 $1, 0x7fff($1) | |
177 | lqc2 $8, -0x8000($8) | |
178 | lqc2 $31, -1($31) | |
179 | ||
180 | # Floating point transfer from VU | |
181 | sqc2 $0,0($0) | |
182 | sqc2 $1, 0x7fff($1) | |
183 | sqc2 $8, -0x8000($8) | |
184 | sqc2 $31, -1($31) | |
185 | ||
186 | # Integer transfer from VU | |
187 | cfc2 $0,$0 | |
188 | cfc2 $0,$31 | |
189 | cfc2.i $0,$0 | |
190 | cfc2.i $0,$31 | |
191 | cfc2.ni $0,$0 | |
192 | cfc2.ni $0,$31 | |
193 | ||
194 | # Integer transfer to VU | |
195 | ctc2 $0,$0 | |
196 | ctc2 $0,$31 | |
197 | ctc2.i $0,$0 | |
198 | ctc2.i $0,$31 | |
199 | ctc2.ni $0,$0 | |
200 | ctc2.ni $0,$31 | |
201 | ||
202 | # Floating point transfer from VU | |
203 | qmfc2 $0,$0 | |
204 | qmfc2 $0,$31 | |
205 | qmfc2.i $0,$0 | |
206 | qmfc2.i $0,$31 | |
207 | qmfc2.ni $0,$0 | |
208 | qmfc2.ni $0,$31 | |
209 | ||
210 | # Floating point transfer to VU | |
211 | qmtc2 $0,$0 | |
212 | qmtc2 $0,$31 | |
213 | qmtc2.i $0,$0 | |
214 | qmtc2.i $0,$31 | |
215 | qmtc2.ni $0,$0 | |
216 | qmtc2.ni $0,$31 | |
217 | ||
218 | # Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... | |
219 | .space 8 |