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

View as plain text