]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/asm/internal/asm/testdata/ppc64.s
983a368a99c6fe385a94944bc075b9e2fa82595f
[gostls13.git] / src / cmd / asm / internal / asm / testdata / ppc64.s
1 // Copyright 2015 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // This contains the majority of valid opcode combinations
6 // available in cmd/internal/obj/ppc64/asm9.go with
7 // their valid instruction encodings.
8
9 #include "../../../../../runtime/textflag.h"
10
11 // In case of index mode instructions, usage of
12 // (Rx)(R0) is equivalent to (Rx+R0)
13 // In case of base+displacement mode instructions if
14 // the offset is 0, usage of (Rx) is equivalent to 0(Rx)
15 TEXT asmtest(SB),DUPOK|NOSPLIT,$0
16         // move constants
17         MOVD $1, R3                     // 38600001
18         MOVD $-1, R4                    // 3880ffff
19         MOVD $65535, R5                 // 6005ffff
20         MOVD $65536, R6                 // 64060001
21         MOVD $-32767, R5                // 38a08001
22         MOVD $-32768, R6                // 38c08000
23         MOVD $1234567, R5               // 6405001260a5d687 or 0600001238a0d687
24         MOVW $1, R3                     // 38600001
25         MOVW $-1, R4                    // 3880ffff
26         MOVW $65535, R5                 // 6005ffff
27         MOVW $65536, R6                 // 64060001
28         MOVW $-32767, R5                // 38a08001
29         MOVW $-32768, R6                // 38c08000
30         MOVW $1234567, R5               // 6405001260a5d687 or 0600001238a0d687
31         // Hex constant 0x80000001
32         MOVW $2147483649, R5            // 6405800060a50001 or 0600800038a00001
33         MOVD $2147483649, R5            // 6405800060a50001 or 0600800038a00001
34         // Hex constant 0xFFFFFFFF80000001
35         MOVD $-2147483647, R5           // 3ca0800060a50001 or 0603800038a00001
36         // Hex constant 0xFFFFFFFE00000002 (load of constant on < power10, pli on >= power10
37         MOVD $-8589934590, R5           // 3ca00000e8a50000 or 0602000038a00002
38
39         // TODO: These are preprocessed by the assembler into MOVD $const>>shift, R5; SLD $shift, R5.
40         //       This only captures the MOVD. Should the SLD be appended to the encoding by the test?
41         // Hex constant 0x20004000000
42         MOVD $2199090364416, R5         // 60058001
43         // Hex constant 0xFFFFFE0004000000
44         MOVD $-2198956146688, R5        // 38a08001
45         // TODO: On GOPPC64={power8,power9}, this is preprocessed into MOVD $-1, R5; RLDC R5, $33, $63, R5.
46         //       This only captures the MOVD. Should the RLDC be appended to the encoding by the test?
47         // Hex constant 0xFFFFFFFE00000001
48         MOVD $-8589934591, R5           // 38a0ffff or 0602000038a00001
49
50         MOVD 8(R3), R4                  // e8830008
51         MOVD (R3)(R4), R5               // 7ca4182a
52         MOVD (R3)(R0), R5               // 7ca0182a
53         MOVD (R3), R5                   // e8a30000
54         MOVW 4(R3), R4                  // e8830006
55         MOVW (R3)(R4), R5               // 7ca41aaa
56         MOVW (R3)(R0), R5               // 7ca01aaa
57         MOVW (R3), R5                   // e8a30002
58         MOVWZ 4(R3), R4                 // 80830004
59         MOVWZ (R3)(R4), R5              // 7ca4182e
60         MOVWZ (R3)(R0), R5              // 7ca0182e
61         MOVWZ (R3), R5                  // 80a30000
62         MOVH 4(R3), R4                  // a8830004
63         MOVH (R3)(R4), R5               // 7ca41aae
64         MOVH (R3)(R0), R5               // 7ca01aae
65         MOVH (R3), R5                   // a8a30000
66
67         MOVHZ 2(R3), R4                 // a0830002
68         MOVHZ (R3)(R4), R5              // 7ca41a2e
69         MOVHZ (R3)(R0), R5              // 7ca01a2e
70         MOVHZ (R3), R5                  // a0a30000
71         MOVB 1(R3), R4                  // 888300017c840774
72         MOVB (R3)(R4), R5               // 7ca418ae7ca50774
73         MOVB (R3)(R0), R5               // 7ca018ae7ca50774
74         MOVB (R3), R5                   // 88a300007ca50774
75         MOVBZ 1(R3), R4                 // 88830001
76         MOVBZ (R3)(R4), R5              // 7ca418ae
77         MOVBZ (R3)(R0), R5              // 7ca018ae
78         MOVBZ (R3), R5                  // 88a30000
79         MOVDBR (R3)(R4), R5             // 7ca41c28
80         MOVDBR (R3)(R0), R5             // 7ca01c28
81         MOVDBR (R3), R5                 // 7ca01c28
82         MOVWBR (R3)(R4), R5             // 7ca41c2c
83         MOVWBR (R3)(R0), R5             // 7ca01c2c
84         MOVWBR (R3), R5                 // 7ca01c2c
85         MOVHBR (R3)(R4), R5             // 7ca41e2c
86         MOVHBR (R3)(R0), R5             // 7ca01e2c
87         MOVHBR (R3), R5                 // 7ca01e2c
88         MOVD $foo+4009806848(FP), R5    // 3ca1ef0138a5cc40 or 0600ef0038a1cc40
89         MOVD $foo(SB), R5               // 3ca0000038a50000 or 0610000038a00000
90
91         MOVDU 8(R3), R4                 // e8830009
92         MOVDU (R3)(R4), R5              // 7ca4186a
93         MOVDU (R3)(R0), R5              // 7ca0186a
94         MOVDU (R3), R5                  // e8a30001
95         MOVWU (R3)(R4), R5              // 7ca41aea
96         MOVWU (R3)(R0), R5              // 7ca01aea
97         MOVWZU 4(R3), R4                // 84830004
98         MOVWZU (R3)(R4), R5             // 7ca4186e
99         MOVWZU (R3)(R0), R5             // 7ca0186e
100         MOVWZU (R3), R5                 // 84a30000
101         MOVHU 2(R3), R4                 // ac830002
102         MOVHU (R3)(R4), R5              // 7ca41aee
103         MOVHU (R3)(R0), R5              // 7ca01aee
104         MOVHU (R3), R5                  // aca30000
105         MOVHZU 2(R3), R4                // a4830002
106         MOVHZU (R3)(R4), R5             // 7ca41a6e
107         MOVHZU (R3)(R0), R5             // 7ca01a6e
108         MOVHZU (R3), R5                 // a4a30000
109         MOVBU 1(R3), R4                 // 8c8300017c840774
110         MOVBU (R3)(R4), R5              // 7ca418ee7ca50774
111         MOVBU (R3)(R0), R5              // 7ca018ee7ca50774
112         MOVBU (R3), R5                  // 8ca300007ca50774
113         MOVBZU 1(R3), R4                // 8c830001
114         MOVBZU (R3)(R4), R5             // 7ca418ee
115         MOVBZU (R3)(R0), R5             // 7ca018ee
116         MOVBZU (R3), R5                 // 8ca30000
117
118         MOVD R4, 8(R3)                  // f8830008
119         MOVD R5, (R3)(R4)               // 7ca4192a
120         MOVD R5, (R3)(R0)               // 7ca0192a
121         MOVD R5, (R3)                   // f8a30000
122         MOVW R4, 4(R3)                  // 90830004
123         MOVW R5, (R3)(R4)               // 7ca4192e
124         MOVW R5, (R3)(R0)               // 7ca0192e
125         MOVW R5, (R3)                   // 90a30000
126         MOVH R4, 2(R3)                  // b0830002
127         MOVH R5, (R3)(R4)               // 7ca41b2e
128         MOVH R5, (R3)(R0)               // 7ca01b2e
129         MOVH R5, (R3)                   // b0a30000
130         MOVB R4, 1(R3)                  // 98830001
131         MOVB R5, (R3)(R4)               // 7ca419ae
132         MOVB R5, (R3)(R0)               // 7ca019ae
133         MOVB R5, (R3)                   // 98a30000
134         MOVDBR R5, (R3)(R4)             // 7ca41d28
135         MOVDBR R5, (R3)(R0)             // 7ca01d28
136         MOVDBR R5, (R3)                 // 7ca01d28
137         MOVWBR R5, (R3)(R4)             // 7ca41d2c
138         MOVWBR R5, (R3)(R0)             // 7ca01d2c
139         MOVWBR R5, (R3)                 // 7ca01d2c
140         MOVHBR R5, (R3)(R4)             // 7ca41f2c
141         MOVHBR R5, (R3)(R0)             // 7ca01f2c
142         MOVHBR R5, (R3)                 // 7ca01f2c
143
144         MOVDU R4, 8(R3)                 // f8830009
145         MOVDU R5, (R3)(R4)              // 7ca4196a
146         MOVDU R5, (R3)(R0)              // 7ca0196a
147         MOVDU R5, (R3)                  // f8a30001
148         MOVWU R4, 4(R3)                 // 94830004
149         MOVWU R5, (R3)(R4)              // 7ca4196e
150         MOVWU R5, (R3)(R0)              // 7ca0196e
151         MOVHU R4, 2(R3)                 // b4830002
152         MOVHU R5, (R3)(R4)              // 7ca41b6e
153         MOVHU R5, (R3)(R0)              // 7ca01b6e
154         MOVHU R5, (R3)                  // b4a30000
155         MOVBU R4, 1(R3)                 // 9c830001
156         MOVBU R5, (R3)(R4)              // 7ca419ee
157         MOVBU R5, (R3)(R0)              // 7ca019ee
158         MOVBU R5, (R3)                  // 9ca30000
159
160         MOVB $0, R4                     // 38800000
161         MOVBZ $0, R4                    // 38800000
162         MOVH $0, R4                     // 38800000
163         MOVHZ $0, R4                    // 38800000
164         MOVW $0, R4                     // 38800000
165         MOVWZ $0, R4                    // 38800000
166         MOVD $0, R4                     // 38800000
167         MOVD $0, R0                     // 38000000
168
169         ADD $1, R3                      // 38630001
170         ADD $1, R3, R4                  // 38830001
171         ADD $-1, R4                     // 3884ffff
172         ADD $-1, R4, R5                 // 38a4ffff
173         ADD $65535, R5                  // 601fffff7cbf2a14 or 0600000038a5ffff
174         ADD $65535, R5, R6              // 601fffff7cdf2a14 or 0600000038c5ffff
175         ADD $65536, R6                  // 3cc60001
176         ADD $65536, R6, R7              // 3ce60001
177         ADD $-32767, R5                 // 38a58001
178         ADD $-32767, R5, R4             // 38858001
179         ADD $-32768, R6                 // 38c68000
180         ADD $-32768, R6, R5             // 38a68000
181         // Hex constant 0xFFFFFFFE00000000
182         ADD $-8589934592, R5            // 3fe0fffe600000007bff83e4600000007cbf2a14 or 0602000038a50000
183         // Hex constant 0xFFFFFFFE00010001
184         ADD $-8589869055, R5            // 3fe0fffe63ff00017bff83e463ff00017cbf2a14 or 0602000138a50001
185
186         //TODO: this compiles to add r5,r6,r0. It should be addi r5,r6,0.
187         //      this is OK since r0 == $0, but the latter is preferred.
188         ADD $0, R6, R5                  // 7ca60214
189
190         ADD $1234567, R5                // 641f001263ffd6877cbf2a14 or 0600001238a5d687
191         ADD $1234567, R5, R6            // 641f001263ffd6877cdf2a14 or 0600001238c5d687
192         ADDEX R3, R5, $3, R6            // 7cc32f54
193         ADDEX R3, $3, R5, R6            // 7cc32f54
194         ADDIS $8, R3                    // 3c630008
195         ADDIS $1000, R3, R4             // 3c8303e8
196
197         ANDCC $1, R3                    // 70630001
198         ANDCC $1, R3, R4                // 70640001
199         ANDCC $-1, R4                   // 3be0ffff7fe42039
200         ANDCC $-1, R4, R5               // 3be0ffff7fe52039
201         ANDCC $65535, R5                // 70a5ffff
202         ANDCC $65535, R5, R6            // 70a6ffff
203         ANDCC $65536, R6                // 74c60001
204         ANDCC $65536, R6, R7            // 74c70001
205         ANDCC $-32767, R5               // 3be080017fe52839
206         ANDCC $-32767, R5, R4           // 3be080017fe42839
207         ANDCC $-32768, R6               // 3be080007fe63039
208         ANDCC $-32768, R5, R6           // 3be080007fe62839
209         ANDCC $1234567, R5              // 641f001263ffd6877fe52839
210         ANDCC $1234567, R5, R6          // 641f001263ffd6877fe62839
211         ANDISCC $1, R3                  // 74630001
212         ANDISCC $1000, R3, R4           // 746403e8
213
214         OR $1, R3                       // 60630001
215         OR $1, R3, R4                   // 60640001
216         OR $-1, R4                      // 3be0ffff7fe42378
217         OR $-1, R4, R5                  // 3be0ffff7fe52378
218         OR $65535, R5                   // 60a5ffff
219         OR $65535, R5, R6               // 60a6ffff
220         OR $65536, R6                   // 64c60001
221         OR $65536, R6, R7               // 64c70001
222         OR $-32767, R5                  // 3be080017fe52b78
223         OR $-32767, R5, R6              // 3be080017fe62b78
224         OR $-32768, R6                  // 3be080007fe63378
225         OR $-32768, R6, R7              // 3be080007fe73378
226         OR $1234567, R5                 // 641f001263ffd6877fe52b78
227         OR $1234567, R5, R3             // 641f001263ffd6877fe32b78
228         OR $2147483648, R5, R3          // 641f8000600000007fe32b78
229         OR $2147483649, R5, R3          // 641f800063ff00017fe32b78
230         ORIS $255, R3, R4
231
232         XOR $1, R3                      // 68630001
233         XOR $1, R3, R4                  // 68640001
234         XOR $-1, R4                     // 3be0ffff7fe42278
235         XOR $-1, R4, R5                 // 3be0ffff7fe52278
236         XOR $65535, R5                  // 68a5ffff
237         XOR $65535, R5, R6              // 68a6ffff
238         XOR $65536, R6                  // 6cc60001
239         XOR $65536, R6, R7              // 6cc70001
240         XOR $-32767, R5                 // 3be080017fe52a78
241         XOR $-32767, R5, R6             // 3be080017fe62a78
242         XOR $-32768, R6                 // 3be080007fe63278
243         XOR $-32768, R6, R7             // 3be080007fe73278
244         XOR $1234567, R5                // 641f001263ffd6877fe52a78
245         XOR $1234567, R5, R3            // 641f001263ffd6877fe32a78
246         XORIS $15, R3, R4
247
248         // TODO: the order of CR operands don't match
249         CMP R3, R4                      // 7c232000
250         CMPU R3, R4                     // 7c232040
251         CMPW R3, R4                     // 7c032000
252         CMPWU R3, R4                    // 7c032040
253         CMPB R3,R4,R4                   // 7c6423f8
254         CMPEQB R3,R4,CR6                // 7f0321c0
255
256         ADD R3, R4                      // 7c841a14
257         ADD R3, R4, R5                  // 7ca41a14
258         ADDC R3, R4                     // 7c841814
259         ADDC R3, R4, R5                 // 7ca41814
260         ADDCC R3, R4, R5                // 7ca41a15
261         ADDE R3, R4                     // 7c841914
262         ADDECC R3, R4                   // 7c841915
263         ADDEV R3, R4                    // 7c841d14
264         ADDEVCC R3, R4                  // 7c841d15
265         ADDV R3, R4                     // 7c841e14
266         ADDVCC R3, R4                   // 7c841e15
267         ADDCCC R3, R4, R5               // 7ca41815
268         ADDCCC $65536, R4, R5           // 641f0001600000007cbf2015
269         ADDCCC $65537, R4, R5           // 641f000163ff00017cbf2015
270         ADDME R3, R4                    // 7c8301d4
271         ADDMECC R3, R4                  // 7c8301d5
272         ADDMEV R3, R4                   // 7c8305d4
273         ADDMEVCC R3, R4                 // 7c8305d5
274         ADDCV R3, R4                    // 7c841c14
275         ADDCVCC R3, R4                  // 7c841c15
276         ADDZE R3, R4                    // 7c830194
277         ADDZECC R3, R4                  // 7c830195
278         ADDZEV R3, R4                   // 7c830594
279         ADDZEVCC R3, R4                 // 7c830595
280         SUBME R3, R4                    // 7c8301d0
281         SUBMECC R3, R4                  // 7c8301d1
282         SUBMEV R3, R4                   // 7c8305d0
283         SUBZE R3, R4                    // 7c830190
284         SUBZECC R3, R4                  // 7c830191
285         SUBZEV R3, R4                   // 7c830590
286         SUBZEVCC R3, R4                 // 7c830591
287
288         AND R3, R4                      // 7c841838
289         AND R3, R4, R5                  // 7c851838
290         ANDN R3, R4, R5                 // 7c851878
291         ANDCC R3, R4, R5                // 7c851839
292         ANDNCC R3, R4, R5               // 7c851879
293         OR R3, R4                       // 7c841b78
294         OR R3, R4, R5                   // 7c851b78
295         ORN R3, R4, R5                  // 7c851b38
296         ORCC R3, R4, R5                 // 7c851b79
297         ORNCC R3, R4, R5                // 7c851b39
298         XOR R3, R4                      // 7c841a78
299         XOR R3, R4, R5                  // 7c851a78
300         XORCC R3, R4, R5                // 7c851a79
301         NAND R3, R4, R5                 // 7c851bb8
302         NANDCC R3, R4, R5               // 7c851bb9
303         EQV R3, R4, R5                  // 7c851a38
304         EQVCC R3, R4, R5                // 7c851a39
305         NOR R3, R4, R5                  // 7c8518f8
306         NORCC R3, R4, R5                // 7c8518f9
307
308         SUB R3, R4                      // 7c832050
309         SUB R3, R4, R5                  // 7ca32050
310         SUBC R3, R4                     // 7c832010
311         SUBC R3, R4, R5                 // 7ca32010
312         SUBCC R3, R4, R5                // 7ca32051
313         SUBVCC R3, R4, R5               // 7ca32451
314         SUBCCC R3, R4, R5               // 7ca32011
315         SUBCV R3, R4, R5                // 7ca32410
316         SUBCVCC R3, R4, R5              // 7ca32411
317         SUBMEVCC R3, R4                 // 7c8305d1
318         SUBV R3, R4, R5                 // 7ca32450
319         SUBE R3, R4, R5                 // 7ca32110
320         SUBECC R3, R4, R5               // 7ca32111
321         SUBEV R3, R4, R5                // 7ca32510
322         SUBEVCC R3, R4, R5              // 7ca32511
323         SUBC R3, $65536, R4             // 3fe00001600000007c83f810
324         SUBC R3, $65537, R4             // 3fe0000163ff00017c83f810
325
326         MULLW R3, R4                    // 7c8419d6
327         MULLW R3, R4, R5                // 7ca419d6
328         MULLW $10, R3                   // 1c63000a
329         MULLW $10000000, R3             // 641f009863ff96807c7f19d6
330
331         MULLWCC R3, R4, R5              // 7ca419d7
332         MULHW R3, R4, R5                // 7ca41896
333
334         MULHWU R3, R4, R5               // 7ca41816
335         MULLD R3, R4                    // 7c8419d2
336         MULLD R4, R4, R5                // 7ca421d2
337         MULLD $20, R4                   // 1c840014
338         MULLD $200000000, R4            // 641f0beb63ffc2007c9f21d2
339
340         MULLDCC R3, R4, R5              // 7ca419d3
341         MULHD R3, R4, R5                // 7ca41892
342         MULHDCC R3, R4, R5              // 7ca41893
343         MULHDU R3, R4, R5               // 7ca41812
344         MULHDUCC R3, R4, R5             // 7ca41813
345
346         MULLWV R3, R4                   // 7c841dd6
347         MULLWV R3, R4, R5               // 7ca41dd6
348         MULLWVCC R3, R4, R5             // 7ca41dd7
349         MULHWUCC R3, R4, R5             // 7ca41817
350         MULLDV R3, R4, R5               // 7ca41dd2
351         MULLDVCC R3, R4, R5             // 7ca41dd3
352
353         DIVD R3,R4                      // 7c841bd2
354         DIVD R3, R4, R5                 // 7ca41bd2
355         DIVW R3, R4                     // 7c841bd6
356         DIVW R3, R4, R5                 // 7ca41bd6
357         DIVDCC R3,R4, R5                // 7ca41bd3
358         DIVWCC R3,R4, R5                // 7ca41bd7
359         DIVDU R3, R4, R5                // 7ca41b92
360         DIVWU R3, R4, R5                // 7ca41b96
361         DIVDV R3, R4, R5                // 7ca41fd2
362         DIVWV R3, R4, R5                // 7ca41fd6
363         DIVDUCC R3, R4, R5              // 7ca41b93
364         DIVWUCC R3, R4, R5              // 7ca41b97
365         DIVDVCC R3, R4, R5              // 7ca41fd3
366         DIVWVCC R3, R4, R5              // 7ca41fd7
367         DIVDUV R3, R4, R5               // 7ca41f92
368         DIVDUVCC R3, R4, R5             // 7ca41f93
369         DIVWUVCC R3, R4, R5             // 7ca41f97
370         DIVWUV   R3, R4, R5             // 7ca41f96
371         DIVDE R3, R4, R5                // 7ca41b52
372         DIVDECC R3, R4, R5              // 7ca41b53
373         DIVDEU R3, R4, R5               // 7ca41b12
374         DIVDEUCC R3, R4, R5             // 7ca41b13
375
376         REM R3, R4, R5                  // 7fe41bd67fff19d67cbf2050
377         REMU R3, R4, R5                 // 7fe41b967fff19d67bff00287cbf2050
378         REMD R3, R4, R5                 // 7fe41bd27fff19d27cbf2050
379         REMDU R3, R4, R5                // 7fe41b927fff19d27cbf2050
380
381         MADDHD R3,R4,R5,R6              // 10c32170
382         MADDHDU R3,R4,R5,R6             // 10c32171
383
384         MODUD R3, R4, R5                // 7ca41a12
385         MODUW R3, R4, R5                // 7ca41a16
386         MODSD R3, R4, R5                // 7ca41e12
387         MODSW R3, R4, R5                // 7ca41e16
388
389         SLW $8, R3, R4                  // 5464402e
390         SLW R3, R4, R5                  // 7c851830
391         SLWCC R3, R4                    // 7c841831
392         SLD $16, R3, R4                 // 786483e4
393         SLD R3, R4, R5                  // 7c851836
394         SLDCC R3, R4                    // 7c841837
395
396         SRW $8, R3, R4                  // 5464c23e
397         SRW R3, R4, R5                  // 7c851c30
398         SRWCC R3, R4                    // 7c841c31
399         SRAW $8, R3, R4                 // 7c644670
400         SRAW R3, R4, R5                 // 7c851e30
401         SRAWCC R3, R4                   // 7c841e31
402         SRD $16, R3, R4                 // 78648402
403         SRD R3, R4, R5                  // 7c851c36
404         SRDCC R3, R4                    // 7c841c37
405         SRAD $16, R3, R4                // 7c648674
406         SRAD R3, R4, R5                 // 7c851e34
407         SRDCC R3, R4                    // 7c841c37
408         ROTLW $16, R3, R4               // 5464803e
409         ROTLW R3, R4, R5                // 5c85183e
410         ROTL $16, R3, R4                // 78648000
411         EXTSWSLI $3, R4, R5             // 7c851ef4
412         EXTSWSLICC $16, R3, R4          // 7c6486f5
413         EXTSB R3, R4                    // 7c640774
414         EXTSBCC R3, R4                  // 7c640775
415         EXTSH R3, R4                    // 7c640734
416         EXTSHCC R3, R4                  // 7c640735
417         EXTSW R3, R4                    // 7c6407b4
418         EXTSWCC R3, R4                  // 7c6407b5
419         RLWMI $7, R3, $4026531855, R6   // 50663f06
420         RLWMI $7, R3, $1, R6            // 50663ffe
421         RLWMI $7, R3, $2147483648, R6   // 50663800
422         RLWMI $7, R3, $65535, R6        // 50663c3e
423         RLWMI $7, R3, $16, $31, R6      // 50663c3e
424         RLWMICC $7, R3, $65535, R6      // 50663c3f
425         RLWMICC $7, R3, $16, $31, R6    // 50663c3f
426         RLWNM $3, R4, $7, R6            // 54861f7e
427         RLWNM $0, R4, $7, R6            // 5486077e
428         RLWNM R0, R4, $7, R6            // 5c86077e
429         RLWNM $3, R4, $29, $31, R6      // 54861f7e
430         RLWNM $0, R4, $29, $31, R6      // 5486077e
431         RLWNM R0, R4, $29, $31, R6      // 5c86077e
432         RLWNM R3, R4, $7, R6            // 5c861f7e
433         RLWNM R3, R4, $29, $31, R6      // 5c861f7e
434         RLWNMCC $3, R4, $7, R6          // 54861f7f
435         RLWNMCC $3, R4, $29, $31, R6    // 54861f7f
436         RLWNMCC R3, R4, $7, R6          // 5c861f7f
437         RLWNMCC R3, R4, $29, $31, R6    // 5c861f7f
438         RLDMI $0, R4, $7, R6            // 7886076c
439         RLDMICC $0, R4, $7, R6          // 7886076d
440         RLDIMI $0, R4, $7, R6           // 788601cc
441         RLDIMICC $0, R4, $7, R6         // 788601cd
442         RLDC $0, R4, $15, R6            // 78860728
443         RLDC R3, $32, $12, R4           // 7864030a
444         RLDC R3, $8, $32, R4            // 78644028
445         RLDCCC R3, $32, $12, R4         // 7864030b
446         RLDCCC R3, $8, $32, R4          // 78644029
447         RLDCCC $0, R4, $15, R6          // 78860729
448         RLDCL $0, R4, $7, R6            // 78860770
449         RLDCLCC $0, R4, $15, R6         // 78860721
450         RLDCR $0, R4, $-16, R6          // 788606f2
451         RLDCRCC $0, R4, $-16, R6        // 788606f3
452         RLDICL $0, R4, $15, R6          // 788603c0
453         RLDICLCC $0, R4, $15, R6        // 788603c1
454         RLDICR $0, R4, $15, R6          // 788603c4
455         RLDICRCC $0, R4, $15, R6        // 788603c5
456         RLDIC $0, R4, $15, R6           // 788603c8
457         RLDICCC $0, R4, $15, R6         // 788603c9
458         CLRLSLWI $16, R5, $8, R4        // 54a4422e
459         CLRLSLDI $24, R4, $2, R3        // 78831588
460         RLDCR   $1, R1, $-16, R1        // 78210ee4
461         RLDCRCC $1, R1, $-16, R1        // 78210ee5
462         CNTLZW R3,R4                    // 7c640034
463         CNTLZWCC R3,R4                  // 7c640035
464         CNTLZD R3, R4                   // 7c640074
465         CNTLZDCC R3, R4                 // 7c640075
466         CNTTZW R3,R4                    // 7c640434
467         CNTTZWCC R3,R4                  // 7c640435
468         CNTTZD R3,R4                    // 7c640474
469         CNTTZDCC R3,R4                  // 7c640475
470         NEG R3, R4                      // 7c8300d0
471         NEGCC R3, R4                    // 7c8300d1
472         NEGV R3, R4                     // 7c8304d0
473         NEGVCC R3, R4                   // 7c8304d1
474
475         BEQ 0(PC)                       // 41820000
476         BEQ CR1,0(PC)                   // 41860000
477         BGE 0(PC)                       // 40800000
478         BGE CR2,0(PC)                   // 40880000
479         BGT 4(PC)                       // 41810010
480         BGT CR3,4(PC)                   // 418d0010
481         BLE 0(PC)                       // 40810000
482         BLE CR4,0(PC)                   // 40910000
483         BLT 0(PC)                       // 41800000
484         BLT CR5,0(PC)                   // 41940000
485         BNE 0(PC)                       // 40820000
486         BLT CR6,0(PC)                   // 41980000
487         BVC 0(PC)                       // 40830000
488         BVS 0(PC)                       // 41830000
489         JMP 8(PC)                       // 48000010
490
491         NOP
492         NOP R2
493         NOP F2
494         NOP $4
495
496         CRAND CR0GT, CR0EQ, CR0SO       // 4c620a02
497         CRANDN CR0GT, CR0EQ, CR0SO      // 4c620902
498         CREQV CR0GT, CR0EQ, CR0SO       // 4c620a42
499         CRNAND CR0GT, CR0EQ, CR0SO      // 4c6209c2
500         CRNOR CR0GT, CR0EQ, CR0SO       // 4c620842
501         CROR CR0GT, CR0EQ, CR0SO        // 4c620b82
502         CRORN CR0GT, CR0EQ, CR0SO       // 4c620b42
503         CRXOR CR0GT, CR0EQ, CR0SO       // 4c620982
504
505         ISEL $0, R3, R4, R5             // 7ca3201e
506         ISEL $1, R3, R4, R5             // 7ca3205e
507         ISEL $2, R3, R4, R5             // 7ca3209e
508         ISEL $3, R3, R4, R5             // 7ca320de
509         ISEL $4, R3, R4, R5             // 7ca3211e
510         ISEL $31, R3, R4, R5            // 7ca327de
511         ISEL CR0LT, R3, R4, R5          // 7ca3201e
512         ISEL CR0GT, R3, R4, R5          // 7ca3205e
513         ISEL CR0EQ, R3, R4, R5          // 7ca3209e
514         ISEL CR0SO, R3, R4, R5          // 7ca320de
515         ISEL CR1LT, R3, R4, R5          // 7ca3211e
516         ISEL CR7SO, R3, R4, R5          // 7ca327de
517         POPCNTB R3, R4                  // 7c6400f4
518         POPCNTW R3, R4                  // 7c6402f4
519         POPCNTD R3, R4                  // 7c6403f4
520
521         PASTECC R3, R4                  // 7c23270d
522         COPY R3, R4                     // 7c23260c
523
524         // load-and-reserve
525         LBAR (R4)(R3*1),$1,R5           // 7ca32069
526         LBAR (R4)(R0),$1,R5             // 7ca02069
527         LBAR (R4),$0,R5                 // 7ca02068
528         LBAR (R3),R5                    // 7ca01868
529         LHAR (R4)(R3*1),$1,R5           // 7ca320e9
530         LHAR (R4)(R0),$1,R5             // 7ca020e9
531         LHAR (R4),$0,R5                 // 7ca020e8
532         LHAR (R3),R5                    // 7ca018e8
533         LWAR (R4)(R3*1),$1,R5           // 7ca32029
534         LWAR (R4)(R0),$1,R5             // 7ca02029
535         LWAR (R4),$0,R5                 // 7ca02028
536         LWAR (R3),R5                    // 7ca01828
537         LDAR (R4)(R3*1),$1,R5           // 7ca320a9
538         LDAR (R4)(R0),$1,R5             // 7ca020a9
539         LDAR (R4),$0,R5                 // 7ca020a8
540         LDAR (R3),R5                    // 7ca018a8
541
542         LSW (R3)(R4), R5                // 7ca41c2a
543         LSW (R3)(R0), R5                // 7ca01c2a
544         LSW (R3), R5                    // 7ca01c2a
545
546         STBCCC R3, (R4)(R5)             // 7c65256d
547         STBCCC R3, (R4)(R0)             // 7c60256d
548         STBCCC R3, (R4)                 // 7c60256d
549         STWCCC R3, (R4)(R5)             // 7c65212d
550         STWCCC R3, (R4)(R0)             // 7c60212d
551         STWCCC R3, (R4)                 // 7c60212d
552         STDCCC R3, (R4)(R5)             // 7c6521ad
553         STDCCC R3, (R4)(R0)             // 7c6021ad
554         STDCCC R3, (R4)                 // 7c6021ad
555         STHCCC R3, (R4)(R5)             // 7c6525ad
556         STHCCC R3, (R4)(R0)             // 7c6025ad
557         STHCCC R3, (R4)                 // 7c6025ad
558         STSW R3, (R4)(R5)               // 7c65252a
559         STSW R3, (R4)(R0)               // 7c60252a
560         STSW R3, (R4)                   // 7c60252a
561
562         SYNC                            // 7c0004ac
563         ISYNC                           // 4c00012c
564         LWSYNC                          // 7c2004ac
565         EIEIO                           // 7c0006ac
566         PTESYNC                         // 7c4004ac
567         TLBIE R3                        // 7c001a64
568         TLBIEL R3                       // 7c001a24
569         TLBSYNC                         // 7c00046c
570         HRFID                           // 4c000224
571         SLBIA                           // 7c0003e4
572         SLBIE R3                        // 7c001b64
573         SLBMFEE R3, R4                  // 7c801f26
574         SLBMFEV R3, R4                  // 7c801ea6
575         SLBMTE R3, R4                   // 7c801b24
576
577         TW $31, R0, R0                  // 7fe00008
578         TD $31, R0, R0                  // 7fe00088
579         DARN $1, R5                     // 7ca105e6
580
581         DCBF (R3)(R4)                   // 7c0418ac
582         DCBF (R3)(R0)                   // 7c0018ac
583         DCBF (R3)                       // 7c0018ac
584
585         DCBST (R3)(R4)                  // 7c04186c
586         DCBST (R3)(R0)                  // 7c00186c
587         DCBST (R3)                      // 7c00186c
588         DCBZ (R3)(R4)                   // 7c041fec
589         DCBZ (R3)(R0)                   // 7c001fec
590         DCBZ (R3)                       // 7c001fec
591         DCBT (R3)(R4)                   // 7c041a2c
592         DCBT (R3)(R0)                   // 7c001a2c
593         DCBT (R3)                       // 7c001a2c
594         ICBI (R3)(R4)                   // 7c041fac
595         ICBI (R3)(R0)                   // 7c001fac
596         ICBI (R3)                       // 7c001fac
597
598         // float constants
599         FMOVD $(0.0), F1                // f0210cd0
600         FMOVD $(-0.0), F1               // f0210cd0fc200850
601
602         FMOVD 8(R3), F1                 // c8230008
603         FMOVD (R3)(R4), F1              // 7c241cae
604         FMOVD (R3)(R0), F1              // 7c201cae
605         FMOVD (R3), F1                  // c8230000
606         FMOVDU 8(R3), F1                // cc230008
607         FMOVDU (R3)(R4), F1             // 7c241cee
608         FMOVDU (R3)(R0), F1             // 7c201cee
609         FMOVDU (R3), F1                 // cc230000
610         FMOVS 4(R3), F1                 // c0230004
611         FMOVS (R3)(R4), F1              // 7c241c2e
612         FMOVS (R3)(R0), F1              // 7c201c2e
613         FMOVS (R3), F1                  // c0230000
614         FMOVSU 4(R3), F1                // c4230004
615         FMOVSU (R3)(R4), F1             // 7c241c6e
616         FMOVSU (R3)(R0), F1             // 7c201c6e
617         FMOVSU (R3), F1                 // c4230000
618         FMOVSX (R3)(R4), F1             // 7c241eae
619         FMOVSX (R3)(R0), F1             // 7c201eae
620         FMOVSX (R3), F1                 // 7c201eae
621         FMOVSZ (R3)(R4), F1             // 7c241eee
622         FMOVSZ (R3)(R0), F1             // 7c201eee
623         FMOVSZ (R3), F1                 // 7c201eee
624
625         FMOVD F1, 8(R3)                 // d8230008
626         FMOVD F1, (R3)(R4)              // 7c241dae
627         FMOVD F1, (R3)(R0)              // 7c201dae
628         FMOVD F1, (R3)                  // d8230000
629         FMOVDU F1, 8(R3)                // dc230008
630         FMOVDU F1, (R3)(R4)             // 7c241dee
631         FMOVDU F1, (R3)(R0)             // 7c201dee
632         FMOVDU F1, (R3)                 // dc230000
633         FMOVS F1, 4(R3)                 // d0230004
634         FMOVS F1, (R3)(R4)              // 7c241d2e
635         FMOVS F1, (R3)(R0)              // 7c201d2e
636         FMOVS F1, (R3)                  // d0230000
637         FMOVSU F1, 4(R3)                // d4230004
638         FMOVSU F1, (R3)(R4)             // 7c241d6e
639         FMOVSU F1, (R3)(R0)             // 7c201d6e
640         FMOVSU F1, (R3)                 // d4230000
641         FMOVSX F1, (R3)(R4)             // 7c241fae
642         FMOVSX F1, (R3)(R0)             // 7c201fae
643         FMOVSX F1, (R3)                 // 7c201fae
644         FADD F1, F2                     // fc42082a
645         FADD F1, F2, F3                 // fc62082a
646         FADDCC F1, F2, F3               // fc62082b
647         FMOVDCC F1, F2                  // fc400891
648         FADDS F1, F2                    // ec42082a
649         FADDS F1, F2, F3                // ec62082a
650         FADDSCC F1, F2, F3              // ec62082b
651         FSUB F1, F2                     // fc420828
652         FSUB F1, F2, F3                 // fc620828
653         FSUBCC F1, F2, F3               // fc620829
654         FSUBS F1, F2                    // ec420828
655         FSUBS F1, F2, F3                // ec620828
656         FSUBCC F1, F2, F3               // fc620829
657         FSUBSCC F1, F2, F3              // ec620829
658         FMUL F1, F2                     // fc420072
659         FMUL F1, F2, F3                 // fc620072
660         FMULCC F1, F2, F3               // fc620073
661         FMULS F1, F2                    // ec420072
662         FMULS F1, F2, F3                // ec620072
663         FMULSCC F1, F2, F3              // ec620073
664         FDIV F1, F2                     // fc420824
665         FDIV F1, F2, F3                 // fc620824
666         FDIVCC F1, F2, F3               // fc620825
667         FDIVS F1, F2                    // ec420824
668         FDIVS F1, F2, F3                // ec620824
669         FDIVSCC F1, F2, F3              // ec620825
670         FTDIV F1, F2, $2                // fd011100
671         FTSQRT F1, $2                   // fd000940
672         FMADD F1, F2, F3, F4            // fc8110fa
673         FMADDCC F1, F2, F3, F4          // fc8110fb
674         FMADDS F1, F2, F3, F4           // ec8110fa
675         FMADDSCC F1, F2, F3, F4         // ec8110fb
676         FMSUB F1, F2, F3, F4            // fc8110f8
677         FMSUBCC F1, F2, F3, F4          // fc8110f9
678         FMSUBS F1, F2, F3, F4           // ec8110f8
679         FMSUBSCC F1, F2, F3, F4         // ec8110f9
680         FNMADD F1, F2, F3, F4           // fc8110fe
681         FNMADDCC F1, F2, F3, F4         // fc8110ff
682         FNMADDS F1, F2, F3, F4          // ec8110fe
683         FNMADDSCC F1, F2, F3, F4        // ec8110ff
684         FNMSUB F1, F2, F3, F4           // fc8110fc
685         FNMSUBCC F1, F2, F3, F4         // fc8110fd
686         FNMSUBS F1, F2, F3, F4          // ec8110fc
687         FNMSUBSCC F1, F2, F3, F4        // ec8110fd
688         FSEL F1, F2, F3, F4             // fc8110ee
689         FSELCC F1, F2, F3, F4           // fc8110ef
690         FABS F1, F2                     // fc400a10
691         FNABS F1, F2                    // fc400910
692         FABSCC F1, F2                   // fc400a11
693         FNABSCC F1, F2                  // fc400911
694         FNEG F1, F2                     // fc400850
695         FNEGCC F1, F2                   // fc400851
696         FABSCC F1, F2                   // fc400a11
697         FRSP F1, F2                     // fc400818
698         FRSPCC F1, F2                   // fc400819
699         FCTIW F1, F2                    // fc40081c
700         FCTIWCC F1, F2                  // fc40081d
701         FCTIWZ F1, F2                   // fc40081e
702         FCTIWZCC F1, F2                 // fc40081f
703         FCTID F1, F2                    // fc400e5c
704         FCTIDCC F1, F2                  // fc400e5d
705         FCTIDZ F1, F2                   // fc400e5e
706         FCTIDZCC F1, F2                 // fc400e5f
707         FCFID F1, F2                    // fc400e9c
708         FCFIDCC F1, F2                  // fc400e9d
709         FCFIDU F1, F2                   // fc400f9c
710         FCFIDUCC F1, F2                 // fc400f9d
711         FCFIDS F1, F2                   // ec400e9c
712         FCFIDSCC F1, F2                 // ec400e9d
713         FRES F1, F2                     // ec400830
714         FRESCC F1, F2                   // ec400831
715         FRIM F1, F2                     // fc400bd0
716         FRIMCC F1, F2                   // fc400bd1
717         FRIP F1, F2                     // fc400b90
718         FRIPCC F1, F2                   // fc400b91
719         FRIZ F1, F2                     // fc400b50
720         FRIZCC F1, F2                   // fc400b51
721         FRIN F1, F2                     // fc400b10
722         FRINCC F1, F2                   // fc400b11
723         FRSQRTE F1, F2                  // fc400834
724         FRSQRTECC F1, F2                // fc400835
725         FSQRT F1, F2                    // fc40082c
726         FSQRTCC F1, F2                  // fc40082d
727         FSQRTS F1, F2                   // ec40082c
728         FSQRTSCC F1, F2                 // ec40082d
729         FCPSGN F1, F2                   // fc420810
730         FCPSGNCC F1, F2                 // fc420811
731         FCMPO F1, F2                    // fc011040
732         FCMPU F1, F2                    // fc011000
733         LVX (R3)(R4), V1                // 7c2418ce
734         LVX (R3)(R0), V1                // 7c2018ce
735         LVX (R3), V1                    // 7c2018ce
736         LVXL (R3)(R4), V1               // 7c241ace
737         LVXL (R3)(R0), V1               // 7c201ace
738         LVXL (R3), V1                   // 7c201ace
739         LVSL (R3)(R4), V1               // 7c24180c
740         LVSL (R3)(R0), V1               // 7c20180c
741         LVSL (R3), V1                   // 7c20180c
742         LVSR (R3)(R4), V1               // 7c24184c
743         LVSR (R3)(R0), V1               // 7c20184c
744         LVSR (R3), V1                   // 7c20184c
745         LVEBX (R3)(R4), V1              // 7c24180e
746         LVEBX (R3)(R0), V1              // 7c20180e
747         LVEBX (R3), V1                  // 7c20180e
748         LVEHX (R3)(R4), V1              // 7c24184e
749         LVEHX (R3)(R0), V1              // 7c20184e
750         LVEHX (R3), V1                  // 7c20184e
751         LVEWX (R3)(R4), V1              // 7c24188e
752         LVEWX (R3)(R0), V1              // 7c20188e
753         LVEWX (R3), V1                  // 7c20188e
754         STVX V1, (R3)(R4)               // 7c2419ce
755         STVX V1, (R3)(R0)               // 7c2019ce
756         STVX V1, (R3)                   // 7c2019ce
757         STVXL V1, (R3)(R4)              // 7c241bce
758         STVXL V1, (R3)(R0)              // 7c201bce
759         STVXL V1, (R3)                  // 7c201bce
760         STVEBX V1, (R3)(R4)             // 7c24190e
761         STVEBX V1, (R3)(R0)             // 7c20190e
762         STVEBX V1, (R3)                 // 7c20190e
763         STVEHX V1, (R3)(R4)             // 7c24194e
764         STVEHX V1, (R3)(R0)             // 7c20194e
765         STVEHX V1, (R3)                 // 7c20194e
766         STVEWX V1, (R3)(R4)             // 7c24198e
767         STVEWX V1, (R3)(R0)             // 7c20198e
768         STVEWX V1, (R3)                 // 7c20198e
769
770         VAND V1, V2, V3                 // 10611404
771         VANDC V1, V2, V3                // 10611444
772         VNAND V1, V2, V3                // 10611584
773         VOR V1, V2, V3                  // 10611484
774         VORC V1, V2, V3                 // 10611544
775         VXOR V1, V2, V3                 // 106114c4
776         VNOR V1, V2, V3                 // 10611504
777         VEQV V1, V2, V3                 // 10611684
778         VADDUBM V1, V2, V3              // 10611000
779         VADDUHM V1, V2, V3              // 10611040
780         VADDUWM V1, V2, V3              // 10611080
781         VADDUDM V1, V2, V3              // 106110c0
782         VADDUQM V1, V2, V3              // 10611100
783         VADDCUQ V1, V2, V3              // 10611140
784         VADDCUW V1, V2, V3              // 10611180
785         VADDUBS V1, V2, V3              // 10611200
786         VADDUHS V1, V2, V3              // 10611240
787         VADDUWS V1, V2, V3              // 10611280
788         VADDSBS V1, V2, V3              // 10611300
789         VADDSHS V1, V2, V3              // 10611340
790         VADDSWS V1, V2, V3              // 10611380
791         VADDEUQM V1, V2, V3, V4         // 108110fc
792         VADDECUQ V1, V2, V3, V4         // 108110fd
793         VSUBUBM V1, V2, V3              // 10611400
794         VSUBUHM V1, V2, V3              // 10611440
795         VSUBUWM V1, V2, V3              // 10611480
796         VSUBUDM V1, V2, V3              // 106114c0
797         VSUBUQM V1, V2, V3              // 10611500
798         VSUBCUQ V1, V2, V3              // 10611540
799         VSUBCUW V1, V2, V3              // 10611580
800         VSUBUBS V1, V2, V3              // 10611600
801         VSUBUHS V1, V2, V3              // 10611640
802         VSUBUWS V1, V2, V3              // 10611680
803         VSUBSBS V1, V2, V3              // 10611700
804         VSUBSHS V1, V2, V3              // 10611740
805         VSUBSWS V1, V2, V3              // 10611780
806         VSUBEUQM V1, V2, V3, V4         // 108110fe
807         VSUBECUQ V1, V2, V3, V4         // 108110ff
808         VMULESB V1, V2, V3              // 10611308
809         VMULESW V1, V2, V3              // 10611388
810         VMULOSB V1, V2, V3              // 10611108
811         VMULEUB V1, V2, V3              // 10611208
812         VMULOUB V1, V2, V3              // 10611008
813         VMULESH V1, V2, V3              // 10611348
814         VMULOSH V1, V2, V3              // 10611148
815         VMULEUH V1, V2, V3              // 10611248
816         VMULOUH V1, V2, V3              // 10611048
817         VMULESH V1, V2, V3              // 10611348
818         VMULOSW V1, V2, V3              // 10611188
819         VMULEUW V1, V2, V3              // 10611288
820         VMULOUW V1, V2, V3              // 10611088
821         VMULUWM V1, V2, V3              // 10611089
822         VPMSUMB V1, V2, V3              // 10611408
823         VPMSUMH V1, V2, V3              // 10611448
824         VPMSUMW V1, V2, V3              // 10611488
825         VPMSUMD V1, V2, V3              // 106114c8
826         VMSUMUDM V1, V2, V3, V4         // 108110e3
827         VRLB V1, V2, V3                 // 10611004
828         VRLH V1, V2, V3                 // 10611044
829         VRLW V1, V2, V3                 // 10611084
830         VRLD V1, V2, V3                 // 106110c4
831         VSLB V1, V2, V3                 // 10611104
832         VSLH V1, V2, V3                 // 10611144
833         VSLW V1, V2, V3                 // 10611184
834         VSL V1, V2, V3                  // 106111c4
835         VSLO V1, V2, V3                 // 1061140c
836         VSRB V1, V2, V3                 // 10611204
837         VSRH V1, V2, V3                 // 10611244
838         VSRW V1, V2, V3                 // 10611284
839         VSRD V1, V2, V3                 // 106116c4
840         VSR V1, V2, V3                  // 106112c4
841         VSRO V1, V2, V3                 // 1061144c
842         VSLD V1, V2, V3                 // 106115c4
843         VSRAB V1, V2, V3                // 10611304
844         VSRAH V1, V2, V3                // 10611344
845         VSRAW V1, V2, V3                // 10611384
846         VSRAD V1, V2, V3                // 106113c4
847         VSLDOI $3, V1, V2, V3           // 106110ec
848         VCLZB V1, V2                    // 10400f02
849         VCLZH V1, V2                    // 10400f42
850         VCLZW V1, V2                    // 10400f82
851         VCLZD V1, V2                    // 10400fc2
852         VPOPCNTB V1, V2                 // 10400f03
853         VPOPCNTH V1, V2                 // 10400f43
854         VPOPCNTW V1, V2                 // 10400f83
855         VPOPCNTD V1, V2                 // 10400fc3
856         VCMPEQUB V1, V2, V3             // 10611006
857         VCMPEQUBCC V1, V2, V3           // 10611406
858         VCMPEQUH V1, V2, V3             // 10611046
859         VCMPEQUHCC V1, V2, V3           // 10611446
860         VCMPEQUW V1, V2, V3             // 10611086
861         VCMPEQUWCC V1, V2, V3           // 10611486
862         VCMPEQUD V1, V2, V3             // 106110c7
863         VCMPEQUDCC V1, V2, V3           // 106114c7
864         VCMPGTUB V1, V2, V3             // 10611206
865         VCMPGTUBCC V1, V2, V3           // 10611606
866         VCMPGTUH V1, V2, V3             // 10611246
867         VCMPGTUHCC V1, V2, V3           // 10611646
868         VCMPGTUW V1, V2, V3             // 10611286
869         VCMPGTUWCC V1, V2, V3           // 10611686
870         VCMPGTUD V1, V2, V3             // 106112c7
871         VCMPGTUDCC V1, V2, V3           // 106116c7
872         VCMPGTSB V1, V2, V3             // 10611306
873         VCMPGTSBCC V1, V2, V3           // 10611706
874         VCMPGTSH V1, V2, V3             // 10611346
875         VCMPGTSHCC V1, V2, V3           // 10611746
876         VCMPGTSW V1, V2, V3             // 10611386
877         VCMPGTSWCC V1, V2, V3           // 10611786
878         VCMPGTSD V1, V2, V3             // 106113c7
879         VCMPGTSDCC V1, V2, V3           // 106117c7
880         VCMPNEZB V1, V2, V3             // 10611107
881         VCMPNEZBCC V1, V2, V3           // 10611507
882         VCMPNEB V1, V2, V3              // 10611007
883         VCMPNEBCC V1, V2, V3            // 10611407
884         VCMPNEH V1, V2, V3              // 10611047
885         VCMPNEHCC V1, V2, V3            // 10611447
886         VCMPNEW V1, V2, V3              // 10611087
887         VCMPNEWCC V1, V2, V3            // 10611487
888         VPERM V1, V2, V3, V4            // 108110eb
889         VPERMR V1, V2, V3, V4           // 108110fb
890         VPERMXOR V1, V2, V3, V4         // 108110ed
891         VBPERMQ V1, V2, V3              // 1061154c
892         VBPERMD V1, V2, V3              // 106115cc
893         VSEL V1, V2, V3, V4             // 108110ea
894         VSPLTB $1, V1, V2               // 10410a0c
895         VSPLTH $1, V1, V2               // 10410a4c
896         VSPLTW $1, V1, V2               // 10410a8c
897         VSPLTISB $1, V1                 // 1021030c
898         VSPLTISW $1, V1                 // 1021038c
899         VSPLTISH $1, V1                 // 1021034c
900         VCIPHER V1, V2, V3              // 10611508
901         VCIPHERLAST V1, V2, V3          // 10611509
902         VNCIPHER V1, V2, V3             // 10611548
903         VNCIPHERLAST V1, V2, V3         // 10611549
904         VSBOX V1, V2                    // 104105c8
905         VSHASIGMAW $1, V1, $15, V2      // 10418e82
906         VSHASIGMAW $1, $15, V1, V2      // 10418e82
907         VSHASIGMAD $2, V1, $15, V2      // 104196c2
908         VSHASIGMAD $2, $15, V1, V2      // 104196c2
909
910         LXVD2X (R3)(R4), VS1            // 7c241e98
911         LXVD2X (R3)(R0), VS1            // 7c201e98
912         LXVD2X (R3), VS1                // 7c201e98
913         LXVDSX (R3)(R4), VS1            // 7c241a98
914         LXVDSX (R3)(R0), VS1            // 7c201a98
915         LXVDSX (R3), VS1                // 7c201a98
916         LXVH8X (R3)(R4), VS1            // 7c241e58
917         LXVH8X (R3)(R0), VS1            // 7c201e58
918         LXVH8X (R3), VS1                // 7c201e58
919         LXVB16X (R3)(R4), VS1           // 7c241ed8
920         LXVB16X (R3)(R0), VS1           // 7c201ed8
921         LXVB16X (R3), VS1               // 7c201ed8
922         LXVW4X (R3)(R4), VS1            // 7c241e18
923         LXVW4X (R3)(R0), VS1            // 7c201e18
924         LXVW4X (R3), VS1                // 7c201e18
925         LXV 16(R3), VS1                 // f4230011
926         LXV (R3), VS1                   // f4230001
927         LXV 16(R3), VS33                // f4230019
928         LXV (R3), VS33                  // f4230009
929         LXV 16(R3), V1                  // f4230019
930         LXV (R3), V1                    // f4230009
931         LXVL R3, R4, VS1                // 7c23221a
932         LXVLL R3, R4, VS1               // 7c23225a
933         LXVX R3, R4, VS1                // 7c232218
934         LXSDX (R3)(R4), VS1             // 7c241c98
935         LXSDX (R3)(R0), VS1             // 7c201c98
936         LXSDX (R3), VS1                 // 7c201c98
937         STXVD2X VS1, (R3)(R4)           // 7c241f98
938         STXVD2X VS1, (R3)(R0)           // 7c201f98
939         STXVD2X VS1, (R3)               // 7c201f98
940         STXVW4X VS1, (R3)(R4)           // 7c241f18
941         STXVW4X VS1, (R3)(R0)           // 7c201f18
942         STXVW4X VS1, (R3)               // 7c201f18
943         STXV VS1,16(R3)                 // f4230015
944         STXV VS1,(R3)                   // f4230005
945         STXVL VS1, R3, R4               // 7c23231a
946         STXVLL VS1, R3, R4              // 7c23235a
947         STXVX VS1, R3, R4               // 7c232318
948         STXVB16X VS1, (R4)(R5)          // 7c2527d8
949         STXVB16X VS1, (R4)(R0)          // 7c2027d8
950         STXVB16X VS1, (R4)              // 7c2027d8
951         STXVH8X VS1, (R4)(R5)           // 7c252758
952         STXVH8X VS1, (R4)(R0)           // 7c202758
953         STXVH8X VS1, (R4)               // 7c202758
954         STXSDX VS1, (R3)(R4)            // 7c241d98
955         STXSDX VS1, (R4)(R0)            // 7c202598
956         STXSDX VS1, (R4)                // 7c202598
957         LXSIWAX (R3)(R4), VS1           // 7c241898
958         LXSIWAX (R3)(R0), VS1           // 7c201898
959         LXSIWAX (R3), VS1               // 7c201898
960         LXSIWZX (R3)(R4), VS1           // 7c241818
961         LXSIWZX (R3)(R0), VS1           // 7c201818
962         LXSIWZX (R3), VS1               // 7c201818
963         STXSIWX VS1, (R3)(R4)           // 7c241918
964         STXSIWX VS1, (R3)(R0)           // 7c201918
965         STXSIWX VS1, (R3)               // 7c201918
966         MFVSRD VS1, R3                  // 7c230066
967         MTFPRD R3, F0                   // 7c030166
968         MFVRD V0, R3                    // 7c030067
969         MFVSRLD VS63,R4                 // 7fe40267
970         MFVSRLD V31,R4                  // 7fe40267
971         MFVSRWZ VS33,R4                 // 7c2400e7
972         MFVSRWZ V1,R4                   // 7c2400e7
973         MTVSRD R3, VS1                  // 7c230166
974         MTVSRDD R3, R4, VS1             // 7c232366
975         MTVSRDD R3, R4, VS33            // 7c232367
976         MTVSRDD R3, R4, V1              // 7c232367
977         MTVRD R3, V13                   // 7da30167
978         MTVSRWA R4, VS31                // 7fe401a6
979         MTVSRWS R4, VS32                // 7c040327
980         MTVSRWZ R4, VS63                // 7fe401e7
981         MTFSB0 $2                       // fc40008c
982         MTFSB0CC $2                     // fc40008d
983         MTFSB1 $2                       // fc40004c
984         MTFSB1CC $2                     // fc40004d
985         XXBRQ VS0, VS1                  // f03f076c
986         XXBRD VS0, VS1                  // f037076c
987         XXBRW VS1, VS2                  // f04f0f6c
988         XXBRH VS2, VS3                  // f067176c
989         XXLAND VS1, VS2, VS3            // f0611410
990         XXLAND V1, V2, V3               // f0611417
991         XXLAND VS33, VS34, VS35         // f0611417
992         XXLANDC VS1, VS2, VS3           // f0611450
993         XXLEQV VS0, VS1, VS2            // f0400dd0
994         XXLNAND VS0, VS1, VS2           // f0400d90
995         XXLNOR VS0, VS1, VS32           // f0000d11
996         XXLOR VS1, VS2, VS3             // f0611490
997         XXLORC VS1, VS2, VS3            // f0611550
998         XXLORQ VS1, VS2, VS3            // f0611490
999         XXLXOR VS1, VS2, VS3            // f06114d0
1000         XXSEL VS1, VS2, VS3, VS4        // f08110f0
1001         XXSEL VS33, VS34, VS35, VS36    // f08110ff
1002         XXSEL V1, V2, V3, V4            // f08110ff
1003         XXMRGHW VS1, VS2, VS3           // f0611090
1004         XXMRGLW VS1, VS2, VS3           // f0611190
1005         XXSPLTW VS1, $1, VS2            // f0410a90
1006         XXSPLTW VS33, $1, VS34          // f0410a93
1007         XXSPLTW V1, $1, V2              // f0410a93
1008         XXPERM VS1, VS2, VS3            // f06110d0
1009         XXSLDWI VS1, VS2, $1, VS3       // f0611110
1010         XXSLDWI V1, V2, $1, V3          // f0611117
1011         XXSLDWI V1, $1, V2, V3          // f0611117
1012         XXSLDWI VS33, VS34, $1, VS35    // f0611117
1013         XXSLDWI VS33, $1, VS34, VS35    // f0611117
1014         XXPERMDI VS33, VS34, $1, VS35   // f0611157
1015         XXPERMDI VS33, $1, VS34, VS35   // f0611157
1016         XSCVDPSP VS1, VS2               // f0400c24
1017         XVCVDPSP VS1, VS2               // f0400e24
1018         XSCVSXDDP VS1, VS2              // f0400de0
1019         XVCVDPSXDS VS1, VS2             // f0400f60
1020         XVCVSXDDP VS1, VS2              // f0400fe0
1021         XSCVDPSPN   VS1,VS32            // f0000c2d
1022         XSCVDPSP    VS1,VS32            // f0000c25
1023         XSCVDPSXDS  VS1,VS32            // f0000d61
1024         XSCVDPSXWS  VS1,VS32            // f0000961
1025         XSCVDPUXDS  VS1,VS32            // f0000d21
1026         XSCVDPUXWS  VS1,VS32            // f0000921
1027         XSCVSPDPN   VS1,VS32            // f0000d2d
1028         XSCVSPDP    VS1,VS32            // f0000d25
1029         XSCVSXDDP   VS1,VS32            // f0000de1
1030         XSCVSXDSP   VS1,VS32            // f0000ce1
1031         XSCVUXDDP   VS1,VS32            // f0000da1
1032         XSCVUXDSP   VS1,VS32            // f0000ca1
1033         XVCVDPSP    VS1,VS32            // f0000e25
1034         XVCVDPSXDS  VS1,VS32            // f0000f61
1035         XVCVDPSXWS  VS1,VS32            // f0000b61
1036         XVCVDPUXDS  VS1,VS32            // f0000f21
1037         XVCVDPUXWS  VS1,VS32            // f0000b21
1038         XVCVSPDP    VS1,VS32            // f0000f25
1039         XVCVSPSXDS  VS1,VS32            // f0000e61
1040         XVCVSPSXWS  VS1,VS32            // f0000a61
1041         XVCVSPUXDS  VS1,VS32            // f0000e21
1042         XVCVSPUXWS  VS1,VS32            // f0000a21
1043         XVCVSXDDP   VS1,VS32            // f0000fe1
1044         XVCVSXDSP   VS1,VS32            // f0000ee1
1045         XVCVSXWDP   VS1,VS32            // f0000be1
1046         XVCVSXWSP   VS1,VS32            // f0000ae1
1047         XVCVUXDDP   VS1,VS32            // f0000fa1
1048         XVCVUXDSP   VS1,VS32            // f0000ea1
1049         XVCVUXWDP   VS1,VS32            // f0000ba1
1050         XVCVUXWSP   VS1,VS32            // f0000aa1
1051
1052         MOVD R3, LR                     // 7c6803a6
1053         MOVD R3, CTR                    // 7c6903a6
1054         MOVD R3, XER                    // 7c6103a6
1055         MOVD LR, R3                     // 7c6802a6
1056         MOVD CTR, R3                    // 7c6902a6
1057         MOVD XER, R3                    // 7c6102a6
1058         MOVFL CR3, CR1                  // 4c8c0000
1059
1060         MOVW CR0, R1                    // 7c380026
1061         MOVW CR7, R1                    // 7c301026
1062         MOVW CR, R1                     // 7c200026
1063
1064         MOVW R1, CR                     // 7c2ff120
1065         MOVFL R1, CR                    // 7c2ff120
1066         MOVW R1, CR2                    // 7c320120
1067         MOVFL R1, CR2                   // 7c320120
1068         MOVFL R1, $255                  // 7c2ff120
1069         MOVFL R1, $1                    // 7c301120
1070         MOVFL R1, $128                  // 7c380120
1071         MOVFL R1, $3                    // 7c203120
1072         MOVMW 4(R3), R4                 // b8830004
1073
1074
1075         // Verify supported bdnz/bdz encodings.
1076         BC 16,0,0(PC)                   // BC $16, CR0LT, 0(PC) // 42000000
1077         BDNZ 0(PC)                      // 42000000
1078         BDZ 0(PC)                       // 42400000
1079         BC 18,0,0(PC)                   // BC $18, CR0LT, 0(PC) // 42400000
1080
1081         // Verify the supported forms of bcclr[l]
1082         BC $20,CR0LT,$1,LR              // 4e800820
1083         BC $20,CR0LT,$0,LR              // 4e800020
1084         BC $20,CR0LT,LR                 // 4e800020
1085         BC $20,CR0GT,LR                 // 4e810020
1086         BC 20,CR0LT,LR                  // BC $20,CR0LT,LR // 4e800020
1087         BC 20,undefined_symbol,LR       // BC $20,CR0LT,LR // 4e800020
1088         BC 20,undefined_symbol+1,LR     // BC $20,CR0GT,LR // 4e810020
1089         JMP LR                          // 4e800020
1090         BR LR                           // JMP LR // 4e800020
1091         BCL $20,CR0LT,$1,LR             // 4e800821
1092         BCL $20,CR0LT,$0,LR             // 4e800021
1093         BCL $20,CR0LT,LR                // 4e800021
1094         BCL $20,CR0GT,LR                // 4e810021
1095         BCL 20,CR0LT,LR                 // BCL $20,CR0LT,LR // 4e800021
1096         BCL 20,undefined_symbol,LR      // BCL $20,CR0LT,LR // 4e800021
1097         BCL 20,undefined_symbol+1,LR    // BCL $20,CR0GT,LR // 4e810021
1098
1099         // Verify the supported forms of bcctr[l]
1100         BC $20,CR0LT,CTR                // 4e800420
1101         BC $20,CR0GT,CTR                // 4e810420
1102         BC 20,CR0LT,CTR                 // BC $20,CR0LT,CTR // 4e800420
1103         BC 20,undefined_symbol,CTR      // BC $20,CR0LT,CTR // 4e800420
1104         BC 20,undefined_symbol+1,CTR    // BC $20,CR0GT,CTR // 4e810420
1105         JMP CTR                         // 4e800420
1106         BR CTR                          // JMP CTR // 4e800420
1107         BCL $20,CR0LT,CTR               // 4e800421
1108         BCL $20,CR0GT,CTR               // 4e810421
1109         BCL 20,CR0LT,CTR                // BCL $20,CR0LT,CTR // 4e800421
1110         BCL 20,undefined_symbol,CTR     // BCL $20,CR0LT,CTR // 4e800421
1111         BCL 20,undefined_symbol+1,CTR   // BCL $20,CR0GT,CTR // 4e810421
1112
1113         // Verify bc encoding (without pic enabled)
1114         BC $16,CR0LT,0(PC)              // 42000000
1115         BCL $16,CR0LT,0(PC)             // 42000001
1116         BC $18,CR0LT,0(PC)              // 42400000
1117
1118         MOVD SPR(3), 4(R1)              // 7fe302a6fbe10004
1119         MOVD XER, 4(R1)                 // 7fe102a6fbe10004
1120         MOVD 4(R1), SPR(3)              // ebe100047fe303a6
1121         MOVD 4(R1), XER                 // ebe100047fe103a6
1122         PNOP                            // 0700000000000000
1123
1124         SETB CR1,R3                     // 7c640100
1125         VCLZLSBB V1, R2                 // 10400e02
1126         VCTZLSBB V1, R2                 // 10410e02
1127
1128         RET