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