1 GEN_HANDLER_E(lxsdx, 0x1F, 0x0C, 0x12, 0, PPC_NONE, PPC2_VSX), 2 GEN_HANDLER_E(lxsiwax, 0x1F, 0x0C, 0x02, 0, PPC_NONE, PPC2_VSX207), 3 GEN_HANDLER_E(lxsiwzx, 0x1F, 0x0C, 0x00, 0, PPC_NONE, PPC2_VSX207), 4 GEN_HANDLER_E(lxsibzx, 0x1F, 0x0D, 0x18, 0, PPC_NONE, PPC2_ISA300), 5 GEN_HANDLER_E(lxsihzx, 0x1F, 0x0D, 0x19, 0, PPC_NONE, PPC2_ISA300), 6 GEN_HANDLER_E(lxsspx, 0x1F, 0x0C, 0x10, 0, PPC_NONE, PPC2_VSX207), 7 GEN_HANDLER_E(lxvd2x, 0x1F, 0x0C, 0x1A, 0, PPC_NONE, PPC2_VSX), 8 GEN_HANDLER_E(lxvdsx, 0x1F, 0x0C, 0x0A, 0, PPC_NONE, PPC2_VSX), 9 GEN_HANDLER_E(lxvw4x, 0x1F, 0x0C, 0x18, 0, PPC_NONE, PPC2_VSX), 10 GEN_HANDLER_E(lxvh8x, 0x1F, 0x0C, 0x19, 0, PPC_NONE, PPC2_ISA300), 11 GEN_HANDLER_E(lxvb16x, 0x1F, 0x0C, 0x1B, 0, PPC_NONE, PPC2_ISA300), 12 GEN_HANDLER_E(lxvx, 0x1F, 0x0C, 0x08, 0x00000040, PPC_NONE, PPC2_ISA300), 13 #if defined(TARGET_PPC64) 14 GEN_HANDLER_E(lxvl, 0x1F, 0x0D, 0x08, 0, PPC_NONE, PPC2_ISA300), 15 GEN_HANDLER_E(lxvll, 0x1F, 0x0D, 0x09, 0, PPC_NONE, PPC2_ISA300), 16 #endif 17 18 GEN_HANDLER_E(stxsdx, 0x1F, 0xC, 0x16, 0, PPC_NONE, PPC2_VSX), 19 GEN_HANDLER_E(stxsibx, 0x1F, 0xD, 0x1C, 0, PPC_NONE, PPC2_ISA300), 20 GEN_HANDLER_E(stxsihx, 0x1F, 0xD, 0x1D, 0, PPC_NONE, PPC2_ISA300), 21 GEN_HANDLER_E(stxsiwx, 0x1F, 0xC, 0x04, 0, PPC_NONE, PPC2_VSX207), 22 GEN_HANDLER_E(stxsspx, 0x1F, 0xC, 0x14, 0, PPC_NONE, PPC2_VSX207), 23 GEN_HANDLER_E(stxvd2x, 0x1F, 0xC, 0x1E, 0, PPC_NONE, PPC2_VSX), 24 GEN_HANDLER_E(stxvw4x, 0x1F, 0xC, 0x1C, 0, PPC_NONE, PPC2_VSX), 25 GEN_HANDLER_E(stxvh8x, 0x1F, 0x0C, 0x1D, 0, PPC_NONE, PPC2_ISA300), 26 GEN_HANDLER_E(stxvb16x, 0x1F, 0x0C, 0x1F, 0, PPC_NONE, PPC2_ISA300), 27 GEN_HANDLER_E(stxvx, 0x1F, 0x0C, 0x0C, 0, PPC_NONE, PPC2_ISA300), 28 #if defined(TARGET_PPC64) 29 GEN_HANDLER_E(stxvl, 0x1F, 0x0D, 0x0C, 0, PPC_NONE, PPC2_ISA300), 30 GEN_HANDLER_E(stxvll, 0x1F, 0x0D, 0x0D, 0, PPC_NONE, PPC2_ISA300), 31 #endif 32 33 GEN_HANDLER_E(mfvsrwz, 0x1F, 0x13, 0x03, 0x0000F800, PPC_NONE, PPC2_VSX207), 34 GEN_HANDLER_E(mtvsrwa, 0x1F, 0x13, 0x06, 0x0000F800, PPC_NONE, PPC2_VSX207), 35 GEN_HANDLER_E(mtvsrwz, 0x1F, 0x13, 0x07, 0x0000F800, PPC_NONE, PPC2_VSX207), 36 #if defined(TARGET_PPC64) 37 GEN_HANDLER_E(mfvsrd, 0x1F, 0x13, 0x01, 0x0000F800, PPC_NONE, PPC2_VSX207), 38 GEN_HANDLER_E(mtvsrd, 0x1F, 0x13, 0x05, 0x0000F800, PPC_NONE, PPC2_VSX207), 39 GEN_HANDLER_E(mfvsrld, 0X1F, 0x13, 0x09, 0x0000F800, PPC_NONE, PPC2_ISA300), 40 GEN_HANDLER_E(mtvsrdd, 0X1F, 0x13, 0x0D, 0x0, PPC_NONE, PPC2_ISA300), 41 GEN_HANDLER_E(mtvsrws, 0x1F, 0x13, 0x0C, 0x0000F800, PPC_NONE, PPC2_ISA300), 42 #endif 43 44 #define GEN_XX1FORM(name, opc2, opc3, fl2) \ 45 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0, opc3, 0, PPC_NONE, fl2), \ 46 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 0, PPC_NONE, fl2) 47 48 #define GEN_XX2FORM(name, opc2, opc3, fl2) \ 49 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0, opc3, 0, PPC_NONE, fl2), \ 50 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 0, PPC_NONE, fl2) 51 52 #define GEN_XX2FORM_EXT(name, opc2, opc3, fl2) \ 53 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0, opc3, 0x00100000, PPC_NONE, fl2), \ 54 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 0x00100000, PPC_NONE, fl2) 55 56 #define GEN_XX2FORM_EO(name, opc2, opc3, opc4, fl2) \ 57 GEN_HANDLER2_E_2(name, #name, 0x3C, opc2 | 0, opc3, opc4, 0, PPC_NONE, fl2), \ 58 GEN_HANDLER2_E_2(name, #name, 0x3C, opc2 | 1, opc3, opc4, 0, PPC_NONE, fl2) 59 60 #define GEN_XX3FORM(name, opc2, opc3, fl2) \ 61 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0, opc3, 0, PPC_NONE, fl2), \ 62 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 0, PPC_NONE, fl2), \ 63 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 2, opc3, 0, PPC_NONE, fl2), \ 64 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 3, opc3, 0, PPC_NONE, fl2) 65 66 #define GEN_XX2IFORM(name, opc2, opc3, fl2) \ 67 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0, opc3, 1, PPC_NONE, fl2), \ 68 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 1, opc3, 1, PPC_NONE, fl2), \ 69 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 2, opc3, 1, PPC_NONE, fl2), \ 70 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 3, opc3, 1, PPC_NONE, fl2) 71 72 #define GEN_XX3_RC_FORM(name, opc2, opc3, fl2) \ 73 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x00, opc3 | 0x00, 0, PPC_NONE, fl2), \ 74 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x01, opc3 | 0x00, 0, PPC_NONE, fl2), \ 75 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x02, opc3 | 0x00, 0, PPC_NONE, fl2), \ 76 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x03, opc3 | 0x00, 0, PPC_NONE, fl2), \ 77 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x00, opc3 | 0x10, 0, PPC_NONE, fl2), \ 78 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x01, opc3 | 0x10, 0, PPC_NONE, fl2), \ 79 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x02, opc3 | 0x10, 0, PPC_NONE, fl2), \ 80 GEN_HANDLER2_E(name, #name, 0x3C, opc2 | 0x03, opc3 | 0x10, 0, PPC_NONE, fl2) 81 82 #define GEN_XX3FORM_DM(name, opc2, opc3) \ 83 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x00, opc3|0x00, 0, PPC_NONE, PPC2_VSX),\ 84 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x01, opc3|0x00, 0, PPC_NONE, PPC2_VSX),\ 85 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x02, opc3|0x00, 0, PPC_NONE, PPC2_VSX),\ 86 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x03, opc3|0x00, 0, PPC_NONE, PPC2_VSX),\ 87 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x00, opc3|0x04, 0, PPC_NONE, PPC2_VSX),\ 88 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x01, opc3|0x04, 0, PPC_NONE, PPC2_VSX),\ 89 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x02, opc3|0x04, 0, PPC_NONE, PPC2_VSX),\ 90 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x03, opc3|0x04, 0, PPC_NONE, PPC2_VSX),\ 91 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x00, opc3|0x08, 0, PPC_NONE, PPC2_VSX),\ 92 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x01, opc3|0x08, 0, PPC_NONE, PPC2_VSX),\ 93 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x02, opc3|0x08, 0, PPC_NONE, PPC2_VSX),\ 94 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x03, opc3|0x08, 0, PPC_NONE, PPC2_VSX),\ 95 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x00, opc3|0x0C, 0, PPC_NONE, PPC2_VSX),\ 96 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x01, opc3|0x0C, 0, PPC_NONE, PPC2_VSX),\ 97 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x02, opc3|0x0C, 0, PPC_NONE, PPC2_VSX),\ 98 GEN_HANDLER2_E(name, #name, 0x3C, opc2|0x03, opc3|0x0C, 0, PPC_NONE, PPC2_VSX) 99 100 #define GEN_VSX_XFORM_300(name, opc2, opc3, inval) \ 101 GEN_HANDLER_E(name, 0x3F, opc2, opc3, inval, PPC_NONE, PPC2_ISA300) 102 103 #define GEN_VSX_XFORM_300_EO(name, opc2, opc3, opc4, inval) \ 104 GEN_HANDLER_E_2(name, 0x3F, opc2, opc3, opc4, inval, PPC_NONE, PPC2_ISA300) 105 106 #define GEN_VSX_Z23FORM_300(name, opc2, opc3, opc4, inval) \ 107 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x00, opc4 | 0x0, inval), \ 108 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x08, opc4 | 0x0, inval), \ 109 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x10, opc4 | 0x0, inval), \ 110 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x18, opc4 | 0x0, inval), \ 111 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x00, opc4 | 0x1, inval), \ 112 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x08, opc4 | 0x1, inval), \ 113 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x10, opc4 | 0x1, inval), \ 114 GEN_VSX_XFORM_300_EO(name, opc2, opc3 | 0x18, opc4 | 0x1, inval) 115 116 GEN_VSX_Z23FORM_300(xsrqpi, 0x05, 0x0, 0x0, 0x0), 117 GEN_VSX_Z23FORM_300(xsrqpxp, 0x05, 0x1, 0x0, 0x0), 118 GEN_VSX_XFORM_300_EO(xssqrtqp, 0x04, 0x19, 0x1B, 0x0), 119 GEN_VSX_XFORM_300(xssubqp, 0x04, 0x10, 0x0), 120 121 GEN_XX2FORM(xsabsdp, 0x12, 0x15, PPC2_VSX), 122 GEN_XX2FORM(xsnabsdp, 0x12, 0x16, PPC2_VSX), 123 GEN_XX2FORM(xsnegdp, 0x12, 0x17, PPC2_VSX), 124 GEN_XX3FORM(xscpsgndp, 0x00, 0x16, PPC2_VSX), 125 126 GEN_VSX_XFORM_300_EO(xsabsqp, 0x04, 0x19, 0x00, 0x00000001), 127 GEN_VSX_XFORM_300_EO(xsnabsqp, 0x04, 0x19, 0x08, 0x00000001), 128 GEN_VSX_XFORM_300_EO(xsnegqp, 0x04, 0x19, 0x10, 0x00000001), 129 GEN_VSX_XFORM_300(xscpsgnqp, 0x04, 0x03, 0x00000001), 130 GEN_VSX_XFORM_300_EO(xscvdpqp, 0x04, 0x1A, 0x16, 0x00000001), 131 GEN_VSX_XFORM_300_EO(xscvqpdp, 0x04, 0x1A, 0x14, 0x0), 132 GEN_VSX_XFORM_300_EO(xscvqpsdz, 0x04, 0x1A, 0x19, 0x00000001), 133 GEN_VSX_XFORM_300_EO(xscvqpswz, 0x04, 0x1A, 0x09, 0x00000001), 134 GEN_VSX_XFORM_300_EO(xscvqpudz, 0x04, 0x1A, 0x11, 0x00000001), 135 GEN_VSX_XFORM_300_EO(xscvqpuwz, 0x04, 0x1A, 0x01, 0x00000001), 136 137 #ifdef TARGET_PPC64 138 GEN_XX2FORM_EO(xsxexpdp, 0x16, 0x15, 0x00, PPC2_ISA300), 139 GEN_VSX_XFORM_300_EO(xsxexpqp, 0x04, 0x19, 0x02, 0x00000001), 140 GEN_XX2FORM_EO(xsxsigdp, 0x16, 0x15, 0x01, PPC2_ISA300), 141 GEN_VSX_XFORM_300_EO(xsxsigqp, 0x04, 0x19, 0x12, 0x00000001), 142 GEN_HANDLER_E(xsiexpdp, 0x3C, 0x16, 0x1C, 0, PPC_NONE, PPC2_ISA300), 143 GEN_VSX_XFORM_300(xsiexpqp, 0x4, 0x1B, 0x00000001), 144 #endif 145 146 GEN_XX2FORM(xststdcdp, 0x14, 0x16, PPC2_ISA300), 147 GEN_XX2FORM(xststdcsp, 0x14, 0x12, PPC2_ISA300), 148 GEN_VSX_XFORM_300(xststdcqp, 0x04, 0x16, 0x00000001), 149 150 GEN_XX3FORM(xviexpsp, 0x00, 0x1B, PPC2_ISA300), 151 GEN_XX3FORM(xviexpdp, 0x00, 0x1F, PPC2_ISA300), 152 GEN_XX2FORM_EO(xvxexpdp, 0x16, 0x1D, 0x00, PPC2_ISA300), 153 GEN_XX2FORM_EO(xvxsigdp, 0x16, 0x1D, 0x01, PPC2_ISA300), 154 GEN_XX2FORM_EO(xvxexpsp, 0x16, 0x1D, 0x08, PPC2_ISA300), 155 GEN_XX2FORM_EO(xvxsigsp, 0x16, 0x1D, 0x09, PPC2_ISA300), 156 157 /* DCMX = bit[25] << 6 | bit[29] << 5 | bit[11:15] */ 158 #define GEN_XX2FORM_DCMX(name, opc2, opc3, fl2) \ 159 GEN_XX3FORM(name, opc2, opc3 | 0, fl2), \ 160 GEN_XX3FORM(name, opc2, opc3 | 1, fl2) 161 162 GEN_XX2FORM_DCMX(xvtstdcdp, 0x14, 0x1E, PPC2_ISA300), 163 GEN_XX2FORM_DCMX(xvtstdcsp, 0x14, 0x1A, PPC2_ISA300), 164 165 GEN_XX2FORM(xvabsdp, 0x12, 0x1D, PPC2_VSX), 166 GEN_XX2FORM(xvnabsdp, 0x12, 0x1E, PPC2_VSX), 167 GEN_XX2FORM(xvnegdp, 0x12, 0x1F, PPC2_VSX), 168 GEN_XX3FORM(xvcpsgndp, 0x00, 0x1E, PPC2_VSX), 169 GEN_XX2FORM(xvabssp, 0x12, 0x19, PPC2_VSX), 170 GEN_XX2FORM(xvnabssp, 0x12, 0x1A, PPC2_VSX), 171 GEN_XX2FORM(xvnegsp, 0x12, 0x1B, PPC2_VSX), 172 GEN_XX3FORM(xvcpsgnsp, 0x00, 0x1A, PPC2_VSX), 173 174 GEN_XX3FORM(xsadddp, 0x00, 0x04, PPC2_VSX), 175 GEN_VSX_XFORM_300(xsaddqp, 0x04, 0x00, 0x0), 176 GEN_XX3FORM(xssubdp, 0x00, 0x05, PPC2_VSX), 177 GEN_XX3FORM(xsmuldp, 0x00, 0x06, PPC2_VSX), 178 GEN_VSX_XFORM_300(xsmulqp, 0x04, 0x01, 0x0), 179 GEN_XX3FORM(xsdivdp, 0x00, 0x07, PPC2_VSX), 180 GEN_XX2FORM(xsredp, 0x14, 0x05, PPC2_VSX), 181 GEN_XX2FORM(xssqrtdp, 0x16, 0x04, PPC2_VSX), 182 GEN_XX2FORM(xsrsqrtedp, 0x14, 0x04, PPC2_VSX), 183 GEN_XX3FORM(xstdivdp, 0x14, 0x07, PPC2_VSX), 184 GEN_XX2FORM(xstsqrtdp, 0x14, 0x06, PPC2_VSX), 185 GEN_XX3FORM(xsmaddadp, 0x04, 0x04, PPC2_VSX), 186 GEN_XX3FORM(xsmaddmdp, 0x04, 0x05, PPC2_VSX), 187 GEN_XX3FORM(xsmsubadp, 0x04, 0x06, PPC2_VSX), 188 GEN_XX3FORM(xsmsubmdp, 0x04, 0x07, PPC2_VSX), 189 GEN_XX3FORM(xsnmaddadp, 0x04, 0x14, PPC2_VSX), 190 GEN_XX3FORM(xsnmaddmdp, 0x04, 0x15, PPC2_VSX), 191 GEN_XX3FORM(xsnmsubadp, 0x04, 0x16, PPC2_VSX), 192 GEN_XX3FORM(xsnmsubmdp, 0x04, 0x17, PPC2_VSX), 193 GEN_XX3FORM(xscmpeqdp, 0x0C, 0x00, PPC2_ISA300), 194 GEN_XX3FORM(xscmpgtdp, 0x0C, 0x01, PPC2_ISA300), 195 GEN_XX3FORM(xscmpgedp, 0x0C, 0x02, PPC2_ISA300), 196 GEN_XX3FORM(xscmpnedp, 0x0C, 0x03, PPC2_ISA300), 197 GEN_XX3FORM(xscmpexpdp, 0x0C, 0x07, PPC2_ISA300), 198 GEN_VSX_XFORM_300(xscmpexpqp, 0x04, 0x05, 0x00600001), 199 GEN_XX2IFORM(xscmpodp, 0x0C, 0x05, PPC2_VSX), 200 GEN_XX2IFORM(xscmpudp, 0x0C, 0x04, PPC2_VSX), 201 GEN_VSX_XFORM_300(xscmpoqp, 0x04, 0x04, 0x00600001), 202 GEN_VSX_XFORM_300(xscmpuqp, 0x04, 0x14, 0x00600001), 203 GEN_XX3FORM(xsmaxdp, 0x00, 0x14, PPC2_VSX), 204 GEN_XX3FORM(xsmindp, 0x00, 0x15, PPC2_VSX), 205 GEN_XX3FORM(xsmaxcdp, 0x00, 0x10, PPC2_ISA300), 206 GEN_XX3FORM(xsmincdp, 0x00, 0x11, PPC2_ISA300), 207 GEN_XX3FORM(xsmaxjdp, 0x00, 0x12, PPC2_ISA300), 208 GEN_XX3FORM(xsminjdp, 0x00, 0x13, PPC2_ISA300), 209 GEN_XX2FORM_EO(xscvdphp, 0x16, 0x15, 0x11, PPC2_ISA300), 210 GEN_XX2FORM(xscvdpsp, 0x12, 0x10, PPC2_VSX), 211 GEN_XX2FORM(xscvdpspn, 0x16, 0x10, PPC2_VSX207), 212 GEN_XX2FORM_EO(xscvhpdp, 0x16, 0x15, 0x10, PPC2_ISA300), 213 GEN_VSX_XFORM_300_EO(xscvsdqp, 0x04, 0x1A, 0x0A, 0x00000001), 214 GEN_XX2FORM(xscvspdp, 0x12, 0x14, PPC2_VSX), 215 GEN_XX2FORM(xscvspdpn, 0x16, 0x14, PPC2_VSX207), 216 GEN_XX2FORM(xscvdpsxds, 0x10, 0x15, PPC2_VSX), 217 GEN_XX2FORM(xscvdpsxws, 0x10, 0x05, PPC2_VSX), 218 GEN_XX2FORM(xscvdpuxds, 0x10, 0x14, PPC2_VSX), 219 GEN_XX2FORM(xscvdpuxws, 0x10, 0x04, PPC2_VSX), 220 GEN_XX2FORM(xscvsxddp, 0x10, 0x17, PPC2_VSX), 221 GEN_VSX_XFORM_300_EO(xscvudqp, 0x04, 0x1A, 0x02, 0x00000001), 222 GEN_XX2FORM(xscvuxddp, 0x10, 0x16, PPC2_VSX), 223 GEN_XX2FORM(xsrdpi, 0x12, 0x04, PPC2_VSX), 224 GEN_XX2FORM(xsrdpic, 0x16, 0x06, PPC2_VSX), 225 GEN_XX2FORM(xsrdpim, 0x12, 0x07, PPC2_VSX), 226 GEN_XX2FORM(xsrdpip, 0x12, 0x06, PPC2_VSX), 227 GEN_XX2FORM(xsrdpiz, 0x12, 0x05, PPC2_VSX), 228 229 GEN_XX3FORM(xsaddsp, 0x00, 0x00, PPC2_VSX207), 230 GEN_XX3FORM(xssubsp, 0x00, 0x01, PPC2_VSX207), 231 GEN_XX3FORM(xsmulsp, 0x00, 0x02, PPC2_VSX207), 232 GEN_XX3FORM(xsdivsp, 0x00, 0x03, PPC2_VSX207), 233 GEN_VSX_XFORM_300(xsdivqp, 0x04, 0x11, 0x0), 234 GEN_XX2FORM(xsresp, 0x14, 0x01, PPC2_VSX207), 235 GEN_XX2FORM(xsrsp, 0x12, 0x11, PPC2_VSX207), 236 GEN_XX2FORM(xssqrtsp, 0x16, 0x00, PPC2_VSX207), 237 GEN_XX2FORM(xsrsqrtesp, 0x14, 0x00, PPC2_VSX207), 238 GEN_XX3FORM(xsmaddasp, 0x04, 0x00, PPC2_VSX207), 239 GEN_XX3FORM(xsmaddmsp, 0x04, 0x01, PPC2_VSX207), 240 GEN_XX3FORM(xsmsubasp, 0x04, 0x02, PPC2_VSX207), 241 GEN_XX3FORM(xsmsubmsp, 0x04, 0x03, PPC2_VSX207), 242 GEN_XX3FORM(xsnmaddasp, 0x04, 0x10, PPC2_VSX207), 243 GEN_XX3FORM(xsnmaddmsp, 0x04, 0x11, PPC2_VSX207), 244 GEN_XX3FORM(xsnmsubasp, 0x04, 0x12, PPC2_VSX207), 245 GEN_XX3FORM(xsnmsubmsp, 0x04, 0x13, PPC2_VSX207), 246 GEN_XX2FORM(xscvsxdsp, 0x10, 0x13, PPC2_VSX207), 247 GEN_XX2FORM(xscvuxdsp, 0x10, 0x12, PPC2_VSX207), 248 249 GEN_XX3FORM(xvadddp, 0x00, 0x0C, PPC2_VSX), 250 GEN_XX3FORM(xvsubdp, 0x00, 0x0D, PPC2_VSX), 251 GEN_XX3FORM(xvmuldp, 0x00, 0x0E, PPC2_VSX), 252 GEN_XX3FORM(xvdivdp, 0x00, 0x0F, PPC2_VSX), 253 GEN_XX2FORM(xvredp, 0x14, 0x0D, PPC2_VSX), 254 GEN_XX2FORM(xvsqrtdp, 0x16, 0x0C, PPC2_VSX), 255 GEN_XX2FORM(xvrsqrtedp, 0x14, 0x0C, PPC2_VSX), 256 GEN_XX3FORM(xvtdivdp, 0x14, 0x0F, PPC2_VSX), 257 GEN_XX2FORM(xvtsqrtdp, 0x14, 0x0E, PPC2_VSX), 258 GEN_XX3FORM(xvmaddadp, 0x04, 0x0C, PPC2_VSX), 259 GEN_XX3FORM(xvmaddmdp, 0x04, 0x0D, PPC2_VSX), 260 GEN_XX3FORM(xvmsubadp, 0x04, 0x0E, PPC2_VSX), 261 GEN_XX3FORM(xvmsubmdp, 0x04, 0x0F, PPC2_VSX), 262 GEN_XX3FORM(xvnmaddadp, 0x04, 0x1C, PPC2_VSX), 263 GEN_XX3FORM(xvnmaddmdp, 0x04, 0x1D, PPC2_VSX), 264 GEN_XX3FORM(xvnmsubadp, 0x04, 0x1E, PPC2_VSX), 265 GEN_XX3FORM(xvnmsubmdp, 0x04, 0x1F, PPC2_VSX), 266 GEN_XX3FORM(xvmaxdp, 0x00, 0x1C, PPC2_VSX), 267 GEN_XX3FORM(xvmindp, 0x00, 0x1D, PPC2_VSX), 268 GEN_XX3_RC_FORM(xvcmpeqdp, 0x0C, 0x0C, PPC2_VSX), 269 GEN_XX3_RC_FORM(xvcmpgtdp, 0x0C, 0x0D, PPC2_VSX), 270 GEN_XX3_RC_FORM(xvcmpgedp, 0x0C, 0x0E, PPC2_VSX), 271 GEN_XX3_RC_FORM(xvcmpnedp, 0x0C, 0x0F, PPC2_ISA300), 272 GEN_XX2FORM(xvcvdpsp, 0x12, 0x18, PPC2_VSX), 273 GEN_XX2FORM(xvcvdpsxds, 0x10, 0x1D, PPC2_VSX), 274 GEN_XX2FORM(xvcvdpsxws, 0x10, 0x0D, PPC2_VSX), 275 GEN_XX2FORM(xvcvdpuxds, 0x10, 0x1C, PPC2_VSX), 276 GEN_XX2FORM(xvcvdpuxws, 0x10, 0x0C, PPC2_VSX), 277 GEN_XX2FORM(xvcvsxddp, 0x10, 0x1F, PPC2_VSX), 278 GEN_XX2FORM(xvcvuxddp, 0x10, 0x1E, PPC2_VSX), 279 GEN_XX2FORM(xvcvsxwdp, 0x10, 0x0F, PPC2_VSX), 280 GEN_XX2FORM(xvcvuxwdp, 0x10, 0x0E, PPC2_VSX), 281 GEN_XX2FORM(xvrdpi, 0x12, 0x0C, PPC2_VSX), 282 GEN_XX2FORM(xvrdpic, 0x16, 0x0E, PPC2_VSX), 283 GEN_XX2FORM(xvrdpim, 0x12, 0x0F, PPC2_VSX), 284 GEN_XX2FORM(xvrdpip, 0x12, 0x0E, PPC2_VSX), 285 GEN_XX2FORM(xvrdpiz, 0x12, 0x0D, PPC2_VSX), 286 287 GEN_XX3FORM(xvaddsp, 0x00, 0x08, PPC2_VSX), 288 GEN_XX3FORM(xvsubsp, 0x00, 0x09, PPC2_VSX), 289 GEN_XX3FORM(xvmulsp, 0x00, 0x0A, PPC2_VSX), 290 GEN_XX3FORM(xvdivsp, 0x00, 0x0B, PPC2_VSX), 291 GEN_XX2FORM(xvresp, 0x14, 0x09, PPC2_VSX), 292 GEN_XX2FORM(xvsqrtsp, 0x16, 0x08, PPC2_VSX), 293 GEN_XX2FORM(xvrsqrtesp, 0x14, 0x08, PPC2_VSX), 294 GEN_XX3FORM(xvtdivsp, 0x14, 0x0B, PPC2_VSX), 295 GEN_XX2FORM(xvtsqrtsp, 0x14, 0x0A, PPC2_VSX), 296 GEN_XX3FORM(xvmaddasp, 0x04, 0x08, PPC2_VSX), 297 GEN_XX3FORM(xvmaddmsp, 0x04, 0x09, PPC2_VSX), 298 GEN_XX3FORM(xvmsubasp, 0x04, 0x0A, PPC2_VSX), 299 GEN_XX3FORM(xvmsubmsp, 0x04, 0x0B, PPC2_VSX), 300 GEN_XX3FORM(xvnmaddasp, 0x04, 0x18, PPC2_VSX), 301 GEN_XX3FORM(xvnmaddmsp, 0x04, 0x19, PPC2_VSX), 302 GEN_XX3FORM(xvnmsubasp, 0x04, 0x1A, PPC2_VSX), 303 GEN_XX3FORM(xvnmsubmsp, 0x04, 0x1B, PPC2_VSX), 304 GEN_XX3FORM(xvmaxsp, 0x00, 0x18, PPC2_VSX), 305 GEN_XX3FORM(xvminsp, 0x00, 0x19, PPC2_VSX), 306 GEN_XX3_RC_FORM(xvcmpeqsp, 0x0C, 0x08, PPC2_VSX), 307 GEN_XX3_RC_FORM(xvcmpgtsp, 0x0C, 0x09, PPC2_VSX), 308 GEN_XX3_RC_FORM(xvcmpgesp, 0x0C, 0x0A, PPC2_VSX), 309 GEN_XX3_RC_FORM(xvcmpnesp, 0x0C, 0x0B, PPC2_ISA300), 310 GEN_XX2FORM(xvcvspdp, 0x12, 0x1C, PPC2_VSX), 311 GEN_XX2FORM(xvcvspsxds, 0x10, 0x19, PPC2_VSX), 312 GEN_XX2FORM(xvcvspsxws, 0x10, 0x09, PPC2_VSX), 313 GEN_XX2FORM(xvcvspuxds, 0x10, 0x18, PPC2_VSX), 314 GEN_XX2FORM(xvcvspuxws, 0x10, 0x08, PPC2_VSX), 315 GEN_XX2FORM(xvcvsxdsp, 0x10, 0x1B, PPC2_VSX), 316 GEN_XX2FORM(xvcvuxdsp, 0x10, 0x1A, PPC2_VSX), 317 GEN_XX2FORM(xvcvsxwsp, 0x10, 0x0B, PPC2_VSX), 318 GEN_XX2FORM(xvcvuxwsp, 0x10, 0x0A, PPC2_VSX), 319 GEN_XX2FORM(xvrspi, 0x12, 0x08, PPC2_VSX), 320 GEN_XX2FORM(xvrspic, 0x16, 0x0A, PPC2_VSX), 321 GEN_XX2FORM(xvrspim, 0x12, 0x0B, PPC2_VSX), 322 GEN_XX2FORM(xvrspip, 0x12, 0x0A, PPC2_VSX), 323 GEN_XX2FORM(xvrspiz, 0x12, 0x09, PPC2_VSX), 324 GEN_XX2FORM_EO(xxbrh, 0x16, 0x1D, 0x07, PPC2_ISA300), 325 GEN_XX2FORM_EO(xxbrw, 0x16, 0x1D, 0x0F, PPC2_ISA300), 326 GEN_XX2FORM_EO(xxbrd, 0x16, 0x1D, 0x17, PPC2_ISA300), 327 GEN_XX2FORM_EO(xvcvhpsp, 0x16, 0x1D, 0x18, PPC2_ISA300), 328 GEN_XX2FORM_EO(xvcvsphp, 0x16, 0x1D, 0x19, PPC2_ISA300), 329 GEN_XX2FORM_EO(xxbrq, 0x16, 0x1D, 0x1F, PPC2_ISA300), 330 331 #define VSX_LOGICAL(name, opc2, opc3, fl2) \ 332 GEN_XX3FORM(name, opc2, opc3, fl2) 333 334 VSX_LOGICAL(xxland, 0x8, 0x10, PPC2_VSX), 335 VSX_LOGICAL(xxlandc, 0x8, 0x11, PPC2_VSX), 336 VSX_LOGICAL(xxlor, 0x8, 0x12, PPC2_VSX), 337 VSX_LOGICAL(xxlxor, 0x8, 0x13, PPC2_VSX), 338 VSX_LOGICAL(xxlnor, 0x8, 0x14, PPC2_VSX), 339 VSX_LOGICAL(xxleqv, 0x8, 0x17, PPC2_VSX207), 340 VSX_LOGICAL(xxlnand, 0x8, 0x16, PPC2_VSX207), 341 VSX_LOGICAL(xxlorc, 0x8, 0x15, PPC2_VSX207), 342 GEN_XX3FORM(xxmrghw, 0x08, 0x02, PPC2_VSX), 343 GEN_XX3FORM(xxmrglw, 0x08, 0x06, PPC2_VSX), 344 GEN_XX3FORM(xxperm, 0x08, 0x03, PPC2_ISA300), 345 GEN_XX3FORM(xxpermr, 0x08, 0x07, PPC2_ISA300), 346 GEN_XX2FORM(xxspltw, 0x08, 0x0A, PPC2_VSX), 347 GEN_XX1FORM(xxspltib, 0x08, 0x0B, PPC2_ISA300), 348 GEN_XX3FORM_DM(xxsldwi, 0x08, 0x00), 349 GEN_XX2FORM_EXT(xxextractuw, 0x0A, 0x0A, PPC2_ISA300), 350 GEN_XX2FORM_EXT(xxinsertw, 0x0A, 0x0B, PPC2_ISA300), 351 352 #define GEN_XXSEL_ROW(opc3) \ 353 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x18, opc3, 0, PPC_NONE, PPC2_VSX), \ 354 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x19, opc3, 0, PPC_NONE, PPC2_VSX), \ 355 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1A, opc3, 0, PPC_NONE, PPC2_VSX), \ 356 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1B, opc3, 0, PPC_NONE, PPC2_VSX), \ 357 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1C, opc3, 0, PPC_NONE, PPC2_VSX), \ 358 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1D, opc3, 0, PPC_NONE, PPC2_VSX), \ 359 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1E, opc3, 0, PPC_NONE, PPC2_VSX), \ 360 GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1F, opc3, 0, PPC_NONE, PPC2_VSX), \ 361 362 GEN_XXSEL_ROW(0x00) 363 GEN_XXSEL_ROW(0x01) 364 GEN_XXSEL_ROW(0x02) 365 GEN_XXSEL_ROW(0x03) 366 GEN_XXSEL_ROW(0x04) 367 GEN_XXSEL_ROW(0x05) 368 GEN_XXSEL_ROW(0x06) 369 GEN_XXSEL_ROW(0x07) 370 GEN_XXSEL_ROW(0x08) 371 GEN_XXSEL_ROW(0x09) 372 GEN_XXSEL_ROW(0x0A) 373 GEN_XXSEL_ROW(0x0B) 374 GEN_XXSEL_ROW(0x0C) 375 GEN_XXSEL_ROW(0x0D) 376 GEN_XXSEL_ROW(0x0E) 377 GEN_XXSEL_ROW(0x0F) 378 GEN_XXSEL_ROW(0x10) 379 GEN_XXSEL_ROW(0x11) 380 GEN_XXSEL_ROW(0x12) 381 GEN_XXSEL_ROW(0x13) 382 GEN_XXSEL_ROW(0x14) 383 GEN_XXSEL_ROW(0x15) 384 GEN_XXSEL_ROW(0x16) 385 GEN_XXSEL_ROW(0x17) 386 GEN_XXSEL_ROW(0x18) 387 GEN_XXSEL_ROW(0x19) 388 GEN_XXSEL_ROW(0x1A) 389 GEN_XXSEL_ROW(0x1B) 390 GEN_XXSEL_ROW(0x1C) 391 GEN_XXSEL_ROW(0x1D) 392 GEN_XXSEL_ROW(0x1E) 393 GEN_XXSEL_ROW(0x1F) 394 395 GEN_XX3FORM_DM(xxpermdi, 0x08, 0x01), 396