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