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