OSDN Git Service

* config/rs6000/spe.md: Same for patterns.
[pf3gnuchains/gcc-fork.git] / gcc / config / rs6000 / spe.md
1 ;; e500 SPE description
2 ;; Copyright (C) 2002 Free Software Foundation, Inc.
3 ;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
4
5 ;; This file is part of GNU CC.
6
7 ;; GNU CC is free software; you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation; either version 2, or (at your option)
10 ;; any later version.
11
12 ;; GNU CC is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 ;; GNU General Public License for more details.
16
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GNU CC; see the file COPYING.  If not, write to
19 ;; the Free Software Foundation, 59 Temple Place - Suite 330,
20 ;; Boston, MA 02111-1307, USA.
21
22 (define_constants
23   [(SPE_ACC_REGNO       111)
24    (SPEFSCR_REGNO       112)])
25
26 (define_insn "*negsf2_gpr"
27   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
28         (neg:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
29   "TARGET_HARD_FLOAT && !TARGET_FPRS"
30   "efsneg %0,%1"
31   [(set_attr "type" "fp")])
32
33 (define_insn "*abssf2_gpr"
34   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
35         (abs:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
36   "TARGET_HARD_FLOAT && !TARGET_FPRS"
37   "efsabs %0,%1"
38   [(set_attr "type" "fp")])
39
40 (define_insn "*addsf3_gpr"
41   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
42         (plus:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
43                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
44   "TARGET_HARD_FLOAT && !TARGET_FPRS"
45   "efsadd %0,%1,%2"
46   [(set_attr "type" "fp")])
47
48 (define_insn "*subsf3_gpr"
49   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
50         (minus:SF (match_operand:SF 1 "gpc_reg_operand" "r")
51                   (match_operand:SF 2 "gpc_reg_operand" "r")))]
52   "TARGET_HARD_FLOAT && !TARGET_FPRS"
53   "efssub %0,%1,%2"
54   [(set_attr "type" "fp")])
55
56 (define_insn "*mulsf3_gpr"
57   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
58         (mult:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
59                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
60   "TARGET_HARD_FLOAT && !TARGET_FPRS"
61   "efsmul %0,%1,%2"
62   [(set_attr "type" "fp")])
63
64 (define_insn "*divsf3_gpr"
65   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
66         (div:SF (match_operand:SF 1 "gpc_reg_operand" "r")
67                 (match_operand:SF 2 "gpc_reg_operand" "r")))]
68   "TARGET_HARD_FLOAT && !TARGET_FPRS"
69   "efsdiv %0,%1,%2"
70   [(set_attr "type" "fp")])
71
72 (define_insn "spe_efsctuiz"
73   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
74         (unspec:SI [(match_operand:SF 1 "gpc_reg_operand" "r")] 700))]
75   "TARGET_HARD_FLOAT && !TARGET_FPRS"
76   "efsctuiz %0,%1"
77   [(set_attr "type" "fp")])
78
79 (define_insn "spe_fixunssfsi2"
80   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
81         (unsigned_fix:SI (fix:SF (match_operand:SF 1 "gpc_reg_operand" "r"))))]
82   "TARGET_HARD_FLOAT && !TARGET_FPRS"
83   "efsctui %0,%1"
84   [(set_attr "type" "fp")])
85
86 (define_insn "spe_fix_truncsfsi2"
87   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
88         (fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
89   "TARGET_HARD_FLOAT && !TARGET_FPRS"
90   "efsctsi %0,%1"
91   [(set_attr "type" "fp")])
92
93 (define_insn "spe_floatunssisf2"
94   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
95         (unsigned_float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
96   "TARGET_HARD_FLOAT && !TARGET_FPRS"
97   "efscfui %0,%1"
98   [(set_attr "type" "fp")])
99
100 (define_insn "spe_floatsisf2"
101   [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
102         (float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
103   "TARGET_HARD_FLOAT && !TARGET_FPRS"
104   "efscfsi %0,%1"
105   [(set_attr "type" "fp")])
106
107
108 ;; SPE SIMD instructions
109
110 (define_insn "spe_evabs"
111   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
112         (abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
113   "TARGET_SPE"
114   "evabs %0,%1"
115   [(set_attr "type" "vecsimple")
116    (set_attr  "length" "4")])
117
118 (define_insn "spe_evandc"
119   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
120         (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
121                   (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
122   "TARGET_SPE"
123   "evandc %0,%1,%2"
124   [(set_attr "type" "vecsimple")
125    (set_attr  "length" "4")])
126
127 (define_insn "spe_evand"
128   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
129         (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
130                   (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
131   "TARGET_SPE"
132   "evand %0,%1,%2"
133   [(set_attr "type" "vecsimple")
134    (set_attr  "length" "4")])
135
136 ;; Vector compare instructions
137
138 (define_insn "spe_evcmpeq"
139   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
140         (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
141                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 500))]
142   "TARGET_SPE"
143   "evcmpeq %0,%1,%2"
144   [(set_attr "type" "veccmp")
145    (set_attr  "length" "4")])
146
147 (define_insn "spe_evcmpgts"
148   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
149         (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
150                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 501))]
151   "TARGET_SPE"
152   "evcmpgts %0,%1,%2"
153   [(set_attr "type" "veccmp")
154    (set_attr  "length" "4")])
155
156 (define_insn "spe_evcmpgtu"
157   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
158         (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
159                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 502))]
160   "TARGET_SPE"
161   "evcmpgtu %0,%1,%2"
162   [(set_attr "type" "veccmp")
163    (set_attr  "length" "4")])
164
165 (define_insn "spe_evcmplts"
166   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
167         (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
168                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 503))]
169   "TARGET_SPE"
170   "evcmplts %0,%1,%2"
171   [(set_attr "type" "veccmp")
172    (set_attr  "length" "4")])
173
174 (define_insn "spe_evcmpltu"
175   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
176         (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
177                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 504))]
178   "TARGET_SPE"
179   "evcmpltu %0,%1,%2"
180   [(set_attr "type" "veccmp")
181    (set_attr  "length" "4")])
182
183 ;; Floating point vector compare instructions
184
185 (define_insn "spe_evfscmpeq"
186   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
187         (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
188                     (match_operand:V2SF 2 "gpc_reg_operand" "r")] 538))
189    (clobber (reg:SI SPEFSCR_REGNO))]
190   "TARGET_SPE"
191   "evfscmpeq %0,%1,%2"
192   [(set_attr "type" "veccmp")
193    (set_attr  "length" "4")])
194
195 (define_insn "spe_evfscmpgt"
196   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
197         (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
198                     (match_operand:V2SF 2 "gpc_reg_operand" "r")] 539))
199    (clobber (reg:SI SPEFSCR_REGNO))]
200   "TARGET_SPE"
201   "evfscmpgt %0,%1,%2"
202   [(set_attr "type" "veccmp")
203    (set_attr  "length" "4")])
204
205 (define_insn "spe_evfscmplt"
206   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
207         (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
208                     (match_operand:V2SF 2 "gpc_reg_operand" "r")] 540))
209    (clobber (reg:SI SPEFSCR_REGNO))]
210   "TARGET_SPE"
211   "evfscmplt %0,%1,%2"
212   [(set_attr "type" "veccmp")
213    (set_attr  "length" "4")])
214
215 (define_insn "spe_evfststeq"
216   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
217         (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
218                     (match_operand:V2SF 2 "gpc_reg_operand" "r")] 541))]
219   "TARGET_SPE"
220   "evfststeq %0,%1,%2"
221   [(set_attr "type" "veccmp")
222    (set_attr  "length" "4")])
223
224 (define_insn "spe_evfststgt"
225   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
226         (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
227                     (match_operand:V2SF 2 "gpc_reg_operand" "r")] 542))]
228   "TARGET_SPE"
229   "evfststgt %0,%1,%2"
230   [(set_attr "type" "veccmp")
231    (set_attr  "length" "4")])
232
233 (define_insn "spe_evfststlt"
234   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
235         (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
236                     (match_operand:V2SF 2 "gpc_reg_operand" "r")] 543))]
237   "TARGET_SPE"
238   "evfststlt %0,%1,%2"
239   [(set_attr "type" "veccmp")
240    (set_attr  "length" "4")])
241
242 ;; End of vector compare instructions
243
244 (define_insn "spe_evcntlsw"
245   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
246         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 505))]
247   "TARGET_SPE"
248   "evcntlsw %0,%1"
249   [(set_attr "type" "vecsimple")
250    (set_attr  "length" "4")])
251
252 (define_insn "spe_evcntlzw"
253   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
254         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 506))]
255   "TARGET_SPE"
256   "evcntlzw %0,%1"
257   [(set_attr "type" "vecsimple")
258    (set_attr  "length" "4")])
259
260 (define_insn "spe_eveqv"
261   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
262         (not:V2SI (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
263                             (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
264   "TARGET_SPE"
265   "eveqv %0,%1,%2"
266   [(set_attr "type" "vecsimple")
267    (set_attr  "length" "4")])
268
269 (define_insn "spe_evextsb"
270   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
271         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 507))]
272   "TARGET_SPE"
273   "evextsb %0,%1"
274   [(set_attr "type" "vecsimple")
275    (set_attr  "length" "4")])
276
277 (define_insn "spe_evextsh"
278   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
279         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 508))]
280   "TARGET_SPE"
281   "evextsh %0,%1"
282   [(set_attr "type" "vecsimple")
283    (set_attr  "length" "4")])
284
285 (define_insn "spe_evlhhesplat"
286   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
287         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
288                            (match_operand:QI 2 "immediate_operand" "i"))))
289    (unspec [(const_int 0)] 509)]
290   "TARGET_SPE"
291   "evlhhesplat %0,%1,%2"
292   [(set_attr "type" "vecload")
293    (set_attr  "length" "4")])
294
295 (define_insn "spe_evlhhesplatx"
296   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
297         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
298                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
299    (unspec [(const_int 0)] 510)]
300   "TARGET_SPE"
301   "evlhhesplatx %0,%1,%2"
302   [(set_attr "type" "vecload")
303    (set_attr  "length" "4")])
304
305 (define_insn "spe_evlhhossplat"
306   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
307         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
308                            (match_operand:QI 2 "immediate_operand" "i"))))
309    (unspec [(const_int 0)] 511)]
310   "TARGET_SPE"
311   "evlhhossplat %0,%1,%2"
312   [(set_attr "type" "vecload")
313    (set_attr  "length" "4")])
314
315 (define_insn "spe_evlhhossplatx"
316   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
317         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
318                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
319    (unspec [(const_int 0)] 512)]
320   "TARGET_SPE"
321   "evlhhossplatx %0,%1,%2"
322   [(set_attr "type" "vecload")
323    (set_attr  "length" "4")])
324
325 (define_insn "spe_evlhhousplat"
326   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
327         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
328                            (match_operand:QI 2 "immediate_operand" "i"))))
329    (unspec [(const_int 0)] 513)]
330   "TARGET_SPE"
331   "evlhhousplat %0,%1,%2"
332   [(set_attr "type" "vecload")
333    (set_attr  "length" "4")])
334
335 (define_insn "spe_evlhhousplatx"
336   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
337         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
338                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
339    (unspec [(const_int 0)] 514)]
340   "TARGET_SPE"
341   "evlhhousplatx %0,%1,%2"
342   [(set_attr "type" "vecload")
343    (set_attr  "length" "4")])
344
345 (define_insn "spe_evlwhsplat"
346   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
347         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
348                            (match_operand:QI 2 "immediate_operand" "i"))))
349    (unspec [(const_int 0)] 515)]
350   "TARGET_SPE"
351   "evlwhsplat %0,%1,%2"
352   [(set_attr "type" "vecload")
353    (set_attr  "length" "4")])
354
355 (define_insn "spe_evlwhsplatx"
356   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
357         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
358                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
359    (unspec [(const_int 0)] 516)]
360   "TARGET_SPE"
361   "evlwhsplatx %0,%1,%2"
362   [(set_attr "type" "vecload")
363    (set_attr  "length" "4")])
364
365 (define_insn "spe_evlwwsplat"
366   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
367         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
368                            (match_operand:QI 2 "immediate_operand" "i"))))
369    (unspec [(const_int 0)] 517)]
370   "TARGET_SPE"
371   "evlwwsplat %0,%1,%2"
372   [(set_attr "type" "vecload")
373    (set_attr  "length" "4")])
374
375 (define_insn "spe_evlwwsplatx"
376   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
377         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
378                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
379    (unspec [(const_int 0)] 518)]
380   "TARGET_SPE"
381   "evlwwsplatx %0,%1,%2"
382   [(set_attr "type" "vecload")
383    (set_attr  "length" "4")])
384
385 (define_insn "spe_evmergehi"
386   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
387         (vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
388                         (vec_select:V2SI
389                          (match_operand:V2SI 2 "gpc_reg_operand" "r")
390                          (parallel [(const_int 1)
391                                     (const_int 0)]))
392                         (const_int 2)))]
393   "TARGET_SPE"
394   "evmergehi %0,%1,%2"
395   [(set_attr "type" "vecsimple")
396    (set_attr  "length" "4")])
397
398 (define_insn "spe_evmergehilo"
399   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
400         (vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
401                         (match_operand:V2SI 2 "gpc_reg_operand" "r")
402                         (const_int 2)))]
403   "TARGET_SPE"
404   "evmergehilo %0,%1,%2"
405   [(set_attr "type" "vecsimple")
406    (set_attr  "length" "4")])
407
408 (define_insn "spe_evmergelo"
409   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
410         (vec_merge:V2SI (vec_select:V2SI
411                          (match_operand:V2SI 1 "gpc_reg_operand" "r")
412                          (parallel [(const_int 1)
413                                     (const_int 0)]))
414                         (match_operand:V2SI 2 "gpc_reg_operand" "r")
415                         (const_int 2)))]
416   "TARGET_SPE"
417   "evmergelo %0,%1,%2"
418   [(set_attr "type" "vecsimple")
419    (set_attr  "length" "4")])
420
421 (define_insn "spe_evmergelohi"
422   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
423         (vec_merge:V2SI (vec_select:V2SI
424                          (match_operand:V2SI 1 "gpc_reg_operand" "r")
425                          (parallel [(const_int 1)
426                                     (const_int 0)]))
427                         (vec_select:V2SI
428                          (match_operand:V2SI 2 "gpc_reg_operand" "r")
429                          (parallel [(const_int 1)
430                                     (const_int 0)]))
431                         (const_int 2)))]
432   "TARGET_SPE"
433   "evmergelohi %0,%1,%2"
434   [(set_attr "type" "vecsimple")
435    (set_attr  "length" "4")])
436
437 (define_insn "spe_evnand"
438   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
439         (not:V2SI (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
440                             (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
441   "TARGET_SPE"
442   "evnand %0,%1,%2"
443   [(set_attr "type" "vecsimple")
444    (set_attr  "length" "4")])
445
446 (define_insn "spe_evneg"
447   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
448         (neg:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
449   "TARGET_SPE"
450   "evneg %0,%1"
451   [(set_attr "type" "vecsimple")
452    (set_attr  "length" "4")])
453
454 (define_insn "spe_evnor"
455   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
456         (not:V2SI  (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
457                              (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
458   "TARGET_SPE"
459   "evnor %0,%1,%2"
460   [(set_attr "type" "vecsimple")
461    (set_attr  "length" "4")])
462
463 (define_insn "spe_evorc"
464   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
465         (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
466                   (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
467   "TARGET_SPE"
468   "evorc %0,%1,%2"
469   [(set_attr "type" "vecsimple")
470    (set_attr  "length" "4")])
471
472 (define_insn "spe_evor"
473   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
474         (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
475                   (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
476   "TARGET_SPE"
477   "evor %0,%1,%2"
478   [(set_attr "type" "vecsimple")
479    (set_attr  "length" "4")])
480
481 (define_insn "spe_evrlwi"
482   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
483         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
484                       (match_operand:QI 2 "immediate_operand" "i")] 519))]
485   "TARGET_SPE"
486   "evrlwi %0,%1,%2"
487   [(set_attr "type" "vecsimple")
488    (set_attr  "length" "4")])
489
490 (define_insn "spe_evrlw"
491   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
492         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
493                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 520))]
494   "TARGET_SPE"
495   "evrlw %0,%1,%2"
496   [(set_attr "type" "veccomplex")
497    (set_attr  "length" "4")])
498
499 (define_insn "spe_evrndw"
500   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
501         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 521))]
502   "TARGET_SPE"
503   "evrndw %0,%1"
504   [(set_attr "type" "vecsimple")
505    (set_attr  "length" "4")])
506
507 (define_insn "spe_evsel"
508   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
509         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
510                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
511                       (match_operand:CC 3 "cc_reg_operand" "y")] 522))]
512   "TARGET_SPE"
513   "evsel %0,%1,%2,%3"
514   [(set_attr "type" "veccmp")
515    (set_attr "length" "4")])
516
517 (define_insn "spe_evsel_fs"
518   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
519         (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")
520                       (match_operand:V2SF 2 "gpc_reg_operand" "r")
521                       (match_operand:CC 3 "cc_reg_operand" "y")] 725))]
522   "TARGET_SPE"
523   "evsel %0,%1,%2,%3"
524   [(set_attr "type" "veccmp")
525    (set_attr "length" "4")])
526
527 (define_insn "spe_evslwi"
528   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
529         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
530                       (match_operand:QI 2 "immediate_operand" "i")]
531                      523))]
532   "TARGET_SPE"
533   "evslwi %0,%1,%2"
534   [(set_attr "type" "vecsimple")
535    (set_attr  "length" "4")])
536
537 (define_insn "spe_evslw"
538   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
539         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
540                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 524))]
541   "TARGET_SPE"
542   "evslw %0,%1,%2"
543   [(set_attr "type" "vecsimple")
544    (set_attr  "length" "4")])
545
546 (define_insn "spe_evsrwis"
547   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
548         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
549                       (match_operand:QI 2 "immediate_operand" "i")]
550                      525))]
551   "TARGET_SPE"
552   "evsrwis %0,%1,%2"
553   [(set_attr "type" "vecsimple")
554    (set_attr  "length" "4")])
555
556 (define_insn "spe_evsrwiu"
557   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
558         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
559                       (match_operand:QI 2 "immediate_operand" "i")]
560                      526))]
561   "TARGET_SPE"
562   "evsrwiu %0,%1,%2"
563   [(set_attr "type" "vecsimple")
564    (set_attr  "length" "4")])
565
566 (define_insn "spe_evsrws"
567   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
568         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
569                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 527))]
570   "TARGET_SPE"
571   "evsrws %0,%1,%2"
572   [(set_attr "type" "vecsimple")
573    (set_attr  "length" "4")])
574
575 (define_insn "spe_evsrwu"
576   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
577         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
578                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 528))]
579   "TARGET_SPE"
580   "evsrwu %0,%1,%2"
581   [(set_attr "type" "vecsimple")
582    (set_attr  "length" "4")])
583
584 (define_insn "spe_evxor"
585   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
586         (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
587                   (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
588   "TARGET_SPE"
589   "evxor %0,%1,%2"
590   [(set_attr "type" "vecsimple")
591    (set_attr  "length" "4")])
592
593 (define_insn "spe_evfsabs"
594   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
595         (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
596   "TARGET_SPE"
597   "evfsabs %0,%1"
598   [(set_attr "type" "vecfloat")
599    (set_attr  "length" "4")])
600
601 (define_insn "spe_evfsadd"
602   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
603         (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
604                    (match_operand:V2SF 2 "gpc_reg_operand" "r")))
605    (clobber (reg:SI SPEFSCR_REGNO))]
606   "TARGET_SPE"
607   "evfsadd %0,%1,%2"
608   [(set_attr "type" "vecfloat")
609    (set_attr  "length" "4")])
610
611 (define_insn "spe_evfscfsf"
612   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
613         (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 529))]
614   "TARGET_SPE"
615   "evfscfsf %0,%1"
616   [(set_attr "type" "vecfloat")
617    (set_attr  "length" "4")])
618
619 (define_insn "spe_evfscfsi"
620   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
621         (fix:V2SI (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
622   "TARGET_SPE"
623   "evfscfsi %0,%1"
624   [(set_attr "type" "vecfloat")
625    (set_attr  "length" "4")])
626
627 (define_insn "spe_evfscfuf"
628   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
629         (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 530))]
630   "TARGET_SPE"
631   "evfscfuf %0,%1"
632   [(set_attr "type" "vecfloat")
633    (set_attr  "length" "4")])
634
635 (define_insn "spe_evfscfui"
636   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
637         (unspec:V2SF [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 701))]
638   "TARGET_SPE"
639   "evfscfui %0,%1"
640   [(set_attr "type" "vecfloat")
641    (set_attr  "length" "4")])
642
643 (define_insn "spe_evfsctsf"
644   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
645         (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 531))]
646   "TARGET_SPE"
647   "evfsctsf %0,%1"
648   [(set_attr "type" "vecfloat")
649    (set_attr  "length" "4")])
650
651 (define_insn "spe_evfsctsi"
652   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
653         (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 532))]
654   "TARGET_SPE"
655   "evfsctsi %0,%1"
656   [(set_attr "type" "vecfloat")
657    (set_attr  "length" "4")])
658
659 (define_insn "spe_evfsctsiz"
660   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
661         (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 533))]
662   "TARGET_SPE"
663   "evfsctsiz %0,%1"
664   [(set_attr "type" "vecfloat")
665    (set_attr  "length" "4")])
666
667 (define_insn "spe_evfsctuf"
668   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
669         (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 534))]
670   "TARGET_SPE"
671   "evfsctuf %0,%1"
672   [(set_attr "type" "vecfloat")
673    (set_attr  "length" "4")])
674
675 (define_insn "spe_evfsctui"
676   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
677         (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 535))]
678   "TARGET_SPE"
679   "evfsctui %0,%1"
680   [(set_attr "type" "vecfloat")
681    (set_attr  "length" "4")])
682
683 (define_insn "spe_evfsctuiz"
684   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
685         (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 536))]
686   "TARGET_SPE"
687   "evfsctuiz %0,%1"
688   [(set_attr "type" "vecfloat")
689    (set_attr  "length" "4")])
690
691 (define_insn "spe_evfsdiv"
692   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
693         (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
694                   (match_operand:V2SF 2 "gpc_reg_operand" "r")))
695    (clobber (reg:SI SPEFSCR_REGNO))]
696   "TARGET_SPE"
697   "evfsdiv %0,%1,%2"
698   [(set_attr "type" "vecfloat")
699    (set_attr  "length" "4")])
700
701 (define_insn "spe_evfsmul"
702   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
703         (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
704                    (match_operand:V2SF 2 "gpc_reg_operand" "r")))
705    (clobber (reg:SI SPEFSCR_REGNO))]
706   "TARGET_SPE"
707   "evfsmul %0,%1,%2"
708   [(set_attr "type" "vecfloat")
709    (set_attr  "length" "4")])
710
711 (define_insn "spe_evfsnabs"
712   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
713         (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 537))]
714   "TARGET_SPE"
715   "evfsnabs %0,%1"
716   [(set_attr "type" "vecfloat")
717    (set_attr  "length" "4")])
718
719 (define_insn "spe_evfsneg"
720   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
721         (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
722   "TARGET_SPE"
723   "evfsneg %0,%1"
724   [(set_attr "type" "vecfloat")
725    (set_attr  "length" "4")])
726
727 (define_insn "spe_evfssub"
728   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
729         (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
730                     (match_operand:V2SF 2 "gpc_reg_operand" "r")))
731    (clobber (reg:SI SPEFSCR_REGNO))]
732   "TARGET_SPE"
733   "evfssub %0,%1,%2"
734   [(set_attr "type" "vecfloat")
735    (set_attr  "length" "4")])
736
737 ;; SPE SIMD load instructions.
738
739 ;; Only the hardware engineer who designed the SPE inderstands the
740 ;; plethora of load and store instructions ;-).  We have no way of
741 ;; differentiating between them with RTL so use an unspec of const_int 0 
742 ;; to avoid identical RTL.
743
744 (define_insn "spe_evldd"
745   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
746         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
747                            (match_operand:QI 2 "immediate_operand" "i"))))
748    (unspec [(const_int 0)] 544)]
749   "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
750   "evldd %0,%1,%2"
751   [(set_attr "type" "vecload")
752    (set_attr  "length" "4")])
753
754 (define_insn "spe_evlddx"
755   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
756         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
757                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
758    (unspec [(const_int 0)] 545)]
759   "TARGET_SPE"
760   "evlddx %0,%1,%2"
761   [(set_attr "type" "vecload")
762    (set_attr  "length" "4")])
763
764 (define_insn "spe_evldh"
765   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
766         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
767                            (match_operand:QI 2 "immediate_operand" "i"))))
768    (unspec [(const_int 0)] 546)]
769   "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
770   "evldh %0,%1,%2"
771   [(set_attr "type" "vecload")
772    (set_attr  "length" "4")])
773
774 (define_insn "spe_evldhx"
775   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
776         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
777                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
778    (unspec [(const_int 0)] 547)]
779   "TARGET_SPE"
780   "evldhx %0,%1,%2"
781   [(set_attr "type" "vecload")
782    (set_attr  "length" "4")])
783
784 (define_insn "spe_evldw"
785   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
786         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
787                            (match_operand:QI 2 "immediate_operand" "i"))))
788    (unspec [(const_int 0)] 548)]
789   "TARGET_SPE"
790   "evldw %0,%1,%2"
791   [(set_attr "type" "vecload")
792    (set_attr  "length" "4")])
793
794 (define_insn "spe_evldwx"
795   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
796         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
797                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
798    (unspec [(const_int 0)] 549)]
799   "TARGET_SPE"
800   "evldwx %0,%1,%2"
801   [(set_attr "type" "vecload")
802    (set_attr  "length" "4")])
803
804 (define_insn "spe_evlwhe"
805   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
806         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
807                            (match_operand:QI 2 "immediate_operand" "i"))))
808    (unspec [(const_int 0)] 550)]
809   "TARGET_SPE"
810   "evlwhe %0,%1,%2"
811   [(set_attr "type" "vecload")
812    (set_attr  "length" "4")])
813
814 (define_insn "spe_evlwhex"
815   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
816         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
817                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
818    (unspec [(const_int 0)] 551)]
819   "TARGET_SPE"
820   "evlwhex %0,%1,%2"
821   [(set_attr "type" "vecload")
822    (set_attr  "length" "4")])
823
824 (define_insn "spe_evlwhos"
825   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
826         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
827                            (match_operand:QI 2 "immediate_operand" "i"))))
828    (unspec [(const_int 0)] 552)]
829   "TARGET_SPE"
830   "evlwhos %0,%1,%2"
831   [(set_attr "type" "vecload")
832    (set_attr  "length" "4")])
833
834 (define_insn "spe_evlwhosx"
835   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
836         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
837                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
838    (unspec [(const_int 0)] 553)]
839   "TARGET_SPE"
840   "evlwhosx %0,%1,%2"
841   [(set_attr "type" "vecload")
842    (set_attr  "length" "4")])
843
844 (define_insn "spe_evlwhou"
845   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
846         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
847                            (match_operand:QI 2 "immediate_operand" "i"))))
848    (unspec [(const_int 0)] 554)]
849   "TARGET_SPE"
850   "evlwhou %0,%1,%2"
851   [(set_attr "type" "vecload")
852    (set_attr  "length" "4")])
853
854 (define_insn "spe_evlwhoux"
855   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
856         (mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
857                            (match_operand:SI 2 "gpc_reg_operand" "r"))))
858    (unspec [(const_int 0)] 555)]
859   "TARGET_SPE"
860   "evlwhoux %0,%1,%2"
861   [(set_attr "type" "vecload")
862    (set_attr  "length" "4")])
863
864 (define_insn "spe_brinc"
865   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
866         (unspec:SI [(match_operand:SI 1 "gpc_reg_operand" "r")
867                     (match_operand:SI 2 "gpc_reg_operand" "r")] 556))]
868   "TARGET_SPE"
869   "brinc %0,%1,%2"
870   [(set_attr "type" "veccomplex")
871    (set_attr  "length" "4")])
872
873 (define_insn "spe_evmhegsmfaa"
874   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
875         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
876                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
877                       (reg:V2SI SPE_ACC_REGNO)] 557))
878    (clobber (reg:V2SI SPE_ACC_REGNO))]
879   "TARGET_SPE"
880   "evmhegsmfaa %0,%1,%2"
881   [(set_attr "type" "veccomplex")
882    (set_attr  "length" "4")])
883
884 (define_insn "spe_evmhegsmfan"
885   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
886         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
887                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
888                       (reg:V2SI SPE_ACC_REGNO)] 558))
889    (clobber (reg:V2SI SPE_ACC_REGNO))]
890   "TARGET_SPE"
891   "evmhegsmfan %0,%1,%2"
892   [(set_attr "type" "veccomplex")
893    (set_attr  "length" "4")])
894
895 (define_insn "spe_evmhegsmiaa"
896   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
897         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
898                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
899                       (reg:V2SI SPE_ACC_REGNO)] 559))
900    (clobber (reg:V2SI SPE_ACC_REGNO))]
901   "TARGET_SPE"
902   "evmhegsmiaa %0,%1,%2"
903   [(set_attr "type" "veccomplex")
904    (set_attr  "length" "4")])
905
906 (define_insn "spe_evmhegsmian"
907   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
908         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
909                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
910                       (reg:V2SI SPE_ACC_REGNO)] 560))
911    (clobber (reg:V2SI SPE_ACC_REGNO))]
912   "TARGET_SPE"
913   "evmhegsmian %0,%1,%2"
914   [(set_attr "type" "veccomplex")
915    (set_attr  "length" "4")])
916
917 (define_insn "spe_evmhegumiaa"
918   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
919         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
920                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
921                       (reg:V2SI SPE_ACC_REGNO)] 561))
922    (clobber (reg:V2SI SPE_ACC_REGNO))]
923   "TARGET_SPE"
924   "evmhegumiaa %0,%1,%2"
925   [(set_attr "type" "veccomplex")
926    (set_attr  "length" "4")])
927
928 (define_insn "spe_evmhegumian"
929   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
930         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
931                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
932                       (reg:V2SI SPE_ACC_REGNO)] 562))
933    (clobber (reg:V2SI SPE_ACC_REGNO))]
934   "TARGET_SPE"
935   "evmhegumian %0,%1,%2"
936   [(set_attr "type" "veccomplex")
937    (set_attr  "length" "4")])
938
939 (define_insn "spe_evmhesmfaaw"
940   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
941         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
942                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
943                       (reg:V2SI SPE_ACC_REGNO)] 563))
944    (clobber (reg:V2SI SPE_ACC_REGNO))]
945   "TARGET_SPE"
946   "evmhesmfaaw %0,%1,%2"
947   [(set_attr "type" "veccomplex")
948    (set_attr  "length" "4")])
949
950 (define_insn "spe_evmhesmfanw"
951   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
952         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
953                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
954                       (reg:V2SI SPE_ACC_REGNO)] 564))
955    (clobber (reg:V2SI SPE_ACC_REGNO))]
956   "TARGET_SPE"
957   "evmhesmfanw %0,%1,%2"
958   [(set_attr "type" "veccomplex")
959    (set_attr  "length" "4")])
960
961 (define_insn "spe_evmhesmfa"
962   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
963         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
964                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 565))
965    (clobber (reg:V2SI SPE_ACC_REGNO))]
966   "TARGET_SPE"
967   "evmhesmfa %0,%1,%2"
968   [(set_attr "type" "veccomplex")
969    (set_attr  "length" "4")])
970
971 (define_insn "spe_evmhesmf"
972   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
973         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
974                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 566))]
975   "TARGET_SPE"
976   "evmhesmf %0,%1,%2"
977   [(set_attr "type" "veccomplex")
978    (set_attr  "length" "4")])
979
980 (define_insn "spe_evmhesmiaaw"
981   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
982         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
983                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
984                       (reg:V2SI SPE_ACC_REGNO)] 567))
985    (clobber (reg:V2SI SPE_ACC_REGNO))]
986   "TARGET_SPE"
987   "evmhesmiaaw %0,%1,%2"
988   [(set_attr "type" "veccomplex")
989    (set_attr  "length" "4")])
990
991 (define_insn "spe_evmhesmianw"
992   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
993         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
994                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
995                       (reg:V2SI SPE_ACC_REGNO)] 568))
996    (clobber (reg:V2SI SPE_ACC_REGNO))]
997   "TARGET_SPE"
998   "evmhesmianw %0,%1,%2"
999   [(set_attr "type" "veccomplex")
1000    (set_attr  "length" "4")])
1001
1002 (define_insn "spe_evmhesmia"
1003   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1004         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1005                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 569))
1006    (clobber (reg:V2SI SPE_ACC_REGNO))]
1007   "TARGET_SPE"
1008   "evmhesmia %0,%1,%2"
1009   [(set_attr "type" "veccomplex")
1010    (set_attr  "length" "4")])
1011
1012 (define_insn "spe_evmhesmi"
1013   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1014         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1015                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 570))]
1016   "TARGET_SPE"
1017   "evmhesmi %0,%1,%2"
1018   [(set_attr "type" "veccomplex")
1019    (set_attr  "length" "4")])
1020
1021 (define_insn "spe_evmhessfaaw"
1022   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1023         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1024                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1025                       (reg:V2SI SPE_ACC_REGNO)] 571))
1026    (clobber (reg:SI SPEFSCR_REGNO))
1027    (clobber (reg:V2SI SPE_ACC_REGNO))]
1028   "TARGET_SPE"
1029   "evmhessfaaw %0,%1,%2"
1030   [(set_attr "type" "veccomplex")
1031    (set_attr  "length" "4")])
1032
1033 (define_insn "spe_evmhessfanw"
1034   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1035         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1036                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1037                       (reg:V2SI SPE_ACC_REGNO)] 572))
1038    (clobber (reg:SI SPEFSCR_REGNO))
1039    (clobber (reg:V2SI SPE_ACC_REGNO))]
1040   "TARGET_SPE"
1041   "evmhessfanw %0,%1,%2"
1042   [(set_attr "type" "veccomplex")
1043    (set_attr  "length" "4")])
1044
1045 (define_insn "spe_evmhessfa"
1046   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1047         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1048                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 573))
1049    (clobber (reg:SI SPEFSCR_REGNO))
1050    (clobber (reg:V2SI SPE_ACC_REGNO))]
1051   "TARGET_SPE"
1052   "evmhessfa %0,%1,%2"
1053   [(set_attr "type" "veccomplex")
1054    (set_attr  "length" "4")])
1055
1056 (define_insn "spe_evmhessf"
1057   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1058         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1059                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 574))
1060    (clobber (reg:SI SPEFSCR_REGNO))]
1061   "TARGET_SPE"
1062   "evmhessf %0,%1,%2"
1063   [(set_attr "type" "veccomplex")
1064    (set_attr  "length" "4")])
1065
1066 (define_insn "spe_evmhessiaaw"
1067   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1068         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1069                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1070                       (reg:V2SI SPE_ACC_REGNO)] 575))
1071    (clobber (reg:SI SPEFSCR_REGNO))
1072    (clobber (reg:V2SI SPE_ACC_REGNO))]
1073   "TARGET_SPE"
1074   "evmhessiaaw %0,%1"
1075   [(set_attr "type" "veccomplex")
1076    (set_attr  "length" "4")])
1077
1078 (define_insn "spe_evmhessianw"
1079   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1080         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1081                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1082                       (reg:V2SI SPE_ACC_REGNO)] 576))
1083    (clobber (reg:SI SPEFSCR_REGNO))
1084    (clobber (reg:V2SI SPE_ACC_REGNO))]
1085   "TARGET_SPE"
1086   "evmhessianw %0,%1,%2"
1087   [(set_attr "type" "veccomplex")
1088    (set_attr  "length" "4")])
1089
1090 (define_insn "spe_evmheumiaaw"
1091   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1092         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1093                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1094                       (reg:V2SI SPE_ACC_REGNO)] 577))
1095    (clobber (reg:V2SI SPE_ACC_REGNO))]
1096   "TARGET_SPE"
1097   "evmheumiaaw %0,%1,%2"
1098   [(set_attr "type" "veccomplex")
1099    (set_attr  "length" "4")])
1100
1101 (define_insn "spe_evmheumianw"
1102   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1103         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1104                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1105                       (reg:V2SI SPE_ACC_REGNO)] 578))
1106    (clobber (reg:V2SI SPE_ACC_REGNO))]
1107   "TARGET_SPE"
1108   "evmheumianw %0,%1,%2"
1109   [(set_attr "type" "veccomplex")
1110    (set_attr  "length" "4")])
1111
1112 (define_insn "spe_evmheumia"
1113   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1114         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1115                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 579))
1116    (clobber (reg:V2SI SPE_ACC_REGNO))]
1117   "TARGET_SPE"
1118   "evmheumia %0,%1,%2"
1119   [(set_attr "type" "veccomplex")
1120    (set_attr  "length" "4")])
1121
1122 (define_insn "spe_evmheumi"
1123   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1124         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1125                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 580))]
1126   "TARGET_SPE"
1127   "evmheumi %0,%1,%2"
1128   [(set_attr "type" "veccomplex")
1129    (set_attr  "length" "4")])
1130
1131 (define_insn "spe_evmheusiaaw"
1132   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1133         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1134                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1135                       (reg:V2SI SPE_ACC_REGNO)] 581))
1136    (clobber (reg:SI SPEFSCR_REGNO))
1137    (clobber (reg:V2SI SPE_ACC_REGNO))]
1138   "TARGET_SPE"
1139   "evmheusiaaw %0,%1,%2"
1140   [(set_attr "type" "veccomplex")
1141    (set_attr  "length" "4")])
1142
1143 (define_insn "spe_evmheusianw"
1144   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1145         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1146                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1147                       (reg:V2SI SPE_ACC_REGNO)] 582))
1148    (clobber (reg:SI SPEFSCR_REGNO))
1149    (clobber (reg:V2SI SPE_ACC_REGNO))]
1150   "TARGET_SPE"
1151   "evmheusianw %0,%1,%2"
1152   [(set_attr "type" "veccomplex")
1153    (set_attr  "length" "4")])
1154
1155 (define_insn "spe_evmhogsmfaa"
1156   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1157         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1158                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1159                       (reg:V2SI SPE_ACC_REGNO)] 583))
1160    (clobber (reg:V2SI SPE_ACC_REGNO))]
1161   "TARGET_SPE"
1162   "evmhogsmfaa %0,%1,%2"
1163   [(set_attr "type" "veccomplex")
1164    (set_attr  "length" "4")])
1165
1166 (define_insn "spe_evmhogsmfan"
1167   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1168         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1169                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1170                       (reg:V2SI SPE_ACC_REGNO)] 584))
1171    (clobber (reg:V2SI SPE_ACC_REGNO))]
1172   "TARGET_SPE"
1173   "evmhogsmfan %0,%1,%2"
1174   [(set_attr "type" "veccomplex")
1175    (set_attr  "length" "4")])
1176
1177 (define_insn "spe_evmhogsmiaa"
1178   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1179         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1180                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1181                       (reg:V2SI SPE_ACC_REGNO)] 585))
1182    (clobber (reg:V2SI SPE_ACC_REGNO))]
1183   "TARGET_SPE"
1184   "evmhogsmiaa %0,%1,%2"
1185   [(set_attr "type" "veccomplex")
1186    (set_attr  "length" "4")])
1187
1188 (define_insn "spe_evmhogsmian"
1189   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1190         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1191                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1192                       (reg:V2SI SPE_ACC_REGNO)] 586))
1193    (clobber (reg:V2SI SPE_ACC_REGNO))]
1194   "TARGET_SPE"
1195   "evmhogsmian %0,%1,%2"
1196   [(set_attr "type" "veccomplex")
1197    (set_attr  "length" "4")])
1198
1199 (define_insn "spe_evmhogumiaa"
1200   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1201         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1202                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1203                       (reg:V2SI SPE_ACC_REGNO)] 587))
1204    (clobber (reg:V2SI SPE_ACC_REGNO))]
1205   "TARGET_SPE"
1206   "evmhogumiaa %0,%1,%2"
1207   [(set_attr "type" "veccomplex")
1208    (set_attr  "length" "4")])
1209
1210 (define_insn "spe_evmhogumian"
1211   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1212         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1213                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1214                       (reg:V2SI SPE_ACC_REGNO)] 588))
1215    (clobber (reg:V2SI SPE_ACC_REGNO))]
1216   "TARGET_SPE"
1217   "evmhogumian %0,%1,%2"
1218   [(set_attr "type" "veccomplex")
1219    (set_attr  "length" "4")])
1220
1221 (define_insn "spe_evmhosmfaaw"
1222   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1223         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1224                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1225                       (reg:V2SI SPE_ACC_REGNO)] 589))
1226    (clobber (reg:V2SI SPE_ACC_REGNO))]
1227   "TARGET_SPE"
1228   "evmhosmfaaw %0,%1,%2"
1229   [(set_attr "type" "veccomplex")
1230    (set_attr  "length" "4")])
1231
1232 (define_insn "spe_evmhosmfanw"
1233   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1234         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1235                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1236                       (reg:V2SI SPE_ACC_REGNO)] 590))
1237    (clobber (reg:V2SI SPE_ACC_REGNO))]
1238   "TARGET_SPE"
1239   "evmhosmfanw %0,%1,%2"
1240   [(set_attr "type" "veccomplex")
1241    (set_attr  "length" "4")])
1242
1243 (define_insn "spe_evmhosmfa"
1244   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1245         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1246                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 591))]
1247   "TARGET_SPE"
1248   "evmhosmfa %0,%1,%2"
1249   [(set_attr "type" "veccomplex")
1250    (set_attr  "length" "4")])
1251
1252 (define_insn "spe_evmhosmf"
1253   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1254         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1255                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 592))
1256    (clobber (reg:V2SI SPE_ACC_REGNO))]
1257   "TARGET_SPE"
1258   "evmhosmf %0,%1,%2"
1259   [(set_attr "type" "veccomplex")
1260    (set_attr  "length" "4")])
1261
1262 (define_insn "spe_evmhosmiaaw"
1263   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1264         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1265                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1266                       (reg:V2SI SPE_ACC_REGNO)] 593))
1267    (clobber (reg:V2SI SPE_ACC_REGNO))]
1268   "TARGET_SPE"
1269   "evmhosmiaaw %0,%1,%2"
1270   [(set_attr "type" "veccomplex")
1271    (set_attr  "length" "4")])
1272
1273 (define_insn "spe_evmhosmianw"
1274   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1275         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1276                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1277                       (reg:V2SI SPE_ACC_REGNO)] 594))
1278    (clobber (reg:V2SI SPE_ACC_REGNO))]
1279   "TARGET_SPE"
1280   "evmhosmianw %0,%1,%2"
1281   [(set_attr "type" "veccomplex")
1282    (set_attr  "length" "4")])
1283
1284 (define_insn "spe_evmhosmia"
1285   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1286         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1287                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 595))
1288    (clobber (reg:V2SI SPE_ACC_REGNO))]
1289   "TARGET_SPE"
1290   "evmhosmia %0,%1,%2"
1291   [(set_attr "type" "veccomplex")
1292    (set_attr  "length" "4")])
1293
1294 (define_insn "spe_evmhosmi"
1295   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1296         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1297                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 596))]
1298   "TARGET_SPE"
1299   "evmhosmi %0,%1,%2"
1300   [(set_attr "type" "veccomplex")
1301    (set_attr  "length" "4")])
1302
1303 (define_insn "spe_evmhossfaaw"
1304   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1305         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1306                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1307                       (reg:V2SI SPE_ACC_REGNO)] 597))
1308    (clobber (reg:SI SPEFSCR_REGNO))
1309    (clobber (reg:V2SI SPE_ACC_REGNO))]
1310   "TARGET_SPE"
1311   "evmhossfaaw %0,%1,%2"
1312   [(set_attr "type" "veccomplex")
1313    (set_attr  "length" "4")])
1314
1315 (define_insn "spe_evmhossfanw"
1316   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1317         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1318                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1319                       (reg:V2SI SPE_ACC_REGNO)] 598))
1320    (clobber (reg:SI SPEFSCR_REGNO))
1321    (clobber (reg:V2SI SPE_ACC_REGNO))]
1322   "TARGET_SPE"
1323   "evmhossfanw %0,%1,%2"
1324   [(set_attr "type" "veccomplex")
1325    (set_attr  "length" "4")])
1326
1327 (define_insn "spe_evmhossfa"
1328   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1329         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1330                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1331                       (reg:V2SI SPE_ACC_REGNO)] 599))
1332    (clobber (reg:SI SPEFSCR_REGNO))
1333    (clobber (reg:V2SI SPE_ACC_REGNO))]
1334   "TARGET_SPE"
1335   "evmhossfa %0,%1,%2"
1336   [(set_attr "type" "veccomplex")
1337    (set_attr  "length" "4")])
1338
1339 (define_insn "spe_evmhossf"
1340   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1341         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1342                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 600))
1343    (clobber (reg:SI SPEFSCR_REGNO))]
1344   "TARGET_SPE"
1345   "evmhossf %0,%1,%2"
1346   [(set_attr "type" "veccomplex")
1347    (set_attr  "length" "4")])
1348
1349 (define_insn "spe_evmhossiaaw"
1350   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1351         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1352                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1353                       (reg:V2SI SPE_ACC_REGNO)] 601))
1354    (clobber (reg:SI SPEFSCR_REGNO))
1355    (clobber (reg:V2SI SPE_ACC_REGNO))]
1356   "TARGET_SPE"
1357   "evmhossiaaw %0,%1,%2"
1358   [(set_attr "type" "veccomplex")
1359    (set_attr  "length" "4")])
1360
1361 (define_insn "spe_evmhossianw"
1362   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1363         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1364                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1365                       (reg:V2SI SPE_ACC_REGNO)] 602))
1366    (clobber (reg:SI SPEFSCR_REGNO))
1367    (clobber (reg:V2SI SPE_ACC_REGNO))]
1368   "TARGET_SPE"
1369   "evmhossianw %0,%1,%2"
1370   [(set_attr "type" "veccomplex")
1371    (set_attr  "length" "4")])
1372
1373 (define_insn "spe_evmhoumiaaw"
1374   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1375         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1376                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1377                       (reg:V2SI SPE_ACC_REGNO)] 603))
1378    (clobber (reg:V2SI SPE_ACC_REGNO))]
1379   "TARGET_SPE"
1380   "evmhoumiaaw %0,%1,%2"
1381   [(set_attr "type" "veccomplex")
1382    (set_attr  "length" "4")])
1383
1384 (define_insn "spe_evmhoumianw"
1385   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1386         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1387                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1388                       (reg:V2SI SPE_ACC_REGNO)] 604))
1389    (clobber (reg:V2SI SPE_ACC_REGNO))]
1390   "TARGET_SPE"
1391   "evmhoumianw %0,%1,%2"
1392   [(set_attr "type" "veccomplex")
1393    (set_attr  "length" "4")])
1394
1395 (define_insn "spe_evmhoumia"
1396   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1397         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1398                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 605))
1399    (clobber (reg:V2SI SPE_ACC_REGNO))]
1400   "TARGET_SPE"
1401   "evmhoumia %0,%1,%2"
1402   [(set_attr "type" "veccomplex")
1403    (set_attr  "length" "4")])
1404
1405 (define_insn "spe_evmhoumi"
1406   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1407         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1408                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 606))]
1409   "TARGET_SPE"
1410   "evmhoumi %0,%1,%2"
1411   [(set_attr "type" "veccomplex")
1412    (set_attr  "length" "4")])
1413
1414 (define_insn "spe_evmhousiaaw"
1415   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1416         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1417                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1418                       (reg:V2SI SPE_ACC_REGNO)] 607))
1419    (clobber (reg:SI SPEFSCR_REGNO))
1420    (clobber (reg:V2SI SPE_ACC_REGNO))]
1421   "TARGET_SPE"
1422   "evmhousiaaw %0,%1,%2"
1423   [(set_attr "type" "veccomplex")
1424    (set_attr  "length" "4")])
1425
1426 (define_insn "spe_evmhousianw"
1427   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1428         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1429                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1430                       (reg:V2SI SPE_ACC_REGNO)] 608))
1431    (clobber (reg:SI SPEFSCR_REGNO))
1432    (clobber (reg:V2SI SPE_ACC_REGNO))]
1433   "TARGET_SPE"
1434   "evmhousianw %0,%1,%2"
1435   [(set_attr "type" "veccomplex")
1436    (set_attr  "length" "4")])
1437
1438 (define_insn "spe_evmmlssfa"
1439   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1440         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1441                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 609))]
1442   "TARGET_SPE"
1443   "evmmlssfa %0,%1,%2"
1444   [(set_attr "type" "veccomplex")
1445    (set_attr  "length" "4")])
1446
1447 (define_insn "spe_evmmlssf"
1448   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1449         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1450                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 610))]
1451   "TARGET_SPE"
1452   "evmmlssf %0,%1,%2"
1453   [(set_attr "type" "veccomplex")
1454    (set_attr  "length" "4")])
1455
1456 (define_insn "spe_evmwhsmfa"
1457   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1458         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1459                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 611))
1460    (clobber (reg:V2SI SPE_ACC_REGNO))]
1461   "TARGET_SPE"
1462   "evmwhsmfa %0,%1,%2"
1463   [(set_attr "type" "veccomplex")
1464    (set_attr  "length" "4")])
1465
1466 (define_insn "spe_evmwhsmf"
1467   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1468         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1469                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 612))]
1470   "TARGET_SPE"
1471   "evmwhsmf %0,%1,%2"
1472   [(set_attr "type" "veccomplex")
1473    (set_attr  "length" "4")])
1474
1475 (define_insn "spe_evmwhsmia"
1476   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1477         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1478                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 613))
1479    (clobber (reg:V2SI SPE_ACC_REGNO))]
1480   "TARGET_SPE"
1481   "evmwhsmia %0,%1,%2"
1482   [(set_attr "type" "veccomplex")
1483    (set_attr  "length" "4")])
1484
1485 (define_insn "spe_evmwhsmi"
1486   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1487         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1488                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 614))]
1489   "TARGET_SPE"
1490   "evmwhsmi %0,%1,%2"
1491   [(set_attr "type" "veccomplex")
1492    (set_attr  "length" "4")])
1493
1494 (define_insn "spe_evmwhssfa"
1495   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1496         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1497                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 615))
1498    (clobber (reg:SI SPEFSCR_REGNO))
1499    (clobber (reg:V2SI SPE_ACC_REGNO))]
1500   "TARGET_SPE"
1501   "evmwhssfa %0,%1,%2"
1502   [(set_attr "type" "veccomplex")
1503    (set_attr  "length" "4")])
1504
1505 (define_insn "spe_evmwhusian"
1506   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1507         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1508                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 626))]
1509   "TARGET_SPE"
1510   "evmwhusian %0,%1,%2"
1511   [(set_attr "type" "veccomplex")
1512    (set_attr  "length" "4")])
1513
1514 (define_insn "spe_evmwhssf"
1515   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1516         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1517                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 628))
1518    (clobber (reg:SI SPEFSCR_REGNO))]
1519   "TARGET_SPE"
1520   "evmwhssf %0,%1,%2"
1521   [(set_attr "type" "veccomplex")
1522    (set_attr  "length" "4")])
1523
1524 (define_insn "spe_evmwhumia"
1525   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1526         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1527                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 629))
1528    (clobber (reg:V2SI SPE_ACC_REGNO))]
1529   "TARGET_SPE"
1530   "evmwhumia %0,%1,%2"
1531   [(set_attr "type" "veccomplex")
1532    (set_attr  "length" "4")])
1533
1534 (define_insn "spe_evmwhumi"
1535   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1536         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1537                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 630))]
1538   "TARGET_SPE"
1539   "evmwhumi %0,%1,%2"
1540   [(set_attr "type" "veccomplex")
1541    (set_attr  "length" "4")])
1542
1543 (define_insn "spe_evmwlsmiaaw"
1544   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1545         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1546                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1547                       (reg:V2SI SPE_ACC_REGNO)] 635))
1548    (clobber (reg:V2SI SPE_ACC_REGNO))]
1549   "TARGET_SPE"
1550   "evmwlsmiaaw %0,%1,%2"
1551   [(set_attr "type" "veccomplex")
1552    (set_attr  "length" "4")])
1553
1554 (define_insn "spe_evmwlsmianw"
1555   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1556         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1557                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1558                       (reg:V2SI SPE_ACC_REGNO)] 636))
1559    (clobber (reg:V2SI SPE_ACC_REGNO))]
1560   "TARGET_SPE"
1561   "evmwlsmianw %0,%1,%2"
1562   [(set_attr "type" "veccomplex")
1563    (set_attr  "length" "4")])
1564
1565 (define_insn "spe_evmwlssiaaw"
1566   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1567         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1568                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1569                       (reg:V2SI SPE_ACC_REGNO)] 641))
1570    (clobber (reg:SI SPEFSCR_REGNO))
1571    (clobber (reg:V2SI SPE_ACC_REGNO))]
1572   "TARGET_SPE"
1573   "evmwlssiaaw %0,%1,%2"
1574   [(set_attr "type" "veccomplex")
1575    (set_attr  "length" "4")])
1576
1577 (define_insn "spe_evmwlssianw"
1578   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1579         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1580                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1581                       (reg:V2SI SPE_ACC_REGNO)] 642))
1582    (clobber (reg:SI SPEFSCR_REGNO))
1583    (clobber (reg:V2SI SPE_ACC_REGNO))]
1584   "TARGET_SPE"
1585   "evmwlssianw %0,%1,%2"
1586   [(set_attr "type" "veccomplex")
1587    (set_attr  "length" "4")])
1588
1589 (define_insn "spe_evmwlumiaaw"
1590   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1591         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1592                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1593                       (reg:V2SI SPE_ACC_REGNO)] 643))
1594    (clobber (reg:V2SI SPE_ACC_REGNO))]
1595   "TARGET_SPE"
1596   "evmwlumiaaw %0,%1,%2"
1597   [(set_attr "type" "veccomplex")
1598    (set_attr  "length" "4")])
1599
1600 (define_insn "spe_evmwlumianw"
1601   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1602         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1603                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1604                       (reg:V2SI SPE_ACC_REGNO)] 644))
1605    (clobber (reg:V2SI SPE_ACC_REGNO))]
1606   "TARGET_SPE"
1607   "evmwlumianw %0,%1,%2"
1608   [(set_attr "type" "veccomplex")
1609    (set_attr  "length" "4")])
1610
1611 (define_insn "spe_evmwlumia"
1612   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1613         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1614                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 645))
1615    (clobber (reg:V2SI SPE_ACC_REGNO))]
1616   "TARGET_SPE"
1617   "evmwlumia %0,%1,%2"
1618   [(set_attr "type" "veccomplex")
1619    (set_attr  "length" "4")])
1620
1621 (define_insn "spe_evmwlumi"
1622   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1623         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1624                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 646))]
1625   "TARGET_SPE"
1626   "evmwlumi %0,%1,%2"
1627   [(set_attr "type" "veccomplex")
1628    (set_attr  "length" "4")])
1629
1630 (define_insn "spe_evmwlusiaaw"
1631   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1632         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1633                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1634                       (reg:V2SI SPE_ACC_REGNO)] 647))
1635    (clobber (reg:SI SPEFSCR_REGNO))
1636    (clobber (reg:V2SI SPE_ACC_REGNO))]
1637   "TARGET_SPE"
1638   "evmwlusiaaw %0,%1,%2"
1639   [(set_attr "type" "veccomplex")
1640    (set_attr  "length" "4")])
1641
1642 (define_insn "spe_evmwlusianw"
1643   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1644         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1645                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1646                       (reg:V2SI SPE_ACC_REGNO)] 648))
1647    (clobber (reg:SI SPEFSCR_REGNO))
1648    (clobber (reg:V2SI SPE_ACC_REGNO))]
1649   "TARGET_SPE"
1650   "evmwlusianw %0,%1,%2"
1651   [(set_attr "type" "veccomplex")
1652    (set_attr  "length" "4")])
1653
1654 (define_insn "spe_evmwsmfaa"
1655   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1656         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1657                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1658                       (reg:V2SI SPE_ACC_REGNO)] 649))
1659    (clobber (reg:V2SI SPE_ACC_REGNO))]
1660   "TARGET_SPE"
1661   "evmwsmfaa %0,%1,%2"
1662   [(set_attr "type" "veccomplex")
1663    (set_attr  "length" "4")])
1664
1665 (define_insn "spe_evmwsmfan"
1666   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1667         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1668                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1669                       (reg:V2SI SPE_ACC_REGNO)] 650))
1670    (clobber (reg:V2SI SPE_ACC_REGNO))]
1671   "TARGET_SPE"
1672   "evmwsmfan %0,%1,%2"
1673   [(set_attr "type" "veccomplex")
1674    (set_attr  "length" "4")])
1675
1676 (define_insn "spe_evmwsmfa"
1677   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1678         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1679                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 651))
1680    (clobber (reg:V2SI SPE_ACC_REGNO))]
1681   "TARGET_SPE"
1682   "evmwsmfa %0,%1,%2"
1683   [(set_attr "type" "veccomplex")
1684    (set_attr  "length" "4")])
1685
1686 (define_insn "spe_evmwsmf"
1687   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1688         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1689                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 652))]
1690   "TARGET_SPE"
1691   "evmwsmf %0,%1,%2"
1692   [(set_attr "type" "veccomplex")
1693    (set_attr  "length" "4")])
1694
1695 (define_insn "spe_evmwsmiaa"
1696   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1697         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1698                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1699                       (reg:V2SI SPE_ACC_REGNO)] 653))
1700    (clobber (reg:V2SI SPE_ACC_REGNO))]
1701   "TARGET_SPE"
1702   "evmwsmiaa %0,%1,%2"
1703   [(set_attr "type" "veccomplex")
1704    (set_attr  "length" "4")])
1705
1706 (define_insn "spe_evmwsmian"
1707   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1708         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1709                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1710                       (reg:V2SI SPE_ACC_REGNO)] 654))
1711    (clobber (reg:V2SI SPE_ACC_REGNO))]
1712   "TARGET_SPE"
1713   "evmwsmian %0,%1,%2"
1714   [(set_attr "type" "veccomplex")
1715    (set_attr  "length" "4")])
1716
1717 (define_insn "spe_evmwsmia"
1718   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1719         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1720                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 655))
1721    (clobber (reg:V2SI SPE_ACC_REGNO))]
1722   "TARGET_SPE"
1723   "evmwsmia %0,%1,%2"
1724   [(set_attr "type" "veccomplex")
1725    (set_attr  "length" "4")])
1726
1727 (define_insn "spe_evmwsmi"
1728   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1729         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1730                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 656))]
1731   "TARGET_SPE"
1732   "evmwsmi %0,%1,%2"
1733   [(set_attr "type" "veccomplex")
1734    (set_attr  "length" "4")])
1735
1736 (define_insn "spe_evmwssfaa"
1737   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1738         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1739                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1740                       (reg:V2SI SPE_ACC_REGNO)] 657))
1741    (clobber (reg:SI SPEFSCR_REGNO))
1742    (clobber (reg:V2SI SPE_ACC_REGNO))]
1743   "TARGET_SPE"
1744   "evmwssfaa %0,%1,%2"
1745   [(set_attr "type" "veccomplex")
1746    (set_attr  "length" "4")])
1747
1748 (define_insn "spe_evmwssfan"
1749   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1750         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1751                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1752                       (reg:V2SI SPE_ACC_REGNO)] 658))
1753    (clobber (reg:SI SPEFSCR_REGNO))
1754    (clobber (reg:V2SI SPE_ACC_REGNO))]
1755   "TARGET_SPE"
1756   "evmwssfan %0,%1,%2"
1757   [(set_attr "type" "veccomplex")
1758    (set_attr  "length" "4")])
1759
1760 (define_insn "spe_evmwssfa"
1761   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1762         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1763                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 659))
1764    (clobber (reg:SI SPEFSCR_REGNO))
1765    (clobber (reg:V2SI SPE_ACC_REGNO))]
1766   "TARGET_SPE"
1767   "evmwssfa %0,%1,%2"
1768   [(set_attr "type" "veccomplex")
1769    (set_attr  "length" "4")])
1770
1771 (define_insn "spe_evmwssf"
1772   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1773         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1774                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 660))
1775    (clobber (reg:SI SPEFSCR_REGNO))]
1776   "TARGET_SPE"
1777   "evmwssf %0,%1,%2"
1778   [(set_attr "type" "veccomplex")
1779    (set_attr  "length" "4")])
1780
1781 (define_insn "spe_evmwumiaa"
1782   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1783         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1784                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1785                       (reg:V2SI SPE_ACC_REGNO)] 661))
1786    (clobber (reg:V2SI SPE_ACC_REGNO))]
1787   "TARGET_SPE"
1788   "evmwumiaa %0,%1,%2"
1789   [(set_attr "type" "veccomplex")
1790    (set_attr  "length" "4")])
1791
1792 (define_insn "spe_evmwumian"
1793   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1794         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1795                       (match_operand:V2SI 2 "gpc_reg_operand" "r")
1796                       (reg:V2SI SPE_ACC_REGNO)] 662))
1797    (clobber (reg:V2SI SPE_ACC_REGNO))]
1798   "TARGET_SPE"
1799   "evmwumian %0,%1,%2"
1800   [(set_attr "type" "veccomplex")
1801    (set_attr  "length" "4")])
1802
1803 (define_insn "spe_evmwumia"
1804   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1805         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1806                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 663))
1807    (clobber (reg:V2SI SPE_ACC_REGNO))]
1808   "TARGET_SPE"
1809   "evmwumia %0,%1,%2"
1810   [(set_attr "type" "veccomplex")
1811    (set_attr  "length" "4")])
1812
1813 (define_insn "spe_evmwumi"
1814   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1815         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1816                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 664))]
1817   "TARGET_SPE"
1818   "evmwumi %0,%1,%2"
1819   [(set_attr "type" "veccomplex")
1820    (set_attr  "length" "4")])
1821
1822 (define_insn "spe_evaddw"
1823   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1824         (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1825                    (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
1826   "TARGET_SPE"
1827   "evaddw %0,%1,%2"
1828   [(set_attr "type" "veccomplex")
1829    (set_attr  "length" "4")])
1830
1831 (define_insn "spe_evaddusiaaw"
1832   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1833         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1834                       (reg:V2SI SPE_ACC_REGNO)] 673))
1835    (clobber (reg:SI SPEFSCR_REGNO))
1836    (clobber (reg:V2SI SPE_ACC_REGNO))]
1837   "TARGET_SPE"
1838   "evaddusiaaw %0,%1"
1839   [(set_attr "type" "veccomplex")
1840    (set_attr  "length" "4")])
1841
1842 (define_insn "spe_evaddumiaaw"
1843   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1844         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1845                       (reg:V2SI SPE_ACC_REGNO)] 674))
1846    (clobber (reg:V2SI SPE_ACC_REGNO))]
1847   "TARGET_SPE"
1848   "evaddumiaaw %0,%1"
1849   [(set_attr "type" "veccomplex")
1850    (set_attr  "length" "4")])
1851
1852 (define_insn "spe_evaddssiaaw"
1853   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1854         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1855                       (reg:V2SI SPE_ACC_REGNO)] 675))
1856    (clobber (reg:SI SPEFSCR_REGNO))
1857    (clobber (reg:V2SI SPE_ACC_REGNO))]
1858   "TARGET_SPE"
1859   "evaddssiaaw %0,%1"
1860   [(set_attr "type" "veccomplex")
1861    (set_attr  "length" "4")])
1862
1863 (define_insn "spe_evaddsmiaaw"
1864   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1865         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1866                       (reg:V2SI SPE_ACC_REGNO)] 676))
1867    (clobber (reg:V2SI SPE_ACC_REGNO))]
1868   "TARGET_SPE"
1869   "evaddsmiaaw %0,%1"
1870   [(set_attr "type" "veccomplex")
1871    (set_attr  "length" "4")])
1872
1873 (define_insn "spe_evaddiw"
1874   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1875         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1876                       (match_operand:QI 2 "immediate_operand" "i")] 677))]
1877   "TARGET_SPE"
1878   "evaddiw %0,%1,%2"
1879   [(set_attr "type" "veccomplex")
1880    (set_attr  "length" "4")])
1881
1882 (define_insn "spe_evsubifw"
1883   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1884         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1885                       (match_operand:QI 2 "immediate_operand" "i")] 678))]
1886   "TARGET_SPE"
1887   "evsubifw %0,%2,%1"
1888   [(set_attr "type" "veccomplex")
1889    (set_attr  "length" "4")])
1890
1891 (define_insn "spe_evsubfw"
1892   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1893         (minus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1894                     (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
1895   "TARGET_SPE"
1896   "evsubfw %0,%1,%2"
1897   [(set_attr "type" "veccomplex")
1898    (set_attr  "length" "4")])
1899
1900 (define_insn "spe_evsubfusiaaw"
1901   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1902         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1903                       (reg:V2SI SPE_ACC_REGNO)] 679))
1904    (clobber (reg:SI SPEFSCR_REGNO))
1905    (clobber (reg:V2SI SPE_ACC_REGNO))]
1906   "TARGET_SPE"
1907   "evsubfusiaaw %0,%1"
1908   [(set_attr "type" "veccomplex")
1909    (set_attr  "length" "4")])
1910
1911 (define_insn "spe_evsubfumiaaw"
1912   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1913         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1914                       (reg:V2SI SPE_ACC_REGNO)] 680))
1915    (clobber (reg:V2SI SPE_ACC_REGNO))]
1916   "TARGET_SPE"
1917   "evsubfumiaaw %0,%1"
1918   [(set_attr "type" "veccomplex")
1919    (set_attr  "length" "4")])
1920
1921 (define_insn "spe_evsubfssiaaw"
1922   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1923         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1924                       (reg:V2SI SPE_ACC_REGNO)] 681))
1925    (clobber (reg:SI SPEFSCR_REGNO))
1926    (clobber (reg:V2SI SPE_ACC_REGNO))]
1927   "TARGET_SPE"
1928   "evsubfssiaaw %0,%1"
1929   [(set_attr "type" "veccomplex")
1930    (set_attr  "length" "4")])
1931
1932 (define_insn "spe_evsubfsmiaaw"
1933   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1934         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1935                       (reg:V2SI SPE_ACC_REGNO)] 682))
1936    (clobber (reg:V2SI SPE_ACC_REGNO))]
1937   "TARGET_SPE"
1938   "evsubfsmiaaw %0,%1"
1939   [(set_attr "type" "veccomplex")
1940    (set_attr  "length" "4")])
1941
1942 (define_insn "spe_evmra"
1943   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1944         (match_operand:V2SI 1 "gpc_reg_operand" "r"))
1945    (set (reg:V2SI SPE_ACC_REGNO)
1946         (unspec:V2SI [(match_dup 1)] 726))]
1947   "TARGET_SPE"
1948   "evmra %0,%1"
1949   [(set_attr "type" "veccomplex")
1950    (set_attr  "length" "4")])
1951
1952 (define_insn "spe_evdivws"
1953   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1954         (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1955                   (match_operand:V2SI 2 "gpc_reg_operand" "r")))
1956    (clobber (reg:SI SPEFSCR_REGNO))]
1957   "TARGET_SPE"
1958   "evdivws %0,%1,%2"
1959   [(set_attr "type" "veccomplex")
1960    (set_attr  "length" "4")])
1961
1962 (define_insn "spe_evdivwu"
1963   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1964         (udiv:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1965                    (match_operand:V2SI 2 "gpc_reg_operand" "r")))
1966       (clobber (reg:SI SPEFSCR_REGNO))]
1967   "TARGET_SPE"
1968   "evdivwu %0,%1,%2"
1969   [(set_attr "type" "veccomplex")
1970    (set_attr  "length" "4")])
1971
1972 (define_insn "spe_evsplatfi"
1973   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1974         (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 684))]
1975   "TARGET_SPE"
1976   "evsplatfi %1,%0"
1977   [(set_attr "type" "vecperm")
1978    (set_attr  "length" "4")])
1979
1980 (define_insn "spe_evsplati"
1981   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1982         (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 685))]
1983   "TARGET_SPE"
1984   "evsplati %1,%0"
1985   [(set_attr "type" "vecperm")
1986    (set_attr  "length" "4")])
1987
1988 (define_insn "spe_evstdd"
1989   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
1990                            (match_operand:QI 1 "immediate_operand" "i")))
1991         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
1992    (unspec [(const_int 0)] 686)]
1993   "TARGET_SPE"
1994   "evstdd %2,%0,%1"
1995   [(set_attr "type" "vecstore")
1996    (set_attr  "length" "4")])
1997
1998 (define_insn "spe_evstddx"
1999   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2000                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2001         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2002    (unspec [(const_int 0)] 687)]
2003   "TARGET_SPE"
2004   "evstddx %2,%0,%1"
2005   [(set_attr "type" "vecstore")
2006    (set_attr  "length" "4")])
2007
2008 (define_insn "spe_evstdh"
2009   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2010                            (match_operand:QI 1 "immediate_operand" "i")))
2011         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2012    (unspec [(const_int 0)] 688)]
2013   "TARGET_SPE"
2014   "evstdh %2,%0,%1"
2015   [(set_attr "type" "vecstore")
2016    (set_attr  "length" "4")])
2017
2018 (define_insn "spe_evstdhx"
2019   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2020                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2021         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2022    (unspec [(const_int 0)] 689)]
2023   "TARGET_SPE"
2024   "evstdhx %2,%0,%1"
2025   [(set_attr "type" "vecstore")
2026    (set_attr  "length" "4")])
2027
2028 (define_insn "spe_evstdw"
2029   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2030                            (match_operand:QI 1 "immediate_operand" "i")))
2031         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2032    (unspec [(const_int 0)] 690)]
2033   "TARGET_SPE"
2034   "evstdw %2,%0,%1"
2035   [(set_attr "type" "vecstore")
2036    (set_attr  "length" "4")])
2037
2038 (define_insn "spe_evstdwx"
2039   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2040                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2041         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2042    (unspec [(const_int 0)] 691)]
2043   "TARGET_SPE"
2044   "evstdwx %2,%0,%1"
2045   [(set_attr "type" "vecstore")
2046    (set_attr  "length" "4")])
2047
2048 (define_insn "spe_evstwhe"
2049   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2050                            (match_operand:QI 1 "immediate_operand" "i")))
2051         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2052    (unspec [(const_int 0)] 692)]
2053   "TARGET_SPE"
2054   "evstwhe %2,%0,%1"
2055   [(set_attr "type" "vecstore")
2056    (set_attr  "length" "4")])
2057
2058 (define_insn "spe_evstwhex"
2059   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2060                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2061         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2062    (unspec [(const_int 0)] 693)]
2063   "TARGET_SPE"
2064   "evstwhex %2,%0,%1"
2065   [(set_attr "type" "vecstore")
2066    (set_attr  "length" "4")])
2067
2068 (define_insn "spe_evstwho"
2069   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2070                            (match_operand:QI 1 "immediate_operand" "i")))
2071         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2072    (unspec [(const_int 0)] 694)]
2073   "TARGET_SPE"
2074   "evstwho %2,%0,%1"
2075   [(set_attr "type" "vecstore")
2076    (set_attr  "length" "4")])
2077
2078 (define_insn "spe_evstwhox"
2079   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2080                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2081         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2082    (unspec [(const_int 0)] 695)]
2083   "TARGET_SPE"
2084   "evstwhox %2,%0,%1"
2085   [(set_attr "type" "vecstore")
2086    (set_attr  "length" "4")])
2087
2088 (define_insn "spe_evstwwe"
2089   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2090                            (match_operand:QI 1 "immediate_operand" "i")))
2091         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2092    (unspec [(const_int 0)] 696)]
2093   "TARGET_SPE"
2094   "evstwwe %2,%0,%1"
2095   [(set_attr "type" "vecstore")
2096    (set_attr  "length" "4")])
2097
2098 (define_insn "spe_evstwwex"
2099   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2100                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2101         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2102    (unspec [(const_int 0)] 697)]
2103   "TARGET_SPE"
2104   "evstwwex %2,%0,%1"
2105   [(set_attr "type" "vecstore")
2106    (set_attr  "length" "4")])
2107
2108 (define_insn "spe_evstwwo"
2109   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2110                            (match_operand:QI 1 "immediate_operand" "i")))
2111         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2112    (unspec [(const_int 0)] 698)]
2113   "TARGET_SPE"
2114   "evstwwo %2,%0,%1"
2115   [(set_attr "type" "vecstore")
2116    (set_attr  "length" "4")])
2117
2118 (define_insn "spe_evstwwox"
2119   [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2120                            (match_operand:SI 1 "gpc_reg_operand" "r")))
2121         (match_operand:V2SI 2 "gpc_reg_operand" "r"))
2122    (unspec [(const_int 0)] 699)]
2123   "TARGET_SPE"
2124   "evstwwox %2,%0,%1"
2125   [(set_attr "type" "vecstore")
2126    (set_attr  "length" "4")])
2127
2128 ;; SPE vector clears
2129
2130 (define_insn "*movv2si_const0"
2131   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2132         (match_operand:V2SI 1 "zero_constant" ""))]
2133   "TARGET_SPE"
2134   "evxor %0,%0,%0"
2135   [(set_attr "type" "vecsimple")])
2136
2137 (define_insn "*movv2sf_const0"
2138   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
2139         (match_operand:V2SF 1 "zero_constant" ""))]
2140   "TARGET_SPE"
2141   "evxor %0,%0,%0"
2142   [(set_attr "type" "vecsimple")])
2143
2144 (define_insn "*movv4hi_const0"
2145   [(set (match_operand:V4HI 0 "gpc_reg_operand" "=r")
2146         (match_operand:V4HI 1 "zero_constant" ""))]
2147   "TARGET_SPE"
2148   "evxor %0,%0,%0"
2149   [(set_attr "type" "vecsimple")])
2150
2151 ;; Vector move instructions.
2152
2153 (define_expand "movv2si"
2154   [(set (match_operand:V2SI 0 "nonimmediate_operand" "")
2155         (match_operand:V2SI 1 "any_operand" ""))]
2156   "TARGET_SPE"
2157   "{ rs6000_emit_move (operands[0], operands[1], V2SImode); DONE; }")
2158
2159
2160 (define_insn "*movv2si_internal"
2161   [(set (match_operand:V2SI 0 "nonimmediate_operand" "=m,r,r")
2162         (match_operand:V2SI 1 "input_operand" "r,m,r"))]
2163   "TARGET_SPE"
2164   "@
2165    evstdd%X0 %1,%y0
2166    evldd%X1 %0,%y1
2167    evor %0,%1,%1"
2168   [(set_attr "type" "vecload")])
2169
2170 (define_expand "movv1di"
2171   [(set (match_operand:V1DI 0 "nonimmediate_operand" "")
2172         (match_operand:V1DI 1 "any_operand" ""))]
2173   "TARGET_SPE"
2174   "{ rs6000_emit_move (operands[0], operands[1], V1DImode); DONE; }")
2175
2176 (define_insn "*movv1di_internal"
2177   [(set (match_operand:V1DI 0 "nonimmediate_operand" "=m,r,r")
2178         (match_operand:V1DI 1 "input_operand" "r,m,r"))]
2179   "TARGET_SPE"
2180   "@
2181    evstdd%X0 %1,%y0
2182    evldd%X1 %0,%y1
2183    evor %0,%1,%1"
2184   [(set_attr "type" "vecload")])
2185
2186 (define_expand "movv4hi"
2187   [(set (match_operand:V4HI 0 "nonimmediate_operand" "")
2188         (match_operand:V4HI 1 "any_operand" ""))]
2189   "TARGET_SPE"
2190   "{ rs6000_emit_move (operands[0], operands[1], V4HImode); DONE; }")
2191
2192 (define_insn "*movv4hi_internal"
2193   [(set (match_operand:V4HI 0 "nonimmediate_operand" "=m,r,r")
2194         (match_operand:V4HI 1 "input_operand" "r,m,r"))]
2195   "TARGET_SPE"
2196   "@
2197    evstdd%X0 %1,%y0
2198    evldd%X1 %0,%y1
2199    evor %0,%1,%1"
2200   [(set_attr "type" "vecload")])
2201
2202 (define_expand "movv2sf"
2203   [(set (match_operand:V2SF 0 "nonimmediate_operand" "")
2204         (match_operand:V2SF 1 "any_operand" ""))]
2205   "TARGET_SPE"
2206   "{ rs6000_emit_move (operands[0], operands[1], V2SFmode); DONE; }")
2207
2208 (define_insn "*movv2sf_internal"
2209   [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,r,r")
2210         (match_operand:V2SF 1 "input_operand" "r,m,r"))]
2211   "TARGET_SPE"
2212   "@
2213    evstdd%X0 %1,%y0
2214    evldd%X1 %0,%y1
2215    evor %0,%1,%1"
2216   [(set_attr "type" "vecload")])
2217
2218 (define_insn "spe_evmwhssfaa"
2219   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2220         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2221                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 702))
2222    (clobber (reg:SI SPEFSCR_REGNO))
2223    (clobber (reg:V2SI SPE_ACC_REGNO))]
2224   "TARGET_SPE"
2225   "evmwhssfaa %0,%1,%2"
2226   [(set_attr "type" "veccomplex")
2227    (set_attr  "length" "4")])
2228
2229 (define_insn "spe_evmwhssmaa"
2230   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2231         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2232                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 703))
2233    (clobber (reg:SI SPEFSCR_REGNO))
2234    (clobber (reg:V2SI SPE_ACC_REGNO))]
2235   "TARGET_SPE"
2236   "evmwhssmaa %0,%1,%2"
2237   [(set_attr "type" "veccomplex")
2238    (set_attr  "length" "4")])
2239
2240 (define_insn "spe_evmwhsmfaa"
2241   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2242         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2243                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 704))
2244    (clobber (reg:V2SI SPE_ACC_REGNO))]
2245   "TARGET_SPE"
2246   "evmwhsmfaa %0,%1,%2"
2247   [(set_attr "type" "veccomplex")
2248    (set_attr  "length" "4")])
2249
2250 (define_insn "spe_evmwhsmiaa"
2251   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2252         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2253                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 705))
2254    (clobber (reg:V2SI SPE_ACC_REGNO))]
2255   "TARGET_SPE"
2256   "evmwhsmiaa %0,%1,%2"
2257   [(set_attr "type" "veccomplex")
2258    (set_attr  "length" "4")])
2259
2260 (define_insn "spe_evmwhusiaa"
2261   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2262         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2263                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 706))
2264    (clobber (reg:SI SPEFSCR_REGNO))
2265    (clobber (reg:V2SI SPE_ACC_REGNO))]
2266   "TARGET_SPE"
2267   "evmwhusiaa %0,%1,%2"
2268   [(set_attr "type" "veccomplex")
2269    (set_attr  "length" "4")])
2270
2271 (define_insn "spe_evmwhumiaa"
2272   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2273         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2274                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 707))
2275    (clobber (reg:V2SI SPE_ACC_REGNO))]
2276   "TARGET_SPE"
2277   "evmwhumiaa %0,%1,%2"
2278   [(set_attr "type" "veccomplex")
2279    (set_attr  "length" "4")])
2280
2281 (define_insn "spe_evmwhssfan"
2282   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2283         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2284                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 708))
2285    (clobber (reg:SI SPEFSCR_REGNO))
2286    (clobber (reg:V2SI SPE_ACC_REGNO))]
2287   "TARGET_SPE"
2288   "evmwhssfan %0,%1,%2"
2289   [(set_attr "type" "veccomplex")
2290    (set_attr  "length" "4")])
2291
2292 (define_insn "spe_evmwhssian"
2293   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2294         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2295                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 709))
2296    (clobber (reg:SI SPEFSCR_REGNO))
2297    (clobber (reg:V2SI SPE_ACC_REGNO))]
2298   "TARGET_SPE"
2299   "evmwhssian %0,%1,%2"
2300   [(set_attr "type" "veccomplex")
2301    (set_attr  "length" "4")])
2302
2303 (define_insn "spe_evmwhsmfan"
2304   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2305         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2306                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 710))
2307    (clobber (reg:V2SI SPE_ACC_REGNO))]
2308   "TARGET_SPE"
2309   "evmwhsmfan %0,%1,%2"
2310   [(set_attr "type" "veccomplex")
2311    (set_attr  "length" "4")])
2312
2313 (define_insn "spe_evmwhsmian"
2314   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2315         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2316                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 711))
2317    (clobber (reg:V2SI SPE_ACC_REGNO))]
2318   "TARGET_SPE"
2319   "evmwhsmian %0,%1,%2"
2320   [(set_attr "type" "veccomplex")
2321    (set_attr  "length" "4")])
2322
2323 (define_insn "spe_evmwhumian"
2324   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2325         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2326                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 713))
2327    (clobber (reg:V2SI SPE_ACC_REGNO))]
2328   "TARGET_SPE"
2329   "evmwhumian %0,%1,%2"
2330   [(set_attr "type" "veccomplex")
2331    (set_attr  "length" "4")])
2332
2333 (define_insn "spe_evmwhgssfaa"
2334   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2335         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2336                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 714))
2337    (clobber (reg:SI SPEFSCR_REGNO))
2338    (clobber (reg:V2SI SPE_ACC_REGNO))]
2339   "TARGET_SPE"
2340   "evmwhgssfaa %0,%1,%2"
2341   [(set_attr "type" "veccomplex")
2342    (set_attr  "length" "4")])
2343
2344 (define_insn "spe_evmwhgsmfaa"
2345   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2346         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2347                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 715))
2348    (clobber (reg:V2SI SPE_ACC_REGNO))]
2349   "TARGET_SPE"
2350   "evmwhgsmfaa %0,%1,%2"
2351   [(set_attr "type" "veccomplex")
2352    (set_attr  "length" "4")])
2353
2354 (define_insn "spe_evmwhgsmiaa"
2355   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2356         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2357                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 716))
2358    (clobber (reg:V2SI SPE_ACC_REGNO))]
2359   "TARGET_SPE"
2360   "evmwhgsmiaa %0,%1,%2"
2361   [(set_attr "type" "veccomplex")
2362    (set_attr  "length" "4")])
2363
2364 (define_insn "spe_evmwhgumiaa"
2365   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2366         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2367                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 717))
2368    (clobber (reg:V2SI SPE_ACC_REGNO))]
2369   "TARGET_SPE"
2370   "evmwhgumiaa %0,%1,%2"
2371   [(set_attr "type" "veccomplex")
2372    (set_attr  "length" "4")])
2373
2374 (define_insn "spe_evmwhgssfan"
2375   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2376         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2377                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 718))
2378    (clobber (reg:SI SPEFSCR_REGNO))
2379    (clobber (reg:V2SI SPE_ACC_REGNO))]
2380   "TARGET_SPE"
2381   "evmwhgssfan %0,%1,%2"
2382   [(set_attr "type" "veccomplex")
2383    (set_attr  "length" "4")])
2384
2385 (define_insn "spe_evmwhgsmfan"
2386   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2387         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2388                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 719))
2389    (clobber (reg:V2SI SPE_ACC_REGNO))]
2390   "TARGET_SPE"
2391   "evmwhgsmfan %0,%1,%2"
2392   [(set_attr "type" "veccomplex")
2393    (set_attr  "length" "4")])
2394
2395 (define_insn "spe_evmwhgsmian"
2396   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2397         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2398                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 720))
2399    (clobber (reg:V2SI SPE_ACC_REGNO))]
2400   "TARGET_SPE"
2401   "evmwhgsmian %0,%1,%2"
2402   [(set_attr "type" "veccomplex")
2403    (set_attr  "length" "4")])
2404
2405 (define_insn "spe_evmwhgumian"
2406   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2407         (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2408                       (match_operand:V2SI 2 "gpc_reg_operand" "r")] 721))
2409    (clobber (reg:V2SI SPE_ACC_REGNO))]
2410   "TARGET_SPE"
2411   "evmwhgumian %0,%1,%2"
2412   [(set_attr "type" "veccomplex")
2413    (set_attr  "length" "4")])
2414
2415 (define_insn "spe_mtspefscr"
2416   [(set (reg:SI SPEFSCR_REGNO)
2417         (unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
2418                             722))]
2419   "TARGET_SPE"
2420   "mtspefscr %0"
2421   [(set_attr "type" "vecsimple")])
2422
2423 (define_insn "spe_mfspefscr"
2424   [(set (match_operand:SI 0 "register_operand" "=r")
2425         (unspec_volatile:SI [(reg:SI SPEFSCR_REGNO)] 723))]
2426   "TARGET_SPE"
2427   "mfspefscr %0"
2428   [(set_attr "type" "vecsimple")])
2429
2430 ;; MPC8540 single-precision FP instructions on GPRs.
2431 ;; We have 2 variants for each.  One for IEEE compliant math and one
2432 ;; for non IEEE compliant math.
2433
2434 (define_insn "cmpsfeq_gpr"
2435   [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2436         (eq:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2437                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
2438   "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2439   "efscmpeq %0,%1,%2"
2440   [(set_attr "type" "fpcompare")])
2441
2442 (define_insn "tstsfeq_gpr"
2443   [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2444         (eq:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2445                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
2446   "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2447   "efststeq %0,%1,%2"
2448   [(set_attr "type" "fpcompare")])
2449
2450 (define_insn "cmpsfgt_gpr"
2451   [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2452         (gt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2453                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
2454   "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2455   "efscmpgt %0,%1,%2"
2456   [(set_attr "type" "fpcompare")])
2457
2458 (define_insn "tstsfgt_gpr"
2459   [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2460         (gt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2461                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
2462   "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2463   "efststgt %0,%1,%2"
2464   [(set_attr "type" "fpcompare")])
2465
2466 (define_insn "cmpsflt_gpr"
2467   [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2468         (lt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2469                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
2470   "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2471   "efscmplt %0,%1,%2"
2472   [(set_attr "type" "fpcompare")])
2473
2474 (define_insn "tstsflt_gpr"
2475   [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2476         (lt:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2477                  (match_operand:SF 2 "gpc_reg_operand" "r")))]
2478   "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2479   "efststlt %0,%1,%2"
2480   [(set_attr "type" "fpcompare")])
2481