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