vsx-ops.c.inc 19 KB

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