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