]>
Commit | Line | Data |
---|---|---|
3014427a BH |
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), | |
740ae9a2 ND |
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), | |
3014427a BH |
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), | |
1c074419 | 10 | GEN_HANDLER_E(lxvh8x, 0x1F, 0x0C, 0x19, 0, PPC_NONE, PPC2_ISA300), |
8ee38fac | 11 | GEN_HANDLER_E(lxvb16x, 0x1F, 0x0C, 0x1B, 0, PPC_NONE, PPC2_ISA300), |
d59ba583 | 12 | GEN_HANDLER_E(lxvx, 0x1F, 0x0C, 0x08, 0x00000040, PPC_NONE, PPC2_ISA300), |
6914bc4f ND |
13 | #if defined(TARGET_PPC64) |
14 | GEN_HANDLER_E(lxvl, 0x1F, 0x0D, 0x08, 0, PPC_NONE, PPC2_ISA300), | |
176e44e7 | 15 | GEN_HANDLER_E(lxvll, 0x1F, 0x0D, 0x09, 0, PPC_NONE, PPC2_ISA300), |
6914bc4f | 16 | #endif |
3014427a BH |
17 | |
18 | GEN_HANDLER_E(stxsdx, 0x1F, 0xC, 0x16, 0, PPC_NONE, PPC2_VSX), | |
ddb9ac50 ND |
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), | |
3014427a BH |
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), | |
0b8ac648 | 25 | GEN_HANDLER_E(stxvh8x, 0x1F, 0x0C, 0x1D, 0, PPC_NONE, PPC2_ISA300), |
f3333ce0 | 26 | GEN_HANDLER_E(stxvb16x, 0x1F, 0x0C, 0x1F, 0, PPC_NONE, PPC2_ISA300), |
d59ba583 | 27 | GEN_HANDLER_E(stxvx, 0x1F, 0x0C, 0x0C, 0, PPC_NONE, PPC2_ISA300), |
681c2478 ND |
28 | #if defined(TARGET_PPC64) |
29 | GEN_HANDLER_E(stxvl, 0x1F, 0x0D, 0x0C, 0, PPC_NONE, PPC2_ISA300), | |
e122090d | 30 | GEN_HANDLER_E(stxvll, 0x1F, 0x0D, 0x0D, 0, PPC_NONE, PPC2_ISA300), |
681c2478 | 31 | #endif |
3014427a BH |
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), | |
63583202 | 39 | GEN_HANDLER_E(mfvsrld, 0X1F, 0x13, 0x09, 0x0000F800, PPC_NONE, PPC2_ISA300), |
b9731075 | 40 | GEN_HANDLER_E(mtvsrdd, 0X1F, 0x13, 0x0D, 0x0, PPC_NONE, PPC2_ISA300), |
1a136cdc | 41 | GEN_HANDLER_E(mtvsrws, 0x1F, 0x13, 0x0C, 0x0000F800, PPC_NONE, PPC2_ISA300), |
3014427a BH |
42 | #endif |
43 | ||
f1132835 ND |
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 | ||
3014427a BH |
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 | ||
8ad901e5 ND |
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 | ||
14fd8ab2 ND |
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 | ||
3014427a BH |
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 | ||
c9f4e4d8 MCA |
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) | |
71 | ||
3014427a BH |
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) | |
77 | ||
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) | |
87 | ||
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) | |
105 | ||
3a20d11d BR |
106 | #define GEN_VSX_XFORM_300(name, opc2, opc3, inval) \ |
107 | GEN_HANDLER_E(name, 0x3F, opc2, opc3, inval, PPC_NONE, PPC2_ISA300) | |
108 | ||
3259dbd9 DG |
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) | |
3a20d11d | 111 | |
be07ad58 JRZ |
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) | |
121 | ||
122 | GEN_VSX_Z23FORM_300(xsrqpi, 0x05, 0x0, 0x0, 0x0), | |
917950d7 | 123 | GEN_VSX_Z23FORM_300(xsrqpxp, 0x05, 0x1, 0x0, 0x0), |
a8d411ab | 124 | GEN_VSX_XFORM_300_EO(xssqrtqp, 0x04, 0x19, 0x1B, 0x0), |
f6b99afd | 125 | GEN_VSX_XFORM_300(xssubqp, 0x04, 0x10, 0x0), |
be07ad58 | 126 | |
3014427a BH |
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), | |
131 | ||
3259dbd9 DG |
132 | GEN_VSX_XFORM_300_EO(xsabsqp, 0x04, 0x19, 0x00, 0x00000001), |
133 | GEN_VSX_XFORM_300_EO(xsnabsqp, 0x04, 0x19, 0x08, 0x00000001), | |
8497d7fc | 134 | GEN_VSX_XFORM_300_EO(xsnegqp, 0x04, 0x19, 0x10, 0x00000001), |
014ed3bb | 135 | GEN_VSX_XFORM_300(xscpsgnqp, 0x04, 0x03, 0x00000001), |
e5487803 | 136 | GEN_VSX_XFORM_300_EO(xscvdpqp, 0x04, 0x1A, 0x16, 0x00000001), |
2a084dad | 137 | GEN_VSX_XFORM_300_EO(xscvqpdp, 0x04, 0x1A, 0x14, 0x0), |
05590b92 BR |
138 | GEN_VSX_XFORM_300_EO(xscvqpsdz, 0x04, 0x1A, 0x19, 0x00000001), |
139 | GEN_VSX_XFORM_300_EO(xscvqpswz, 0x04, 0x1A, 0x09, 0x00000001), | |
e0aee726 BR |
140 | GEN_VSX_XFORM_300_EO(xscvqpudz, 0x04, 0x1A, 0x11, 0x00000001), |
141 | GEN_VSX_XFORM_300_EO(xscvqpuwz, 0x04, 0x1A, 0x01, 0x00000001), | |
3259dbd9 | 142 | |
08e14986 ND |
143 | #ifdef TARGET_PPC64 |
144 | GEN_XX2FORM_EO(xsxexpdp, 0x16, 0x15, 0x00, PPC2_ISA300), | |
9eceae32 | 145 | GEN_VSX_XFORM_300_EO(xsxexpqp, 0x04, 0x19, 0x02, 0x00000001), |
05538220 | 146 | GEN_XX2FORM_EO(xsxsigdp, 0x16, 0x15, 0x01, PPC2_ISA300), |
29f8ddb7 | 147 | GEN_VSX_XFORM_300_EO(xsxsigqp, 0x04, 0x19, 0x12, 0x00000001), |
1b8d663d | 148 | GEN_HANDLER_E(xsiexpdp, 0x3C, 0x16, 0x1C, 0, PPC_NONE, PPC2_ISA300), |
8a9472ec | 149 | GEN_VSX_XFORM_300(xsiexpqp, 0x4, 0x1B, 0x00000001), |
08e14986 ND |
150 | #endif |
151 | ||
78241762 ND |
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), | |
155 | ||
d9031405 | 156 | GEN_XX3FORM(xviexpsp, 0x00, 0x1B, PPC2_ISA300), |
e385e4b7 | 157 | GEN_XX3FORM(xviexpdp, 0x00, 0x1F, PPC2_ISA300), |
46804e28 | 158 | GEN_XX2FORM_EO(xvxexpdp, 0x16, 0x1D, 0x00, PPC2_ISA300), |
cf9465a1 | 159 | GEN_XX2FORM_EO(xvxsigdp, 0x16, 0x1D, 0x01, PPC2_ISA300), |
08f1ee5a | 160 | GEN_XX2FORM_EO(xvxexpsp, 0x16, 0x1D, 0x08, PPC2_ISA300), |
c5969d2e | 161 | GEN_XX2FORM_EO(xvxsigsp, 0x16, 0x1D, 0x09, PPC2_ISA300), |
d9031405 | 162 | |
403a884a ND |
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) | |
167 | ||
168 | GEN_XX2FORM_DCMX(xvtstdcdp, 0x14, 0x1E, PPC2_ISA300), | |
169 | GEN_XX2FORM_DCMX(xvtstdcsp, 0x14, 0x1A, PPC2_ISA300), | |
170 | ||
3014427a BH |
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), | |
179 | ||
180 | GEN_XX3FORM(xsadddp, 0x00, 0x04, PPC2_VSX), | |
07bdd247 | 181 | GEN_VSX_XFORM_300(xsaddqp, 0x04, 0x00, 0x0), |
3014427a BH |
182 | GEN_XX3FORM(xssubdp, 0x00, 0x05, PPC2_VSX), |
183 | GEN_XX3FORM(xsmuldp, 0x00, 0x06, PPC2_VSX), | |
a811ec04 | 184 | GEN_VSX_XFORM_300(xsmulqp, 0x04, 0x01, 0x0), |
3014427a BH |
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), | |
c9f4e4d8 MCA |
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), | |
6d1ff9a7 SD |
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), | |
3a20d11d BR |
203 | GEN_XX3FORM(xscmpexpdp, 0x0C, 0x07, PPC2_ISA300), |
204 | GEN_VSX_XFORM_300(xscmpexpqp, 0x04, 0x05, 0x00600001), | |
3014427a BH |
205 | GEN_XX2IFORM(xscmpodp, 0x0C, 0x05, PPC2_VSX), |
206 | GEN_XX2IFORM(xscmpudp, 0x0C, 0x04, PPC2_VSX), | |
be0a4faf BR |
207 | GEN_VSX_XFORM_300(xscmpoqp, 0x04, 0x04, 0x00600001), |
208 | GEN_VSX_XFORM_300(xscmpuqp, 0x04, 0x14, 0x00600001), | |
3014427a BH |
209 | GEN_XX3FORM(xsmaxdp, 0x00, 0x14, PPC2_VSX), |
210 | GEN_XX3FORM(xsmindp, 0x00, 0x15, PPC2_VSX), | |
2770deed BR |
211 | GEN_XX3FORM(xsmaxcdp, 0x00, 0x10, PPC2_ISA300), |
212 | GEN_XX3FORM(xsmincdp, 0x00, 0x11, PPC2_ISA300), | |
d4ccd87e BR |
213 | GEN_XX3FORM(xsmaxjdp, 0x00, 0x12, PPC2_ISA300), |
214 | GEN_XX3FORM(xsminjdp, 0x00, 0x13, PPC2_ISA300), | |
f566c047 | 215 | GEN_XX2FORM_EO(xscvdphp, 0x16, 0x15, 0x11, PPC2_ISA300), |
3014427a BH |
216 | GEN_XX2FORM(xscvdpsp, 0x12, 0x10, PPC2_VSX), |
217 | GEN_XX2FORM(xscvdpspn, 0x16, 0x10, PPC2_VSX207), | |
f566c047 | 218 | GEN_XX2FORM_EO(xscvhpdp, 0x16, 0x15, 0x10, PPC2_ISA300), |
48ef23cb | 219 | GEN_VSX_XFORM_300_EO(xscvsdqp, 0x04, 0x1A, 0x0A, 0x00000001), |
3014427a BH |
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), | |
48ef23cb | 227 | GEN_VSX_XFORM_300_EO(xscvudqp, 0x04, 0x1A, 0x02, 0x00000001), |
3014427a BH |
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), | |
234 | ||
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), | |
314c1163 | 239 | GEN_VSX_XFORM_300(xsdivqp, 0x04, 0x11, 0x0), |
3014427a BH |
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), | |
c9f4e4d8 MCA |
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), | |
3014427a BH |
252 | GEN_XX2FORM(xscvsxdsp, 0x10, 0x13, PPC2_VSX207), |
253 | GEN_XX2FORM(xscvuxdsp, 0x10, 0x12, PPC2_VSX207), | |
254 | ||
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), | |
c9f4e4d8 MCA |
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), | |
3014427a BH |
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), | |
6db246f9 | 277 | GEN_XX3_RC_FORM(xvcmpnedp, 0x0C, 0x0F, PPC2_ISA300), |
3014427a BH |
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), | |
292 | ||
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), | |
c9f4e4d8 MCA |
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), | |
3014427a BH |
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), | |
6db246f9 | 315 | GEN_XX3_RC_FORM(xvcmpnesp, 0x0C, 0x0B, PPC2_ISA300), |
3014427a BH |
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), | |
14fd8ab2 ND |
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), | |
8b920d8a ND |
333 | GEN_XX2FORM_EO(xvcvhpsp, 0x16, 0x1D, 0x18, PPC2_ISA300), |
334 | GEN_XX2FORM_EO(xvcvsphp, 0x16, 0x1D, 0x19, PPC2_ISA300), | |
14fd8ab2 | 335 | GEN_XX2FORM_EO(xxbrq, 0x16, 0x1D, 0x1F, PPC2_ISA300), |
3014427a BH |
336 | |
337 | #define VSX_LOGICAL(name, opc2, opc3, fl2) \ | |
338 | GEN_XX3FORM(name, opc2, opc3, fl2) | |
339 | ||
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), | |
234068ab BR |
350 | GEN_XX3FORM(xxperm, 0x08, 0x03, PPC2_ISA300), |
351 | GEN_XX3FORM(xxpermr, 0x08, 0x07, PPC2_ISA300), | |
3014427a | 352 | GEN_XX2FORM(xxspltw, 0x08, 0x0A, PPC2_VSX), |
f1132835 | 353 | GEN_XX1FORM(xxspltib, 0x08, 0x0B, PPC2_ISA300), |
3014427a | 354 | GEN_XX3FORM_DM(xxsldwi, 0x08, 0x00), |
8ad901e5 | 355 | GEN_XX2FORM_EXT(xxextractuw, 0x0A, 0x0A, PPC2_ISA300), |
3398b742 | 356 | GEN_XX2FORM_EXT(xxinsertw, 0x0A, 0x0B, PPC2_ISA300), |
3014427a BH |
357 | |
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), \ | |
367 | ||
368 | GEN_XXSEL_ROW(0x00) | |
369 | GEN_XXSEL_ROW(0x01) | |
370 | GEN_XXSEL_ROW(0x02) | |
371 | GEN_XXSEL_ROW(0x03) | |
372 | GEN_XXSEL_ROW(0x04) | |
373 | GEN_XXSEL_ROW(0x05) | |
374 | GEN_XXSEL_ROW(0x06) | |
375 | GEN_XXSEL_ROW(0x07) | |
376 | GEN_XXSEL_ROW(0x08) | |
377 | GEN_XXSEL_ROW(0x09) | |
378 | GEN_XXSEL_ROW(0x0A) | |
379 | GEN_XXSEL_ROW(0x0B) | |
380 | GEN_XXSEL_ROW(0x0C) | |
381 | GEN_XXSEL_ROW(0x0D) | |
382 | GEN_XXSEL_ROW(0x0E) | |
383 | GEN_XXSEL_ROW(0x0F) | |
384 | GEN_XXSEL_ROW(0x10) | |
385 | GEN_XXSEL_ROW(0x11) | |
386 | GEN_XXSEL_ROW(0x12) | |
387 | GEN_XXSEL_ROW(0x13) | |
388 | GEN_XXSEL_ROW(0x14) | |
389 | GEN_XXSEL_ROW(0x15) | |
390 | GEN_XXSEL_ROW(0x16) | |
391 | GEN_XXSEL_ROW(0x17) | |
392 | GEN_XXSEL_ROW(0x18) | |
393 | GEN_XXSEL_ROW(0x19) | |
394 | GEN_XXSEL_ROW(0x1A) | |
395 | GEN_XXSEL_ROW(0x1B) | |
396 | GEN_XXSEL_ROW(0x1C) | |
397 | GEN_XXSEL_ROW(0x1D) | |
398 | GEN_XXSEL_ROW(0x1E) | |
399 | GEN_XXSEL_ROW(0x1F) | |
400 | ||
401 | GEN_XX3FORM_DM(xxpermdi, 0x08, 0x01), |