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