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