1//=======-- PPCInstrSPE.td - The PowerPC SPE Extension -*- tablegen -*-=======//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file describes the Signal Processing Engine extension to
11// the PowerPC instruction set.
12//
13//===----------------------------------------------------------------------===//
14
15class EVXForm_1<bits<11> xo, dag OOL, dag IOL, string asmstr,
16               InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> {
17  bits<5> RT;
18  bits<5> RA;
19  bits<5> RB;
20
21  let Pattern = [];
22
23  let Inst{6-10}  = RT;
24  let Inst{11-15} = RA;
25  let Inst{16-20} = RB;
26  let Inst{21-31} = xo;
27}
28
29class EVXForm_2<bits<11> xo, dag OOL, dag IOL, string asmstr,
30               InstrItinClass itin> : EVXForm_1<xo, OOL, IOL, asmstr, itin> {
31  let RB = 0;
32}
33
34class EVXForm_3<bits<11> xo, dag OOL, dag IOL, string asmstr,
35              InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> {
36  bits<3> crD;
37  bits<5> RA;
38  bits<5> RB;
39
40  let Pattern = [];
41
42  let Inst{6-8}  = crD;
43  let Inst{9-10}  = 0;
44  let Inst{11-15} = RA;
45  let Inst{16-20} = RB;
46  let Inst{21-31} = xo;
47}
48
49class EVXForm_D<bits<11> xo, dag OOL, dag IOL, string asmstr,
50               InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> {
51  bits<5> RT;
52  bits<21> D;
53
54  let Pattern = [];
55
56  let Inst{6-10}  = RT;
57  let Inst{20} = D{0};
58  let Inst{19} = D{1};
59  let Inst{18} = D{2};
60  let Inst{17} = D{3};
61  let Inst{16} = D{4};
62  let Inst{15} = D{5};
63  let Inst{14} = D{6};
64  let Inst{13} = D{7};
65  let Inst{12} = D{8};
66  let Inst{11} = D{9};
67  let Inst{11-20} = D{0-9};
68  let Inst{21-31} = xo;
69}
70
71let Predicates = [HasSPE], isAsmParserOnly = 1 in {
72
73def EVLDD          : EVXForm_D<769, (outs gprc:$RT), (ins spe8dis:$dst),
74                               "evldd $RT, $dst", IIC_VecFP>;
75def EVLDW          : EVXForm_D<771, (outs gprc:$RT), (ins spe8dis:$dst),
76                               "evldw $RT, $dst", IIC_VecFP>;
77def EVLDH          : EVXForm_D<773, (outs gprc:$RT), (ins spe8dis:$dst),
78                               "evldh $RT, $dst", IIC_VecFP>;
79def EVLHHESPLAT    : EVXForm_D<777, (outs gprc:$RT), (ins spe2dis:$dst),
80                               "evlhhesplat $RT, $dst", IIC_VecFP>;
81def EVLHHOUSPLAT   : EVXForm_D<781, (outs gprc:$RT), (ins spe2dis:$dst),
82                               "evlhhousplat $RT, $dst", IIC_VecFP>;
83def EVLHHOSSPLAT   : EVXForm_D<783, (outs gprc:$RT), (ins spe2dis:$dst),
84                               "evlhhossplat $RT, $dst", IIC_VecFP>;
85def EVLWHE         : EVXForm_D<785, (outs gprc:$RT), (ins spe4dis:$dst),
86                               "evlwhe $RT, $dst", IIC_VecFP>;
87def EVLWHOU        : EVXForm_D<789, (outs gprc:$RT), (ins spe4dis:$dst),
88                               "evlwhou $RT, $dst", IIC_VecFP>;
89def EVLWHOS        : EVXForm_D<791, (outs gprc:$RT), (ins spe4dis:$dst),
90                               "evlwhos $RT, $dst", IIC_VecFP>;
91def EVLWWSPLAT     : EVXForm_D<793, (outs gprc:$RT), (ins spe4dis:$dst),
92                               "evlwwsplat $RT, $dst", IIC_VecFP>;
93def EVLWHSPLAT     : EVXForm_D<797, (outs gprc:$RT), (ins spe4dis:$dst),
94                               "evlwhsplat $RT, $dst", IIC_VecFP>;
95
96def EVSTDD         : EVXForm_D<801, (outs), (ins gprc:$RT, spe8dis:$dst),
97                               "evstdd $RT, $dst", IIC_VecFP>;
98def EVSTDH         : EVXForm_D<805, (outs), (ins gprc:$RT, spe8dis:$dst),
99                               "evstdh $RT, $dst", IIC_VecFP>;
100def EVSTDW         : EVXForm_D<803, (outs), (ins gprc:$RT, spe8dis:$dst),
101                               "evstdw $RT, $dst", IIC_VecFP>;
102def EVSTWHE        : EVXForm_D<817, (outs), (ins gprc:$RT, spe4dis:$dst),
103                               "evstwhe $RT, $dst", IIC_VecFP>;
104def EVSTWHO        : EVXForm_D<821, (outs), (ins gprc:$RT, spe4dis:$dst),
105                               "evstwho $RT, $dst", IIC_VecFP>;
106def EVSTWWE        : EVXForm_D<825, (outs), (ins gprc:$RT, spe4dis:$dst),
107                               "evstwwe $RT, $dst", IIC_VecFP>;
108def EVSTWWO        : EVXForm_D<829, (outs), (ins gprc:$RT, spe4dis:$dst),
109                               "evstwwo $RT, $dst", IIC_VecFP>;
110
111def EVMRA : EVXForm_1<1220, (outs gprc:$RT), (ins gprc:$RA),
112                      "evmra $RT, $RA", IIC_VecFP> {
113  let RB = 0;
114}
115
116def BRINC          : EVXForm_1<527, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
117                               "brinc $RT, $RA, $RB", IIC_VecFP>;
118def EVABS          : EVXForm_2<520, (outs gprc:$RT), (ins gprc:$RA),
119                               "evabs $RT, $RA", IIC_VecFP>;
120
121def EVADDIW        : EVXForm_1<514, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB),
122                               "evaddiw $RT, $RB, $RA", IIC_VecFP>;
123def EVADDSMIAAW    : EVXForm_2<1225, (outs gprc:$RT), (ins gprc:$RA),
124                               "evaddsmiaaw $RT, $RA", IIC_VecFP>;
125def EVADDSSIAAW    : EVXForm_2<1217, (outs gprc:$RT), (ins gprc:$RA),
126                               "evaddssiaaw $RT, $RA", IIC_VecFP>;
127def EVADDUSIAAW    : EVXForm_2<1216, (outs gprc:$RT), (ins gprc:$RA),
128                               "evaddusiaaw $RT, $RA", IIC_VecFP>;
129def EVADDUMIAAW    : EVXForm_2<1224, (outs gprc:$RT), (ins gprc:$RA),
130                               "evaddumiaaw $RT, $RA", IIC_VecFP>;
131def EVADDW         : EVXForm_1<512, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
132                               "evaddw $RT, $RA, $RB", IIC_VecFP>;
133
134def EVAND          : EVXForm_1<529, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
135                               "evand $RT, $RA, $RB", IIC_VecFP>;
136def EVANDC         : EVXForm_1<530, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
137                               "evandc $RT, $RA, $RB", IIC_VecFP>;
138
139def EVCMPEQ        : EVXForm_3<564, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB),
140                               "evcmpeq $crD, $RA, $RB", IIC_VecFP>;
141def EVCMPGTS       : EVXForm_3<561, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB),
142                               "evcmpgts $crD, $RA, $RB", IIC_VecFP>;
143def EVCMPGTU       : EVXForm_3<560, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB),
144                               "evcmpgtu $crD, $RA, $RB", IIC_VecFP>;
145def EVCMPLTS       : EVXForm_3<563, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB),
146                               "evcmplts $crD, $RA, $RB", IIC_VecFP>;
147def EVCMPLTU       : EVXForm_3<562, (outs crrc:$crD), (ins gprc:$RA, gprc:$RB),
148                               "evcmpltu $crD, $RA, $RB", IIC_VecFP>;
149
150def EVCNTLSW       : EVXForm_2<526, (outs gprc:$RT), (ins gprc:$RA),
151                               "evcntlsw $RT, $RA", IIC_VecFP>;
152def EVCNTLZW       : EVXForm_2<525, (outs gprc:$RT), (ins gprc:$RA),
153                               "evcntlzw $RT, $RA", IIC_VecFP>;
154
155def EVDIVWS        : EVXForm_1<1222, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
156                               "evdivws $RT, $RA, $RB", IIC_VecFP>;
157def EVDIVWU        : EVXForm_1<1223, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
158                               "evdivwu $RT, $RA, $RB", IIC_VecFP>;
159
160def EVEQV          : EVXForm_1<537, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
161                               "eveqv $RT, $RA, $RB", IIC_VecFP>;
162
163def EVEXTSB        : EVXForm_2<522, (outs gprc:$RT), (ins gprc:$RA),
164                               "evextsb $RT, $RA", IIC_VecFP>;
165def EVEXTSH        : EVXForm_2<523, (outs gprc:$RT), (ins gprc:$RA),
166                               "evextsh $RT, $RA", IIC_VecFP>;
167
168def EVLDDX         : EVXForm_1<768, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
169                               "evlddx $RT, $RA, $RB", IIC_VecFP>;
170def EVLDWX         : EVXForm_1<770, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
171                               "evldwx $RT, $RA, $RB", IIC_VecFP>;
172def EVLDHX         : EVXForm_1<772, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
173                               "evldhx $RT, $RA, $RB", IIC_VecFP>;
174def EVLHHESPLATX   : EVXForm_1<776, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
175                               "evlhhesplatx $RT, $RA, $RB", IIC_VecFP>;
176def EVLHHOUSPLATX  : EVXForm_1<780, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
177                               "evlhhousplatx $RT, $RA, $RB", IIC_VecFP>;
178def EVLHHOSSPLATX  : EVXForm_1<782, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
179                               "evlhhossplatx $RT, $RA, $RB", IIC_VecFP>;
180def EVLWHEX        : EVXForm_1<784, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
181                               "evlwhex $RT, $RA, $RB", IIC_VecFP>;
182def EVLWHOUX       : EVXForm_1<788, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
183                               "evlwhoux $RT, $RA, $RB", IIC_VecFP>;
184def EVLWHOSX       : EVXForm_1<790, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
185                               "evlwhosx $RT, $RA, $RB", IIC_VecFP>;
186def EVLWWSPLATX    : EVXForm_1<792, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
187                               "evlwwsplatx $RT, $RA, $RB", IIC_VecFP>;
188def EVLWHSPLATX    : EVXForm_1<796, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
189                               "evlwhsplatx $RT, $RA, $RB", IIC_VecFP>;
190
191def EVMERGEHI      : EVXForm_1<556, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
192                               "evmergehi $RT, $RA, $RB", IIC_VecFP>;
193def EVMERGELO      : EVXForm_1<557, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
194                               "evmergelo $RT, $RA, $RB", IIC_VecFP>;
195def EVMERGEHILO    : EVXForm_1<558, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
196                               "evmergehilo $RT, $RA, $RB", IIC_VecFP>;
197def EVMERGELOHI    : EVXForm_1<559, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
198                               "evmergelohi $RT, $RA, $RB", IIC_VecFP>;
199
200def EVMHEGSMFAA    : EVXForm_1<1323, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
201                               "evmhegsmfaa $RT, $RA, $RB", IIC_VecFP>;
202def EVMHEGSMFAN    : EVXForm_1<1451, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
203                               "evmhegsmfan $RT, $RA, $RB", IIC_VecFP>;
204def EVMHEGSMIAA    : EVXForm_1<1321, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
205                               "evmhegsmiaa $RT, $RA, $RB", IIC_VecFP>;
206def EVMHEGSMIAN    : EVXForm_1<1449, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
207                               "evmhegsmian $RT, $RA, $RB", IIC_VecFP>;
208def EVMHEGUMIAA    : EVXForm_1<1320, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
209                               "evmhegumiaa $RT, $RA, $RB", IIC_VecFP>;
210def EVMHEGUMIAN    : EVXForm_1<1448, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
211                               "evmhegumian $RT, $RA, $RB", IIC_VecFP>;
212
213def EVMHESMF       : EVXForm_1<1035, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
214                               "evmhesmf $RT, $RA, $RB", IIC_VecFP>;
215def EVMHESMFA      : EVXForm_1<1067, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
216                               "evmhesmfa $RT, $RA, $RB", IIC_VecFP>;
217def EVMHESMFAAW    : EVXForm_1<1291, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
218                               "evmhesmfaaw $RT, $RA, $RB", IIC_VecFP>;
219def EVMHESMFANW    : EVXForm_1<1419, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
220                               "evmhesmfanw $RT, $RA, $RB", IIC_VecFP>;
221def EVMHESMI       : EVXForm_1<1033, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
222                               "evmhesmi $RT, $RA, $RB", IIC_VecFP>;
223def EVMHESMIA      : EVXForm_1<1065, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
224                               "evmhesmia $RT, $RA, $RB", IIC_VecFP>;
225def EVMHESMIAAW    : EVXForm_1<1289, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
226                               "evmhesmiaaw $RT, $RA, $RB", IIC_VecFP>;
227def EVMHESMIANW    : EVXForm_1<1417, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
228                               "evmhesmianw $RT, $RA, $RB", IIC_VecFP>;
229def EVMHESSF       : EVXForm_1<1027, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
230                               "evmhessf $RT, $RA, $RB", IIC_VecFP>;
231def EVMHESSFA      : EVXForm_1<1059, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
232                               "evmhessfa $RT, $RA, $RB", IIC_VecFP>;
233def EVMHESSFAAW    : EVXForm_1<1283, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
234                               "evmhessfaaw $RT, $RA, $RB", IIC_VecFP>;
235def EVMHESSFANW    : EVXForm_1<1411, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
236                               "evmhessfanw $RT, $RA, $RB", IIC_VecFP>;
237def EVMHESSIAAW    : EVXForm_1<1281, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
238                               "evmhessiaaw $RT, $RA, $RB", IIC_VecFP>;
239def EVMHESSIANW    : EVXForm_1<1409, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
240                               "evmhessianw $RT, $RA, $RB", IIC_VecFP>;
241def EVMHEUMI       : EVXForm_1<1032, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
242                               "evmheumi $RT, $RA, $RB", IIC_VecFP>;
243def EVMHEUMIA      : EVXForm_1<1064, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
244                               "evmheumia $RT, $RA, $RB", IIC_VecFP>;
245def EVMHEUMIAAW    : EVXForm_1<1288, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
246                               "evmheumiaaw $RT, $RA, $RB", IIC_VecFP>;
247def EVMHEUMIANW    : EVXForm_1<1416, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
248                               "evmheumianw $RT, $RA, $RB", IIC_VecFP>;
249def EVMHEUSIAAW    : EVXForm_1<1280, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
250                               "evmheusiaaw $RT, $RA, $RB", IIC_VecFP>;
251def EVMHEUSIANW    : EVXForm_1<1408, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
252                               "evmheusianw $RT, $RA, $RB", IIC_VecFP>;
253def EVMHOGSMFAA    : EVXForm_1<1327, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
254                               "evmhogsmfaa $RT, $RA, $RB", IIC_VecFP>;
255def EVMHOGSMFAN    : EVXForm_1<1455, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
256                               "evmhogsmfan $RT, $RA, $RB", IIC_VecFP>;
257def EVMHOGSMIAA    : EVXForm_1<1325, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
258                               "evmhogsmiaa $RT, $RA, $RB", IIC_VecFP>;
259def EVMHOGSMIAN    : EVXForm_1<1453, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
260                               "evmhogsmian $RT, $RA, $RB", IIC_VecFP>;
261def EVMHOGUMIAA    : EVXForm_1<1324, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
262                               "evmhogumiaa $RT, $RA, $RB", IIC_VecFP>;
263def EVMHOGUMIAN    : EVXForm_1<1452, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
264                               "evmhogumian $RT, $RA, $RB", IIC_VecFP>;
265def EVMHOSMF       : EVXForm_1<1039, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
266                               "evmhosmf $RT, $RA, $RB", IIC_VecFP>;
267def EVMHOSMFA      : EVXForm_1<1071, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
268                               "evmhosmfa $RT, $RA, $RB", IIC_VecFP>;
269def EVMHOSMFAAW    : EVXForm_1<1295, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
270                               "evmhosmfaaw $RT, $RA, $RB", IIC_VecFP>;
271def EVMHOSMFANW    : EVXForm_1<1423, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
272                               "evmhosmfanw $RT, $RA, $RB", IIC_VecFP>;
273def EVMHOSMI       : EVXForm_1<1037, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
274                               "evmhosmi $RT, $RA, $RB", IIC_VecFP>;
275def EVMHOSMIA      : EVXForm_1<1069, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
276                               "evmhosmia $RT, $RA, $RB", IIC_VecFP>;
277def EVMHOSMIAAW    : EVXForm_1<1293, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
278                               "evmhosmiaaw $RT, $RA, $RB", IIC_VecFP>;
279def EVMHOSMIANW    : EVXForm_1<1421, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
280                               "evmhosmianw $RT, $RA, $RB", IIC_VecFP>;
281def EVMHOSSF       : EVXForm_1<1031, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
282                               "evmhossf $RT, $RA, $RB", IIC_VecFP>;
283def EVMHOSSFA      : EVXForm_1<1063, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
284                               "evmhossfa $RT, $RA, $RB", IIC_VecFP>;
285def EVMHOSSFAAW    : EVXForm_1<1287, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
286                               "evmhossfaaw $RT, $RA, $RB", IIC_VecFP>;
287def EVMHOSSFANW    : EVXForm_1<1415, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
288                               "evmhossfanw $RT, $RA, $RB", IIC_VecFP>;
289def EVMHOSSIAAW    : EVXForm_1<1285, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
290                               "evmhossiaaw $RT, $RA, $RB", IIC_VecFP>;
291def EVMHOSSIANW    : EVXForm_1<1413, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
292                               "evmhossianw $RT, $RA, $RB", IIC_VecFP>;
293def EVMHOUMI       : EVXForm_1<1036, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
294                               "evmhoumi $RT, $RA, $RB", IIC_VecFP>;
295def EVMHOUMIA      : EVXForm_1<1068, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
296                               "evmhoumia $RT, $RA, $RB", IIC_VecFP>;
297def EVMHOUMIAAW    : EVXForm_1<1292, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
298                               "evmhoumiaaw $RT, $RA, $RB", IIC_VecFP>;
299def EVMHOUMIANW    : EVXForm_1<1420, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
300                               "evmhoumianw $RT, $RA, $RB", IIC_VecFP>;
301def EVMHOUSIAAW    : EVXForm_1<1284, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
302                               "evmhousiaaw $RT, $RA, $RB", IIC_VecFP>;
303def EVMHOUSIANW    : EVXForm_1<1412, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
304                               "evmhousianw $RT, $RA, $RB", IIC_VecFP>;
305
306
307def EVMWHSMF       : EVXForm_1<1103, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
308                               "evmwhsmf $RT, $RA, $RB", IIC_VecFP>;
309def EVMWHSMFA      : EVXForm_1<1135, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
310                               "evmwhsmfa $RT, $RA, $RB", IIC_VecFP>;
311def EVMWHSMI       : EVXForm_1<1101, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
312                               "evmwhsmi $RT, $RA, $RB", IIC_VecFP>;
313def EVMWHSMIA      : EVXForm_1<1133, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
314                               "evmwhsmia $RT, $RA, $RB", IIC_VecFP>;
315def EVMWHSSF       : EVXForm_1<1095, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
316                               "evmwhssf $RT, $RA, $RB", IIC_VecFP>;
317def EVMWHSSFA      : EVXForm_1<1127, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
318                               "evmwhssfa $RT, $RA, $RB", IIC_VecFP>;
319def EVMWHUMI       : EVXForm_1<1100, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
320                               "evmwhumi $RT, $RA, $RB", IIC_VecFP>;
321def EVMWHUMIA      : EVXForm_1<1132, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
322                               "evmwhumia $RT, $RA, $RB", IIC_VecFP>;
323def EVMWLSMIAAW    : EVXForm_1<1353, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
324                               "evmwlsmiaaw $RT, $RA, $RB", IIC_VecFP>;
325def EVMWLSMIANW    : EVXForm_1<1481, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
326                               "evmwlsmianw $RT, $RA, $RB", IIC_VecFP>;
327def EVMWLSSIAAW    : EVXForm_1<1345, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
328                               "evmwlssiaaw $RT, $RA, $RB", IIC_VecFP>;
329def EVMWLSSIANW    : EVXForm_1<1473, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
330                               "evmwlssianw $RT, $RA, $RB", IIC_VecFP>;
331def EVMWLUMI       : EVXForm_1<1096, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
332                               "evmwlumi $RT, $RA, $RB", IIC_VecFP>;
333def EVMWLUMIA      : EVXForm_1<1128, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
334                               "evmwlumia $RT, $RA, $RB", IIC_VecFP>;
335def EVMWLUMIAAW    : EVXForm_1<1352, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
336                               "evmwlumiaaw $RT, $RA, $RB", IIC_VecFP>;
337def EVMWLUMIANW    : EVXForm_1<1480, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
338                               "evmwlumianw $RT, $RA, $RB", IIC_VecFP>;
339def EVMWLUSIAAW    : EVXForm_1<1344, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
340                               "evmwlusiaaw $RT, $RA, $RB", IIC_VecFP>;
341def EVMWLUSIANW    : EVXForm_1<1472, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
342                               "evmwlusianw $RT, $RA, $RB", IIC_VecFP>;
343def EVMWSMF        : EVXForm_1<1115, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
344                               "evmwsmf $RT, $RA, $RB", IIC_VecFP>;
345def EVMWSMFA       : EVXForm_1<1147, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
346                               "evmwsmfa $RT, $RA, $RB", IIC_VecFP>;
347def EVMWSMFAA      : EVXForm_1<1371, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
348                               "evmwsmfaa $RT, $RA, $RB", IIC_VecFP>;
349def EVMWSMFAN      : EVXForm_1<1499, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
350                               "evmwsmfan $RT, $RA, $RB", IIC_VecFP>;
351def EVMWSMI        : EVXForm_1<1113, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
352                               "evmwsmi $RT, $RA, $RB", IIC_VecFP>;
353def EVMWSMIA       : EVXForm_1<1145, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
354                               "evmwsmia $RT, $RA, $RB", IIC_VecFP>;
355def EVMWSMIAA      : EVXForm_1<1369, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
356                               "evmwsmiaa $RT, $RA, $RB", IIC_VecFP>;
357def EVMWSMIAN      : EVXForm_1<1497, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
358                               "evmwsmian $RT, $RA, $RB", IIC_VecFP>;
359def EVMWSSF        : EVXForm_1<1107, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
360                               "evmwssf $RT, $RA, $RB", IIC_VecFP>;
361def EVMWSSFA       : EVXForm_1<1139, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
362                               "evmwssfa $RT, $RA, $RB", IIC_VecFP>;
363def EVMWSSFAA      : EVXForm_1<1363, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
364                               "evmwssfaa $RT, $RA, $RB", IIC_VecFP>;
365def EVMWSSFAN      : EVXForm_1<1491, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
366                               "evmwssfan $RT, $RA, $RB", IIC_VecFP>;
367def EVMWUMI        : EVXForm_1<1112, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
368                               "evmwumi $RT, $RA, $RB", IIC_VecFP>;
369def EVMWUMIA       : EVXForm_1<1144, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
370                               "evmwumia $RT, $RA, $RB", IIC_VecFP>;
371def EVMWUMIAA      : EVXForm_1<1368, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
372                               "evmwumiaa $RT, $RA, $RB", IIC_VecFP>;
373def EVMWUMIAN      : EVXForm_1<1496, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
374                               "evmwumian $RT, $RA, $RB", IIC_VecFP>;
375
376
377def EVNAND         : EVXForm_1<542, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
378                               "evnand $RT, $RA, $RB", IIC_VecFP>;
379
380def EVNEG          : EVXForm_2<521, (outs gprc:$RT), (ins gprc:$RA),
381                               "evneg $RT, $RA", IIC_VecFP>;
382
383def EVNOR          : EVXForm_1<536, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
384                               "evnor $RT, $RA, $RB", IIC_VecFP>;
385def EVOR           : EVXForm_1<535, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
386                               "evor $RT, $RA, $RB", IIC_VecFP>;
387def EVORC          : EVXForm_1<539, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
388                               "evorc $RT, $RA, $RB", IIC_VecFP>;
389
390def EVRLWI         : EVXForm_1<554, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB),
391                               "evrlwi $RT, $RA, $RB", IIC_VecFP>;
392def EVRLW          : EVXForm_1<552, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
393                               "evrlw $RT, $RA, $RB", IIC_VecFP>;
394
395def EVRNDW         : EVXForm_2<524, (outs gprc:$RT), (ins gprc:$RA),
396                               "evrndw $RT, $RA", IIC_VecFP>;
397
398def EVSLWI         : EVXForm_1<550, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB),
399                               "evslwi $RT, $RA, $RB", IIC_VecFP>;
400def EVSLW          : EVXForm_1<548, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
401                               "evslw $RT, $RA, $RB", IIC_VecFP>;
402
403def EVSPLATFI      : EVXForm_2<555, (outs gprc:$RT), (ins i32imm:$RA),
404                               "evsplatfi $RT, $RA", IIC_VecFP>;
405def EVSPLATI       : EVXForm_2<553, (outs gprc:$RT), (ins i32imm:$RA),
406                               "evsplati $RT, $RA", IIC_VecFP>;
407
408def EVSRWIS        : EVXForm_1<547, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB),
409                               "evsrwis $RT, $RA, $RB", IIC_VecFP>;
410def EVSRWIU        : EVXForm_1<546, (outs gprc:$RT), (ins gprc:$RA, u5imm:$RB),
411                               "evsrwiu $RT, $RA, $RB", IIC_VecFP>;
412def EVSRWS         : EVXForm_1<545, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
413                               "evsrws $RT, $RA, $RB", IIC_VecFP>;
414def EVSRWU         : EVXForm_1<544, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
415                               "evsrwu $RT, $RA, $RB", IIC_VecFP>;
416
417def EVSTDDX        : EVXForm_1<800, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
418                               "evstddx $RT, $RA, $RB", IIC_VecFP>;
419def EVSTDHX        : EVXForm_1<804, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
420                               "evstdhx $RT, $RA, $RB", IIC_VecFP>;
421def EVSTDWX        : EVXForm_1<802, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
422                               "evstdwx $RT, $RA, $RB", IIC_VecFP>;
423def EVSTWHEX       : EVXForm_1<816, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
424                               "evstwhex $RT, $RA, $RB", IIC_VecFP>;
425def EVSTWHOX       : EVXForm_1<820, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
426                               "evstwhox $RT, $RA, $RB", IIC_VecFP>;
427def EVSTWWEX       : EVXForm_1<824, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
428                               "evstwwex $RT, $RA, $RB", IIC_VecFP>;
429def EVSTWWOX       : EVXForm_1<828, (outs), (ins gprc:$RT, gprc:$RA, gprc:$RB),
430                               "evstwwox $RT, $RA, $RB", IIC_VecFP>;
431
432def EVSUBFSSIAAW   : EVXForm_2<1219, (outs gprc:$RT), (ins gprc:$RA),
433                               "evsubfssiaaw $RT, $RA", IIC_VecFP>;
434def EVSUBFSMIAAW   : EVXForm_2<1227, (outs gprc:$RT), (ins gprc:$RA),
435                               "evsubfsmiaaw $RT, $RA", IIC_VecFP>;
436def EVSUBFUMIAAW   : EVXForm_2<1226, (outs gprc:$RT), (ins gprc:$RA),
437                               "evsubfumiaaw $RT, $RA", IIC_VecFP>;
438def EVSUBFUSIAAW   : EVXForm_2<1218, (outs gprc:$RT), (ins gprc:$RA),
439                               "evsubfusiaaw $RT, $RA", IIC_VecFP>;
440def EVSUBFW        : EVXForm_1<516, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
441                               "evsubfw $RT, $RA, $RB", IIC_VecFP>;
442def EVSUBIFW       : EVXForm_1<518, (outs gprc:$RT), (ins u5imm:$RA, gprc:$RB),
443                               "evsubifw $RT, $RA, $RB", IIC_VecFP>;
444def EVXOR          : EVXForm_1<534, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
445                               "evxor $RT, $RA, $RB", IIC_VecFP>;
446
447} // HasSPE
448