~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to target/ppc/translate/vsx-ops.inc.c

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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),