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