spe.md revision 132718
1117395Skan;; e500 SPE description
2132718Skan;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
3117395Skan;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
4117395Skan
5132718Skan;; This file is part of GCC.
6117395Skan
7132718Skan;; GCC is free software; you can redistribute it and/or modify it
8132718Skan;; under the terms of the GNU General Public License as published
9132718Skan;; by the Free Software Foundation; either version 2, or (at your
10132718Skan;; option) any later version.
11117395Skan
12132718Skan;; GCC is distributed in the hope that it will be useful, but WITHOUT
13132718Skan;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14132718Skan;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15132718Skan;; License for more details.
16117395Skan
17117395Skan;; You should have received a copy of the GNU General Public License
18132718Skan;; along with GCC; see the file COPYING.  If not, write to the
19132718Skan;; Free Software Foundation, 59 Temple Place - Suite 330, Boston,
20132718Skan;; MA 02111-1307, USA.
21117395Skan
22117395Skan(define_constants
23117395Skan  [(SPE_ACC_REGNO	111)
24117395Skan   (SPEFSCR_REGNO	112)])
25117395Skan
26117395Skan(define_insn "*negsf2_gpr"
27117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
28117395Skan        (neg:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
29117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
30117395Skan  "efsneg %0,%1"
31132718Skan  [(set_attr "type" "fpsimple")])
32117395Skan
33117395Skan(define_insn "*abssf2_gpr"
34117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
35117395Skan	(abs:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
36117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
37117395Skan  "efsabs %0,%1"
38132718Skan  [(set_attr "type" "fpsimple")])
39117395Skan
40132718Skan(define_insn "*nabssf2_gpr"
41132718Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
42132718Skan	(neg:SF (abs:SF (match_operand:SF 1 "gpc_reg_operand" "r"))))]
43132718Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
44132718Skan  "efsnabs %0,%1"
45132718Skan  [(set_attr "type" "fpsimple")])
46132718Skan
47117395Skan(define_insn "*addsf3_gpr"
48117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
49117395Skan	(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
50117395Skan		 (match_operand:SF 2 "gpc_reg_operand" "r")))]
51117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
52117395Skan  "efsadd %0,%1,%2"
53117395Skan  [(set_attr "type" "fp")])
54117395Skan
55117395Skan(define_insn "*subsf3_gpr"
56117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
57117395Skan	(minus:SF (match_operand:SF 1 "gpc_reg_operand" "r")
58117395Skan		  (match_operand:SF 2 "gpc_reg_operand" "r")))]
59117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
60117395Skan  "efssub %0,%1,%2"
61117395Skan  [(set_attr "type" "fp")])
62117395Skan
63117395Skan(define_insn "*mulsf3_gpr"
64117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
65117395Skan        (mult:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
66117395Skan                 (match_operand:SF 2 "gpc_reg_operand" "r")))]
67117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
68117395Skan  "efsmul %0,%1,%2"
69117395Skan  [(set_attr "type" "fp")])
70117395Skan
71117395Skan(define_insn "*divsf3_gpr"
72117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
73117395Skan        (div:SF (match_operand:SF 1 "gpc_reg_operand" "r")
74117395Skan                (match_operand:SF 2 "gpc_reg_operand" "r")))]
75117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
76117395Skan  "efsdiv %0,%1,%2"
77132718Skan  [(set_attr "type" "vecfdiv")])
78117395Skan
79132718Skan(define_insn "spe_fixuns_truncsfsi2"
80117395Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
81132718Skan	(unsigned_fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
82117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
83117395Skan  "efsctuiz %0,%1"
84117395Skan  [(set_attr "type" "fp")])
85117395Skan
86117395Skan(define_insn "spe_fix_truncsfsi2"
87117395Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
88117395Skan	(fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
89117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
90132718Skan  "efsctsiz %0,%1"
91117395Skan  [(set_attr "type" "fp")])
92117395Skan
93117395Skan(define_insn "spe_floatunssisf2"
94117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
95117395Skan        (unsigned_float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
96117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
97117395Skan  "efscfui %0,%1"
98117395Skan  [(set_attr "type" "fp")])
99117395Skan
100117395Skan(define_insn "spe_floatsisf2"
101117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
102117395Skan        (float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
103117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
104117395Skan  "efscfsi %0,%1"
105117395Skan  [(set_attr "type" "fp")])
106117395Skan
107117395Skan
108117395Skan;; SPE SIMD instructions
109117395Skan
110117395Skan(define_insn "spe_evabs"
111117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
112117395Skan	(abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
113117395Skan  "TARGET_SPE"
114117395Skan  "evabs %0,%1"
115117395Skan  [(set_attr "type" "vecsimple")
116117395Skan   (set_attr  "length" "4")])
117117395Skan
118117395Skan(define_insn "spe_evandc"
119117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
120117395Skan        (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
121117395Skan		  (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
122117395Skan  "TARGET_SPE"
123117395Skan  "evandc %0,%1,%2"
124117395Skan  [(set_attr "type" "vecsimple")
125117395Skan   (set_attr  "length" "4")])
126117395Skan
127117395Skan(define_insn "spe_evand"
128117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
129117395Skan        (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
130117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
131117395Skan  "TARGET_SPE"
132117395Skan  "evand %0,%1,%2"
133117395Skan  [(set_attr "type" "vecsimple")
134117395Skan   (set_attr  "length" "4")])
135117395Skan
136117395Skan;; Vector compare instructions
137117395Skan
138117395Skan(define_insn "spe_evcmpeq"
139117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
140117395Skan	(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
141117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 500))]
142117395Skan  "TARGET_SPE"
143117395Skan  "evcmpeq %0,%1,%2"
144117395Skan  [(set_attr "type" "veccmp")
145117395Skan   (set_attr  "length" "4")])
146117395Skan
147117395Skan(define_insn "spe_evcmpgts"
148117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
149117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
150117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 501))]
151117395Skan  "TARGET_SPE"
152117395Skan  "evcmpgts %0,%1,%2"
153117395Skan  [(set_attr "type" "veccmp")
154117395Skan   (set_attr  "length" "4")])
155117395Skan
156117395Skan(define_insn "spe_evcmpgtu"
157117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
158117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
159117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 502))]
160117395Skan  "TARGET_SPE"
161117395Skan  "evcmpgtu %0,%1,%2"
162117395Skan  [(set_attr "type" "veccmp")
163117395Skan   (set_attr  "length" "4")])
164117395Skan
165117395Skan(define_insn "spe_evcmplts"
166117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
167117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
168117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 503))]
169117395Skan  "TARGET_SPE"
170117395Skan  "evcmplts %0,%1,%2"
171117395Skan  [(set_attr "type" "veccmp")
172117395Skan   (set_attr  "length" "4")])
173117395Skan
174117395Skan(define_insn "spe_evcmpltu"
175117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
176117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
177117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 504))]
178117395Skan  "TARGET_SPE"
179117395Skan  "evcmpltu %0,%1,%2"
180117395Skan  [(set_attr "type" "veccmp")
181117395Skan   (set_attr  "length" "4")])
182117395Skan
183117395Skan;; Floating point vector compare instructions
184117395Skan
185117395Skan(define_insn "spe_evfscmpeq"
186117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
187117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
188117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 538))
189117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
190117395Skan  "TARGET_SPE"
191117395Skan  "evfscmpeq %0,%1,%2"
192117395Skan  [(set_attr "type" "veccmp")
193117395Skan   (set_attr  "length" "4")])
194117395Skan
195117395Skan(define_insn "spe_evfscmpgt"
196117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
197117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
198117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 539))
199117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
200117395Skan  "TARGET_SPE"
201117395Skan  "evfscmpgt %0,%1,%2"
202117395Skan  [(set_attr "type" "veccmp")
203117395Skan   (set_attr  "length" "4")])
204117395Skan
205117395Skan(define_insn "spe_evfscmplt"
206117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
207117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
208117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 540))
209117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
210117395Skan  "TARGET_SPE"
211117395Skan  "evfscmplt %0,%1,%2"
212117395Skan  [(set_attr "type" "veccmp")
213117395Skan   (set_attr  "length" "4")])
214117395Skan
215117395Skan(define_insn "spe_evfststeq"
216117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
217117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
218117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 541))]
219117395Skan  "TARGET_SPE"
220117395Skan  "evfststeq %0,%1,%2"
221117395Skan  [(set_attr "type" "veccmp")
222117395Skan   (set_attr  "length" "4")])
223117395Skan
224117395Skan(define_insn "spe_evfststgt"
225117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
226117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
227117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 542))]
228117395Skan  "TARGET_SPE"
229117395Skan  "evfststgt %0,%1,%2"
230117395Skan  [(set_attr "type" "veccmp")
231117395Skan   (set_attr  "length" "4")])
232117395Skan
233117395Skan(define_insn "spe_evfststlt"
234117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
235117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
236117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 543))]
237117395Skan  "TARGET_SPE"
238117395Skan  "evfststlt %0,%1,%2"
239117395Skan  [(set_attr "type" "veccmp")
240117395Skan   (set_attr  "length" "4")])
241117395Skan
242117395Skan;; End of vector compare instructions
243117395Skan
244117395Skan(define_insn "spe_evcntlsw"
245117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
246117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 505))]
247117395Skan  "TARGET_SPE"
248117395Skan  "evcntlsw %0,%1"
249117395Skan  [(set_attr "type" "vecsimple")
250117395Skan   (set_attr  "length" "4")])
251117395Skan
252117395Skan(define_insn "spe_evcntlzw"
253117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
254117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 506))]
255117395Skan  "TARGET_SPE"
256117395Skan  "evcntlzw %0,%1"
257117395Skan  [(set_attr "type" "vecsimple")
258117395Skan   (set_attr  "length" "4")])
259117395Skan
260117395Skan(define_insn "spe_eveqv"
261117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
262117395Skan        (not:V2SI (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
263117395Skan			    (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
264117395Skan  "TARGET_SPE"
265117395Skan  "eveqv %0,%1,%2"
266117395Skan  [(set_attr "type" "vecsimple")
267117395Skan   (set_attr  "length" "4")])
268117395Skan
269117395Skan(define_insn "spe_evextsb"
270117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
271117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 507))]
272117395Skan  "TARGET_SPE"
273117395Skan  "evextsb %0,%1"
274117395Skan  [(set_attr "type" "vecsimple")
275117395Skan   (set_attr  "length" "4")])
276117395Skan
277117395Skan(define_insn "spe_evextsh"
278117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
279117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 508))]
280117395Skan  "TARGET_SPE"
281117395Skan  "evextsh %0,%1"
282117395Skan  [(set_attr "type" "vecsimple")
283117395Skan   (set_attr  "length" "4")])
284117395Skan
285117395Skan(define_insn "spe_evlhhesplat"
286132718Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand"  "=r")
287132718Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand"   "b")
288117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
289117395Skan   (unspec [(const_int 0)] 509)]
290132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
291132718Skan  "evlhhesplat %0,%2*2(%1)"
292117395Skan  [(set_attr "type" "vecload")
293117395Skan   (set_attr  "length" "4")])
294117395Skan
295117395Skan(define_insn "spe_evlhhesplatx"
296117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
297117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
298117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
299117395Skan   (unspec [(const_int 0)] 510)]
300117395Skan  "TARGET_SPE"
301117395Skan  "evlhhesplatx %0,%1,%2"
302117395Skan  [(set_attr "type" "vecload")
303117395Skan   (set_attr  "length" "4")])
304117395Skan
305117395Skan(define_insn "spe_evlhhossplat"
306117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
307117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
308117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
309117395Skan   (unspec [(const_int 0)] 511)]
310132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
311132718Skan  "evlhhossplat %0,%2*2(%1)"
312117395Skan  [(set_attr "type" "vecload")
313117395Skan   (set_attr  "length" "4")])
314117395Skan
315117395Skan(define_insn "spe_evlhhossplatx"
316117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
317117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
318117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
319117395Skan   (unspec [(const_int 0)] 512)]
320117395Skan  "TARGET_SPE"
321117395Skan  "evlhhossplatx %0,%1,%2"
322117395Skan  [(set_attr "type" "vecload")
323117395Skan   (set_attr  "length" "4")])
324117395Skan
325117395Skan(define_insn "spe_evlhhousplat"
326117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
327117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
328117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
329117395Skan   (unspec [(const_int 0)] 513)]
330132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
331132718Skan  "evlhhousplat %0,%2*2(%1)"
332117395Skan  [(set_attr "type" "vecload")
333117395Skan   (set_attr  "length" "4")])
334117395Skan
335117395Skan(define_insn "spe_evlhhousplatx"
336117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
337117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
338117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
339117395Skan   (unspec [(const_int 0)] 514)]
340117395Skan  "TARGET_SPE"
341117395Skan  "evlhhousplatx %0,%1,%2"
342117395Skan  [(set_attr "type" "vecload")
343117395Skan   (set_attr  "length" "4")])
344117395Skan
345117395Skan(define_insn "spe_evlwhsplat"
346117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
347117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
348117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
349117395Skan   (unspec [(const_int 0)] 515)]
350132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
351132718Skan  "evlwhsplat %0,%2*4(%1)"
352117395Skan  [(set_attr "type" "vecload")
353117395Skan   (set_attr  "length" "4")])
354117395Skan
355117395Skan(define_insn "spe_evlwhsplatx"
356117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
357117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
358117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
359117395Skan   (unspec [(const_int 0)] 516)]
360117395Skan  "TARGET_SPE"
361117395Skan  "evlwhsplatx %0,%1,%2"
362117395Skan  [(set_attr "type" "vecload")
363117395Skan   (set_attr  "length" "4")])
364117395Skan
365117395Skan(define_insn "spe_evlwwsplat"
366117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
367117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
368117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
369117395Skan   (unspec [(const_int 0)] 517)]
370132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
371132718Skan  "evlwwsplat %0,%2*4(%1)"
372117395Skan  [(set_attr "type" "vecload")
373117395Skan   (set_attr  "length" "4")])
374117395Skan
375117395Skan(define_insn "spe_evlwwsplatx"
376117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
377117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
378117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
379117395Skan   (unspec [(const_int 0)] 518)]
380117395Skan  "TARGET_SPE"
381117395Skan  "evlwwsplatx %0,%1,%2"
382117395Skan  [(set_attr "type" "vecload")
383117395Skan   (set_attr  "length" "4")])
384117395Skan
385117395Skan(define_insn "spe_evmergehi"
386117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
387117395Skan	(vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
388117395Skan			(vec_select:V2SI
389117395Skan			 (match_operand:V2SI 2 "gpc_reg_operand" "r")
390117395Skan			 (parallel [(const_int 1)
391117395Skan				    (const_int 0)]))
392117395Skan			(const_int 2)))]
393117395Skan  "TARGET_SPE"
394117395Skan  "evmergehi %0,%1,%2"
395117395Skan  [(set_attr "type" "vecsimple")
396117395Skan   (set_attr  "length" "4")])
397117395Skan
398117395Skan(define_insn "spe_evmergehilo"
399117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
400117395Skan	(vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
401117395Skan			(match_operand:V2SI 2 "gpc_reg_operand" "r")
402117395Skan			(const_int 2)))]
403117395Skan  "TARGET_SPE"
404117395Skan  "evmergehilo %0,%1,%2"
405117395Skan  [(set_attr "type" "vecsimple")
406117395Skan   (set_attr  "length" "4")])
407117395Skan
408117395Skan(define_insn "spe_evmergelo"
409117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
410117395Skan	(vec_merge:V2SI (vec_select:V2SI
411117395Skan			 (match_operand:V2SI 1 "gpc_reg_operand" "r")
412117395Skan			 (parallel [(const_int 1)
413117395Skan				    (const_int 0)]))
414117395Skan			(match_operand:V2SI 2 "gpc_reg_operand" "r")
415117395Skan			(const_int 2)))]
416117395Skan  "TARGET_SPE"
417117395Skan  "evmergelo %0,%1,%2"
418117395Skan  [(set_attr "type" "vecsimple")
419117395Skan   (set_attr  "length" "4")])
420117395Skan
421117395Skan(define_insn "spe_evmergelohi"
422117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
423117395Skan	(vec_merge:V2SI (vec_select:V2SI
424117395Skan			 (match_operand:V2SI 1 "gpc_reg_operand" "r")
425117395Skan			 (parallel [(const_int 1)
426117395Skan				    (const_int 0)]))
427117395Skan			(vec_select:V2SI
428117395Skan			 (match_operand:V2SI 2 "gpc_reg_operand" "r")
429117395Skan			 (parallel [(const_int 1)
430117395Skan				    (const_int 0)]))
431117395Skan			(const_int 2)))]
432117395Skan  "TARGET_SPE"
433117395Skan  "evmergelohi %0,%1,%2"
434117395Skan  [(set_attr "type" "vecsimple")
435117395Skan   (set_attr  "length" "4")])
436117395Skan
437117395Skan(define_insn "spe_evnand"
438117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
439117395Skan        (not:V2SI (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
440117395Skan                            (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
441117395Skan  "TARGET_SPE"
442117395Skan  "evnand %0,%1,%2"
443117395Skan  [(set_attr "type" "vecsimple")
444117395Skan   (set_attr  "length" "4")])
445117395Skan
446132718Skan(define_insn "negv2si2"
447117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
448117395Skan        (neg:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
449117395Skan  "TARGET_SPE"
450117395Skan  "evneg %0,%1"
451117395Skan  [(set_attr "type" "vecsimple")
452117395Skan   (set_attr  "length" "4")])
453117395Skan
454117395Skan(define_insn "spe_evnor"
455117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
456117395Skan        (not:V2SI  (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
457117395Skan                             (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
458117395Skan  "TARGET_SPE"
459117395Skan  "evnor %0,%1,%2"
460117395Skan  [(set_attr "type" "vecsimple")
461117395Skan   (set_attr  "length" "4")])
462117395Skan
463117395Skan(define_insn "spe_evorc"
464117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
465117395Skan        (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
466117395Skan		  (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
467117395Skan  "TARGET_SPE"
468117395Skan  "evorc %0,%1,%2"
469117395Skan  [(set_attr "type" "vecsimple")
470117395Skan   (set_attr  "length" "4")])
471117395Skan
472117395Skan(define_insn "spe_evor"
473117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
474117395Skan        (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
475117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
476117395Skan  "TARGET_SPE"
477117395Skan  "evor %0,%1,%2"
478117395Skan  [(set_attr "type" "vecsimple")
479117395Skan   (set_attr  "length" "4")])
480117395Skan
481117395Skan(define_insn "spe_evrlwi"
482117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
483117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
484117395Skan		      (match_operand:QI 2 "immediate_operand" "i")] 519))]
485117395Skan  "TARGET_SPE"
486117395Skan  "evrlwi %0,%1,%2"
487117395Skan  [(set_attr "type" "vecsimple")
488117395Skan   (set_attr  "length" "4")])
489117395Skan
490117395Skan(define_insn "spe_evrlw"
491117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
492117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
493117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 520))]
494117395Skan  "TARGET_SPE"
495117395Skan  "evrlw %0,%1,%2"
496117395Skan  [(set_attr "type" "veccomplex")
497117395Skan   (set_attr  "length" "4")])
498117395Skan
499117395Skan(define_insn "spe_evrndw"
500117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
501117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 521))]
502117395Skan  "TARGET_SPE"
503117395Skan  "evrndw %0,%1"
504117395Skan  [(set_attr "type" "vecsimple")
505117395Skan   (set_attr  "length" "4")])
506117395Skan
507117395Skan(define_insn "spe_evsel"
508117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
509117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
510117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")
511117395Skan		      (match_operand:CC 3 "cc_reg_operand" "y")] 522))]
512117395Skan  "TARGET_SPE"
513117395Skan  "evsel %0,%1,%2,%3"
514117395Skan  [(set_attr "type" "veccmp")
515117395Skan   (set_attr "length" "4")])
516117395Skan
517117395Skan(define_insn "spe_evsel_fs"
518117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
519117395Skan	(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")
520117395Skan		      (match_operand:V2SF 2 "gpc_reg_operand" "r")
521117395Skan		      (match_operand:CC 3 "cc_reg_operand" "y")] 725))]
522117395Skan  "TARGET_SPE"
523117395Skan  "evsel %0,%1,%2,%3"
524117395Skan  [(set_attr "type" "veccmp")
525117395Skan   (set_attr "length" "4")])
526117395Skan
527117395Skan(define_insn "spe_evslwi"
528117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
529117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
530117395Skan		      (match_operand:QI 2 "immediate_operand" "i")]
531117395Skan		     523))]
532117395Skan  "TARGET_SPE"
533117395Skan  "evslwi %0,%1,%2"
534117395Skan  [(set_attr "type" "vecsimple")
535117395Skan   (set_attr  "length" "4")])
536117395Skan
537117395Skan(define_insn "spe_evslw"
538117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
539117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
540117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 524))]
541117395Skan  "TARGET_SPE"
542117395Skan  "evslw %0,%1,%2"
543117395Skan  [(set_attr "type" "vecsimple")
544117395Skan   (set_attr  "length" "4")])
545117395Skan
546117395Skan(define_insn "spe_evsrwis"
547117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
548117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
549117395Skan		      (match_operand:QI 2 "immediate_operand" "i")]
550117395Skan		     525))]
551117395Skan  "TARGET_SPE"
552117395Skan  "evsrwis %0,%1,%2"
553117395Skan  [(set_attr "type" "vecsimple")
554117395Skan   (set_attr  "length" "4")])
555117395Skan
556117395Skan(define_insn "spe_evsrwiu"
557117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
558117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
559117395Skan		      (match_operand:QI 2 "immediate_operand" "i")]
560117395Skan		     526))]
561117395Skan  "TARGET_SPE"
562117395Skan  "evsrwiu %0,%1,%2"
563117395Skan  [(set_attr "type" "vecsimple")
564117395Skan   (set_attr  "length" "4")])
565117395Skan
566117395Skan(define_insn "spe_evsrws"
567117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
568117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
569117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 527))]
570117395Skan  "TARGET_SPE"
571117395Skan  "evsrws %0,%1,%2"
572117395Skan  [(set_attr "type" "vecsimple")
573117395Skan   (set_attr  "length" "4")])
574117395Skan
575117395Skan(define_insn "spe_evsrwu"
576117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
577117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
578117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 528))]
579117395Skan  "TARGET_SPE"
580117395Skan  "evsrwu %0,%1,%2"
581117395Skan  [(set_attr "type" "vecsimple")
582117395Skan   (set_attr  "length" "4")])
583117395Skan
584132718Skan;; vector xors
585132718Skan
586132718Skan(define_insn "xorv2si3"
587117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
588117395Skan        (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
589117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
590117395Skan  "TARGET_SPE"
591117395Skan  "evxor %0,%1,%2"
592117395Skan  [(set_attr "type" "vecsimple")
593117395Skan   (set_attr  "length" "4")])
594117395Skan
595132718Skan(define_insn "xorv4hi3"
596132718Skan  [(set (match_operand:V4HI 0 "gpc_reg_operand" "=r")
597132718Skan        (xor:V4HI (match_operand:V4HI 1 "gpc_reg_operand" "r")
598132718Skan		  (match_operand:V4HI 2 "gpc_reg_operand" "r")))]
599132718Skan  "TARGET_SPE"
600132718Skan  "evxor %0,%1,%2"
601132718Skan  [(set_attr "type" "vecsimple")
602132718Skan   (set_attr  "length" "4")])
603132718Skan
604132718Skan(define_insn "xorv1di3"
605132718Skan  [(set (match_operand:V1DI 0 "gpc_reg_operand" "=r")
606132718Skan        (xor:V1DI (match_operand:V1DI 1 "gpc_reg_operand" "r")
607132718Skan		  (match_operand:V1DI 2 "gpc_reg_operand" "r")))]
608132718Skan  "TARGET_SPE"
609132718Skan  "evxor %0,%1,%2"
610132718Skan  [(set_attr "type" "vecsimple")
611132718Skan   (set_attr  "length" "4")])
612132718Skan
613132718Skan;; end of vector xors
614132718Skan
615117395Skan(define_insn "spe_evfsabs"
616117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
617117395Skan        (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
618117395Skan  "TARGET_SPE"
619117395Skan  "evfsabs %0,%1"
620132718Skan  [(set_attr "type" "vecsimple")
621117395Skan   (set_attr  "length" "4")])
622117395Skan
623117395Skan(define_insn "spe_evfsadd"
624117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
625117395Skan        (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
626117395Skan		   (match_operand:V2SF 2 "gpc_reg_operand" "r")))
627117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
628117395Skan  "TARGET_SPE"
629117395Skan  "evfsadd %0,%1,%2"
630117395Skan  [(set_attr "type" "vecfloat")
631117395Skan   (set_attr  "length" "4")])
632117395Skan
633117395Skan(define_insn "spe_evfscfsf"
634117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
635117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 529))]
636117395Skan  "TARGET_SPE"
637117395Skan  "evfscfsf %0,%1"
638117395Skan  [(set_attr "type" "vecfloat")
639117395Skan   (set_attr  "length" "4")])
640117395Skan
641117395Skan(define_insn "spe_evfscfsi"
642132718Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
643132718Skan        (float:V2SF (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
644117395Skan  "TARGET_SPE"
645117395Skan  "evfscfsi %0,%1"
646117395Skan  [(set_attr "type" "vecfloat")
647117395Skan   (set_attr  "length" "4")])
648117395Skan
649117395Skan(define_insn "spe_evfscfuf"
650117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
651117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 530))]
652117395Skan  "TARGET_SPE"
653117395Skan  "evfscfuf %0,%1"
654117395Skan  [(set_attr "type" "vecfloat")
655117395Skan   (set_attr  "length" "4")])
656117395Skan
657117395Skan(define_insn "spe_evfscfui"
658117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
659117395Skan	(unspec:V2SF [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 701))]
660117395Skan  "TARGET_SPE"
661117395Skan  "evfscfui %0,%1"
662117395Skan  [(set_attr "type" "vecfloat")
663117395Skan   (set_attr  "length" "4")])
664117395Skan
665117395Skan(define_insn "spe_evfsctsf"
666117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
667117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 531))]
668117395Skan  "TARGET_SPE"
669117395Skan  "evfsctsf %0,%1"
670117395Skan  [(set_attr "type" "vecfloat")
671117395Skan   (set_attr  "length" "4")])
672117395Skan
673117395Skan(define_insn "spe_evfsctsi"
674117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
675117395Skan	(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 532))]
676117395Skan  "TARGET_SPE"
677117395Skan  "evfsctsi %0,%1"
678117395Skan  [(set_attr "type" "vecfloat")
679117395Skan   (set_attr  "length" "4")])
680117395Skan
681117395Skan(define_insn "spe_evfsctsiz"
682117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
683117395Skan	(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 533))]
684117395Skan  "TARGET_SPE"
685117395Skan  "evfsctsiz %0,%1"
686117395Skan  [(set_attr "type" "vecfloat")
687117395Skan   (set_attr  "length" "4")])
688117395Skan
689117395Skan(define_insn "spe_evfsctuf"
690117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
691117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 534))]
692117395Skan  "TARGET_SPE"
693117395Skan  "evfsctuf %0,%1"
694117395Skan  [(set_attr "type" "vecfloat")
695117395Skan   (set_attr  "length" "4")])
696117395Skan
697117395Skan(define_insn "spe_evfsctui"
698117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
699117395Skan        (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 535))]
700117395Skan  "TARGET_SPE"
701117395Skan  "evfsctui %0,%1"
702117395Skan  [(set_attr "type" "vecfloat")
703117395Skan   (set_attr  "length" "4")])
704117395Skan
705117395Skan(define_insn "spe_evfsctuiz"
706117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
707117395Skan        (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 536))]
708117395Skan  "TARGET_SPE"
709117395Skan  "evfsctuiz %0,%1"
710117395Skan  [(set_attr "type" "vecfloat")
711117395Skan   (set_attr  "length" "4")])
712117395Skan
713117395Skan(define_insn "spe_evfsdiv"
714117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
715117395Skan        (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
716117395Skan		  (match_operand:V2SF 2 "gpc_reg_operand" "r")))
717117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
718117395Skan  "TARGET_SPE"
719117395Skan  "evfsdiv %0,%1,%2"
720132718Skan  [(set_attr "type" "vecfdiv")
721117395Skan   (set_attr  "length" "4")])
722117395Skan
723117395Skan(define_insn "spe_evfsmul"
724117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
725117395Skan        (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
726117395Skan		   (match_operand:V2SF 2 "gpc_reg_operand" "r")))
727117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
728117395Skan  "TARGET_SPE"
729117395Skan  "evfsmul %0,%1,%2"
730117395Skan  [(set_attr "type" "vecfloat")
731117395Skan   (set_attr  "length" "4")])
732117395Skan
733117395Skan(define_insn "spe_evfsnabs"
734117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
735117395Skan	(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 537))]
736117395Skan  "TARGET_SPE"
737117395Skan  "evfsnabs %0,%1"
738132718Skan  [(set_attr "type" "vecsimple")
739117395Skan   (set_attr  "length" "4")])
740117395Skan
741117395Skan(define_insn "spe_evfsneg"
742117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
743117395Skan        (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
744117395Skan  "TARGET_SPE"
745117395Skan  "evfsneg %0,%1"
746132718Skan  [(set_attr "type" "vecsimple")
747117395Skan   (set_attr  "length" "4")])
748117395Skan
749117395Skan(define_insn "spe_evfssub"
750117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
751117395Skan        (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
752117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")))
753117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
754117395Skan  "TARGET_SPE"
755117395Skan  "evfssub %0,%1,%2"
756117395Skan  [(set_attr "type" "vecfloat")
757117395Skan   (set_attr  "length" "4")])
758117395Skan
759117395Skan;; SPE SIMD load instructions.
760117395Skan
761132718Skan;; Only the hardware engineer who designed the SPE understands the
762117395Skan;; plethora of load and store instructions ;-).  We have no way of
763117395Skan;; differentiating between them with RTL so use an unspec of const_int 0 
764117395Skan;; to avoid identical RTL.
765117395Skan
766117395Skan(define_insn "spe_evldd"
767117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
768117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
769117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
770117395Skan   (unspec [(const_int 0)] 544)]
771117395Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
772132718Skan  "evldd %0,%2*8(%1)"
773117395Skan  [(set_attr "type" "vecload")
774117395Skan   (set_attr  "length" "4")])
775117395Skan
776117395Skan(define_insn "spe_evlddx"
777117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
778117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
779117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
780117395Skan   (unspec [(const_int 0)] 545)]
781117395Skan  "TARGET_SPE"
782117395Skan  "evlddx %0,%1,%2"
783117395Skan  [(set_attr "type" "vecload")
784117395Skan   (set_attr  "length" "4")])
785117395Skan
786117395Skan(define_insn "spe_evldh"
787117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
788117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
789117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
790117395Skan   (unspec [(const_int 0)] 546)]
791117395Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
792132718Skan  "evldh %0,%2*8(%1)"
793117395Skan  [(set_attr "type" "vecload")
794117395Skan   (set_attr  "length" "4")])
795117395Skan
796117395Skan(define_insn "spe_evldhx"
797117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
798117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
799117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
800117395Skan   (unspec [(const_int 0)] 547)]
801117395Skan  "TARGET_SPE"
802117395Skan  "evldhx %0,%1,%2"
803117395Skan  [(set_attr "type" "vecload")
804117395Skan   (set_attr  "length" "4")])
805117395Skan
806117395Skan(define_insn "spe_evldw"
807117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
808117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
809117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
810117395Skan   (unspec [(const_int 0)] 548)]
811132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
812132718Skan  "evldw %0,%2*8(%1)"
813117395Skan  [(set_attr "type" "vecload")
814117395Skan   (set_attr  "length" "4")])
815117395Skan
816117395Skan(define_insn "spe_evldwx"
817117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
818117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
819117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
820117395Skan   (unspec [(const_int 0)] 549)]
821117395Skan  "TARGET_SPE"
822117395Skan  "evldwx %0,%1,%2"
823117395Skan  [(set_attr "type" "vecload")
824117395Skan   (set_attr  "length" "4")])
825117395Skan
826117395Skan(define_insn "spe_evlwhe"
827117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
828117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
829117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
830117395Skan   (unspec [(const_int 0)] 550)]
831132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
832132718Skan  "evlwhe %0,%2*4(%1)"
833117395Skan  [(set_attr "type" "vecload")
834117395Skan   (set_attr  "length" "4")])
835117395Skan
836117395Skan(define_insn "spe_evlwhex"
837117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
838117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
839117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
840117395Skan   (unspec [(const_int 0)] 551)]
841117395Skan  "TARGET_SPE"
842117395Skan  "evlwhex %0,%1,%2"
843117395Skan  [(set_attr "type" "vecload")
844117395Skan   (set_attr  "length" "4")])
845117395Skan
846117395Skan(define_insn "spe_evlwhos"
847117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
848117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
849117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
850117395Skan   (unspec [(const_int 0)] 552)]
851132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
852132718Skan  "evlwhos %0,%2*4(%1)"
853117395Skan  [(set_attr "type" "vecload")
854117395Skan   (set_attr  "length" "4")])
855117395Skan
856117395Skan(define_insn "spe_evlwhosx"
857117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
858117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
859117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
860117395Skan   (unspec [(const_int 0)] 553)]
861117395Skan  "TARGET_SPE"
862117395Skan  "evlwhosx %0,%1,%2"
863117395Skan  [(set_attr "type" "vecload")
864117395Skan   (set_attr  "length" "4")])
865117395Skan
866117395Skan(define_insn "spe_evlwhou"
867117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
868117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
869117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
870117395Skan   (unspec [(const_int 0)] 554)]
871132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
872132718Skan  "evlwhou %0,%2*4(%1)"
873117395Skan  [(set_attr "type" "vecload")
874117395Skan   (set_attr  "length" "4")])
875117395Skan
876117395Skan(define_insn "spe_evlwhoux"
877117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
878117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
879117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
880117395Skan   (unspec [(const_int 0)] 555)]
881117395Skan  "TARGET_SPE"
882117395Skan  "evlwhoux %0,%1,%2"
883117395Skan  [(set_attr "type" "vecload")
884117395Skan   (set_attr  "length" "4")])
885117395Skan
886117395Skan(define_insn "spe_brinc"
887117395Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
888117395Skan        (unspec:SI [(match_operand:SI 1 "gpc_reg_operand" "r")
889117395Skan		    (match_operand:SI 2 "gpc_reg_operand" "r")] 556))]
890117395Skan  "TARGET_SPE"
891117395Skan  "brinc %0,%1,%2"
892132718Skan  [(set_attr "type" "brinc")
893117395Skan   (set_attr  "length" "4")])
894117395Skan
895117395Skan(define_insn "spe_evmhegsmfaa"
896117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
897117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
898117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
899117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 557))
900132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
901117395Skan  "TARGET_SPE"
902117395Skan  "evmhegsmfaa %0,%1,%2"
903117395Skan  [(set_attr "type" "veccomplex")
904117395Skan   (set_attr  "length" "4")])
905117395Skan
906117395Skan(define_insn "spe_evmhegsmfan"
907117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
908117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
909117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
910117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 558))
911132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
912117395Skan  "TARGET_SPE"
913117395Skan  "evmhegsmfan %0,%1,%2"
914117395Skan  [(set_attr "type" "veccomplex")
915117395Skan   (set_attr  "length" "4")])
916117395Skan
917117395Skan(define_insn "spe_evmhegsmiaa"
918117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
919117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
920117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
921117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 559))
922132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
923117395Skan  "TARGET_SPE"
924117395Skan  "evmhegsmiaa %0,%1,%2"
925117395Skan  [(set_attr "type" "veccomplex")
926117395Skan   (set_attr  "length" "4")])
927117395Skan
928117395Skan(define_insn "spe_evmhegsmian"
929117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
930117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
931117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
932117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 560))
933132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
934117395Skan  "TARGET_SPE"
935117395Skan  "evmhegsmian %0,%1,%2"
936117395Skan  [(set_attr "type" "veccomplex")
937117395Skan   (set_attr  "length" "4")])
938117395Skan
939117395Skan(define_insn "spe_evmhegumiaa"
940117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
941117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
942117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
943117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 561))
944132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
945117395Skan  "TARGET_SPE"
946117395Skan  "evmhegumiaa %0,%1,%2"
947117395Skan  [(set_attr "type" "veccomplex")
948117395Skan   (set_attr  "length" "4")])
949117395Skan
950117395Skan(define_insn "spe_evmhegumian"
951117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
952117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
953117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
954117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 562))
955132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
956117395Skan  "TARGET_SPE"
957117395Skan  "evmhegumian %0,%1,%2"
958117395Skan  [(set_attr "type" "veccomplex")
959117395Skan   (set_attr  "length" "4")])
960117395Skan
961117395Skan(define_insn "spe_evmhesmfaaw"
962117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
963117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
964117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
965117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 563))
966132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
967117395Skan  "TARGET_SPE"
968117395Skan  "evmhesmfaaw %0,%1,%2"
969117395Skan  [(set_attr "type" "veccomplex")
970117395Skan   (set_attr  "length" "4")])
971117395Skan
972117395Skan(define_insn "spe_evmhesmfanw"
973117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
974117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
975117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
976117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 564))
977132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
978117395Skan  "TARGET_SPE"
979117395Skan  "evmhesmfanw %0,%1,%2"
980117395Skan  [(set_attr "type" "veccomplex")
981117395Skan   (set_attr  "length" "4")])
982117395Skan
983117395Skan(define_insn "spe_evmhesmfa"
984117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
985117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
986117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 565))
987132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
988117395Skan  "TARGET_SPE"
989117395Skan  "evmhesmfa %0,%1,%2"
990117395Skan  [(set_attr "type" "veccomplex")
991117395Skan   (set_attr  "length" "4")])
992117395Skan
993117395Skan(define_insn "spe_evmhesmf"
994117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
995117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
996117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 566))]
997117395Skan  "TARGET_SPE"
998117395Skan  "evmhesmf %0,%1,%2"
999117395Skan  [(set_attr "type" "veccomplex")
1000117395Skan   (set_attr  "length" "4")])
1001117395Skan
1002117395Skan(define_insn "spe_evmhesmiaaw"
1003117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1004117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1005117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1006117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 567))
1007132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1008117395Skan  "TARGET_SPE"
1009117395Skan  "evmhesmiaaw %0,%1,%2"
1010117395Skan  [(set_attr "type" "veccomplex")
1011117395Skan   (set_attr  "length" "4")])
1012117395Skan
1013117395Skan(define_insn "spe_evmhesmianw"
1014117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1015117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1016117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1017117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 568))
1018132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1019117395Skan  "TARGET_SPE"
1020117395Skan  "evmhesmianw %0,%1,%2"
1021117395Skan  [(set_attr "type" "veccomplex")
1022117395Skan   (set_attr  "length" "4")])
1023117395Skan
1024117395Skan(define_insn "spe_evmhesmia"
1025117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1026117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1027117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 569))
1028132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1029117395Skan  "TARGET_SPE"
1030117395Skan  "evmhesmia %0,%1,%2"
1031117395Skan  [(set_attr "type" "veccomplex")
1032117395Skan   (set_attr  "length" "4")])
1033117395Skan
1034117395Skan(define_insn "spe_evmhesmi"
1035117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1036117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1037117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 570))]
1038117395Skan  "TARGET_SPE"
1039117395Skan  "evmhesmi %0,%1,%2"
1040117395Skan  [(set_attr "type" "veccomplex")
1041117395Skan   (set_attr  "length" "4")])
1042117395Skan
1043117395Skan(define_insn "spe_evmhessfaaw"
1044117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1045117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1046117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1047117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 571))
1048117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1049132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1050117395Skan  "TARGET_SPE"
1051117395Skan  "evmhessfaaw %0,%1,%2"
1052117395Skan  [(set_attr "type" "veccomplex")
1053117395Skan   (set_attr  "length" "4")])
1054117395Skan
1055117395Skan(define_insn "spe_evmhessfanw"
1056117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1057117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1058117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1059117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 572))
1060117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1061132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1062117395Skan  "TARGET_SPE"
1063117395Skan  "evmhessfanw %0,%1,%2"
1064117395Skan  [(set_attr "type" "veccomplex")
1065117395Skan   (set_attr  "length" "4")])
1066117395Skan
1067117395Skan(define_insn "spe_evmhessfa"
1068117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1069117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1070117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 573))
1071117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1072132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1073117395Skan  "TARGET_SPE"
1074117395Skan  "evmhessfa %0,%1,%2"
1075117395Skan  [(set_attr "type" "veccomplex")
1076117395Skan   (set_attr  "length" "4")])
1077117395Skan
1078117395Skan(define_insn "spe_evmhessf"
1079117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1080117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1081117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 574))
1082117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1083117395Skan  "TARGET_SPE"
1084117395Skan  "evmhessf %0,%1,%2"
1085117395Skan  [(set_attr "type" "veccomplex")
1086117395Skan   (set_attr  "length" "4")])
1087117395Skan
1088117395Skan(define_insn "spe_evmhessiaaw"
1089117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1090117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1091117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1092117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 575))
1093117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1094132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1095117395Skan  "TARGET_SPE"
1096117395Skan  "evmhessiaaw %0,%1,%2"
1097117395Skan  [(set_attr "type" "veccomplex")
1098117395Skan   (set_attr  "length" "4")])
1099117395Skan
1100117395Skan(define_insn "spe_evmhessianw"
1101117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1102117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1103117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1104117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 576))
1105117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1106132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1107117395Skan  "TARGET_SPE"
1108117395Skan  "evmhessianw %0,%1,%2"
1109117395Skan  [(set_attr "type" "veccomplex")
1110117395Skan   (set_attr  "length" "4")])
1111117395Skan
1112117395Skan(define_insn "spe_evmheumiaaw"
1113117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1114117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1115117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1116117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 577))
1117132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1118117395Skan  "TARGET_SPE"
1119117395Skan  "evmheumiaaw %0,%1,%2"
1120117395Skan  [(set_attr "type" "veccomplex")
1121117395Skan   (set_attr  "length" "4")])
1122117395Skan
1123117395Skan(define_insn "spe_evmheumianw"
1124117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1125117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1126117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1127117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 578))
1128132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1129117395Skan  "TARGET_SPE"
1130117395Skan  "evmheumianw %0,%1,%2"
1131117395Skan  [(set_attr "type" "veccomplex")
1132117395Skan   (set_attr  "length" "4")])
1133117395Skan
1134117395Skan(define_insn "spe_evmheumia"
1135117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1136117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1137117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 579))
1138132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1139117395Skan  "TARGET_SPE"
1140117395Skan  "evmheumia %0,%1,%2"
1141117395Skan  [(set_attr "type" "veccomplex")
1142117395Skan   (set_attr  "length" "4")])
1143117395Skan
1144117395Skan(define_insn "spe_evmheumi"
1145117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1146117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1147117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 580))]
1148117395Skan  "TARGET_SPE"
1149117395Skan  "evmheumi %0,%1,%2"
1150117395Skan  [(set_attr "type" "veccomplex")
1151117395Skan   (set_attr  "length" "4")])
1152117395Skan
1153117395Skan(define_insn "spe_evmheusiaaw"
1154117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1155117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1156117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1157117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 581))
1158117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1159132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1160117395Skan  "TARGET_SPE"
1161117395Skan  "evmheusiaaw %0,%1,%2"
1162117395Skan  [(set_attr "type" "veccomplex")
1163117395Skan   (set_attr  "length" "4")])
1164117395Skan
1165117395Skan(define_insn "spe_evmheusianw"
1166117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1167117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1168117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1169117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 582))
1170117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1171132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1172117395Skan  "TARGET_SPE"
1173117395Skan  "evmheusianw %0,%1,%2"
1174117395Skan  [(set_attr "type" "veccomplex")
1175117395Skan   (set_attr  "length" "4")])
1176117395Skan
1177117395Skan(define_insn "spe_evmhogsmfaa"
1178117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1179117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1180117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1181117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 583))
1182132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1183117395Skan  "TARGET_SPE"
1184117395Skan  "evmhogsmfaa %0,%1,%2"
1185117395Skan  [(set_attr "type" "veccomplex")
1186117395Skan   (set_attr  "length" "4")])
1187117395Skan
1188117395Skan(define_insn "spe_evmhogsmfan"
1189117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1190117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1191117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1192117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 584))
1193132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1194117395Skan  "TARGET_SPE"
1195117395Skan  "evmhogsmfan %0,%1,%2"
1196117395Skan  [(set_attr "type" "veccomplex")
1197117395Skan   (set_attr  "length" "4")])
1198117395Skan
1199117395Skan(define_insn "spe_evmhogsmiaa"
1200117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1201117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1202117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1203117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 585))
1204132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1205117395Skan  "TARGET_SPE"
1206117395Skan  "evmhogsmiaa %0,%1,%2"
1207117395Skan  [(set_attr "type" "veccomplex")
1208117395Skan   (set_attr  "length" "4")])
1209117395Skan
1210117395Skan(define_insn "spe_evmhogsmian"
1211117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1212117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1213117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1214117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 586))
1215132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1216117395Skan  "TARGET_SPE"
1217117395Skan  "evmhogsmian %0,%1,%2"
1218117395Skan  [(set_attr "type" "veccomplex")
1219117395Skan   (set_attr  "length" "4")])
1220117395Skan
1221117395Skan(define_insn "spe_evmhogumiaa"
1222117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1223117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1224117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1225117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 587))
1226132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1227117395Skan  "TARGET_SPE"
1228117395Skan  "evmhogumiaa %0,%1,%2"
1229117395Skan  [(set_attr "type" "veccomplex")
1230117395Skan   (set_attr  "length" "4")])
1231117395Skan
1232117395Skan(define_insn "spe_evmhogumian"
1233117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1234117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1235117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1236117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 588))
1237132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1238117395Skan  "TARGET_SPE"
1239117395Skan  "evmhogumian %0,%1,%2"
1240117395Skan  [(set_attr "type" "veccomplex")
1241117395Skan   (set_attr  "length" "4")])
1242117395Skan
1243117395Skan(define_insn "spe_evmhosmfaaw"
1244117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1245117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1246117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1247117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 589))
1248132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1249117395Skan  "TARGET_SPE"
1250117395Skan  "evmhosmfaaw %0,%1,%2"
1251117395Skan  [(set_attr "type" "veccomplex")
1252117395Skan   (set_attr  "length" "4")])
1253117395Skan
1254117395Skan(define_insn "spe_evmhosmfanw"
1255117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1256117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1257117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1258117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 590))
1259132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1260117395Skan  "TARGET_SPE"
1261117395Skan  "evmhosmfanw %0,%1,%2"
1262117395Skan  [(set_attr "type" "veccomplex")
1263117395Skan   (set_attr  "length" "4")])
1264117395Skan
1265117395Skan(define_insn "spe_evmhosmfa"
1266117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1267117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1268117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 591))]
1269117395Skan  "TARGET_SPE"
1270117395Skan  "evmhosmfa %0,%1,%2"
1271117395Skan  [(set_attr "type" "veccomplex")
1272117395Skan   (set_attr  "length" "4")])
1273117395Skan
1274117395Skan(define_insn "spe_evmhosmf"
1275117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1276117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1277117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 592))
1278132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1279117395Skan  "TARGET_SPE"
1280117395Skan  "evmhosmf %0,%1,%2"
1281117395Skan  [(set_attr "type" "veccomplex")
1282117395Skan   (set_attr  "length" "4")])
1283117395Skan
1284117395Skan(define_insn "spe_evmhosmiaaw"
1285117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1286117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1287117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1288117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 593))
1289132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1290117395Skan  "TARGET_SPE"
1291117395Skan  "evmhosmiaaw %0,%1,%2"
1292117395Skan  [(set_attr "type" "veccomplex")
1293117395Skan   (set_attr  "length" "4")])
1294117395Skan
1295117395Skan(define_insn "spe_evmhosmianw"
1296117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1297117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1298117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1299117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 594))
1300132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1301117395Skan  "TARGET_SPE"
1302117395Skan  "evmhosmianw %0,%1,%2"
1303117395Skan  [(set_attr "type" "veccomplex")
1304117395Skan   (set_attr  "length" "4")])
1305117395Skan
1306117395Skan(define_insn "spe_evmhosmia"
1307117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1308117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1309117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 595))
1310132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1311117395Skan  "TARGET_SPE"
1312117395Skan  "evmhosmia %0,%1,%2"
1313117395Skan  [(set_attr "type" "veccomplex")
1314117395Skan   (set_attr  "length" "4")])
1315117395Skan
1316117395Skan(define_insn "spe_evmhosmi"
1317117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1318117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1319117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 596))]
1320117395Skan  "TARGET_SPE"
1321117395Skan  "evmhosmi %0,%1,%2"
1322117395Skan  [(set_attr "type" "veccomplex")
1323117395Skan   (set_attr  "length" "4")])
1324117395Skan
1325117395Skan(define_insn "spe_evmhossfaaw"
1326117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1327117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1328117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1329117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 597))
1330117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1331132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1332117395Skan  "TARGET_SPE"
1333117395Skan  "evmhossfaaw %0,%1,%2"
1334117395Skan  [(set_attr "type" "veccomplex")
1335117395Skan   (set_attr  "length" "4")])
1336117395Skan
1337117395Skan(define_insn "spe_evmhossfanw"
1338117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1339117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1340117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1341117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 598))
1342117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1343132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1344117395Skan  "TARGET_SPE"
1345117395Skan  "evmhossfanw %0,%1,%2"
1346117395Skan  [(set_attr "type" "veccomplex")
1347117395Skan   (set_attr  "length" "4")])
1348117395Skan
1349117395Skan(define_insn "spe_evmhossfa"
1350117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1351117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1352117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1353117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 599))
1354117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1355132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1356117395Skan  "TARGET_SPE"
1357117395Skan  "evmhossfa %0,%1,%2"
1358117395Skan  [(set_attr "type" "veccomplex")
1359117395Skan   (set_attr  "length" "4")])
1360117395Skan
1361117395Skan(define_insn "spe_evmhossf"
1362117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1363117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1364117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 600))
1365117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1366117395Skan  "TARGET_SPE"
1367117395Skan  "evmhossf %0,%1,%2"
1368117395Skan  [(set_attr "type" "veccomplex")
1369117395Skan   (set_attr  "length" "4")])
1370117395Skan
1371117395Skan(define_insn "spe_evmhossiaaw"
1372117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1373117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1374117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1375117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 601))
1376117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1377132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1378117395Skan  "TARGET_SPE"
1379117395Skan  "evmhossiaaw %0,%1,%2"
1380117395Skan  [(set_attr "type" "veccomplex")
1381117395Skan   (set_attr  "length" "4")])
1382117395Skan
1383117395Skan(define_insn "spe_evmhossianw"
1384117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1385117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1386117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1387117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 602))
1388117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1389132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1390117395Skan  "TARGET_SPE"
1391117395Skan  "evmhossianw %0,%1,%2"
1392117395Skan  [(set_attr "type" "veccomplex")
1393117395Skan   (set_attr  "length" "4")])
1394117395Skan
1395117395Skan(define_insn "spe_evmhoumiaaw"
1396117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1397117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1398117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1399117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 603))
1400132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1401117395Skan  "TARGET_SPE"
1402117395Skan  "evmhoumiaaw %0,%1,%2"
1403117395Skan  [(set_attr "type" "veccomplex")
1404117395Skan   (set_attr  "length" "4")])
1405117395Skan
1406117395Skan(define_insn "spe_evmhoumianw"
1407117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1408117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1409117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1410117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 604))
1411132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1412117395Skan  "TARGET_SPE"
1413117395Skan  "evmhoumianw %0,%1,%2"
1414117395Skan  [(set_attr "type" "veccomplex")
1415117395Skan   (set_attr  "length" "4")])
1416117395Skan
1417117395Skan(define_insn "spe_evmhoumia"
1418117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1419117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1420117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 605))
1421132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1422117395Skan  "TARGET_SPE"
1423117395Skan  "evmhoumia %0,%1,%2"
1424117395Skan  [(set_attr "type" "veccomplex")
1425117395Skan   (set_attr  "length" "4")])
1426117395Skan
1427117395Skan(define_insn "spe_evmhoumi"
1428117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1429117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1430117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 606))]
1431117395Skan  "TARGET_SPE"
1432117395Skan  "evmhoumi %0,%1,%2"
1433117395Skan  [(set_attr "type" "veccomplex")
1434117395Skan   (set_attr  "length" "4")])
1435117395Skan
1436117395Skan(define_insn "spe_evmhousiaaw"
1437117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1438117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1439117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1440117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 607))
1441117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1442132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1443117395Skan  "TARGET_SPE"
1444117395Skan  "evmhousiaaw %0,%1,%2"
1445117395Skan  [(set_attr "type" "veccomplex")
1446117395Skan   (set_attr  "length" "4")])
1447117395Skan
1448117395Skan(define_insn "spe_evmhousianw"
1449117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1450117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1451117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1452117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 608))
1453117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1454132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1455117395Skan  "TARGET_SPE"
1456117395Skan  "evmhousianw %0,%1,%2"
1457117395Skan  [(set_attr "type" "veccomplex")
1458117395Skan   (set_attr  "length" "4")])
1459117395Skan
1460117395Skan(define_insn "spe_evmmlssfa"
1461117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1462117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1463117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 609))]
1464117395Skan  "TARGET_SPE"
1465117395Skan  "evmmlssfa %0,%1,%2"
1466117395Skan  [(set_attr "type" "veccomplex")
1467117395Skan   (set_attr  "length" "4")])
1468117395Skan
1469117395Skan(define_insn "spe_evmmlssf"
1470117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1471117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1472117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 610))]
1473117395Skan  "TARGET_SPE"
1474117395Skan  "evmmlssf %0,%1,%2"
1475117395Skan  [(set_attr "type" "veccomplex")
1476117395Skan   (set_attr  "length" "4")])
1477117395Skan
1478117395Skan(define_insn "spe_evmwhsmfa"
1479117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1480117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1481117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 611))
1482132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1483117395Skan  "TARGET_SPE"
1484117395Skan  "evmwhsmfa %0,%1,%2"
1485117395Skan  [(set_attr "type" "veccomplex")
1486117395Skan   (set_attr  "length" "4")])
1487117395Skan
1488117395Skan(define_insn "spe_evmwhsmf"
1489117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1490117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1491117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 612))]
1492117395Skan  "TARGET_SPE"
1493117395Skan  "evmwhsmf %0,%1,%2"
1494117395Skan  [(set_attr "type" "veccomplex")
1495117395Skan   (set_attr  "length" "4")])
1496117395Skan
1497117395Skan(define_insn "spe_evmwhsmia"
1498117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1499117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1500117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 613))
1501132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1502117395Skan  "TARGET_SPE"
1503117395Skan  "evmwhsmia %0,%1,%2"
1504117395Skan  [(set_attr "type" "veccomplex")
1505117395Skan   (set_attr  "length" "4")])
1506117395Skan
1507117395Skan(define_insn "spe_evmwhsmi"
1508117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1509117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1510117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 614))]
1511117395Skan  "TARGET_SPE"
1512117395Skan  "evmwhsmi %0,%1,%2"
1513117395Skan  [(set_attr "type" "veccomplex")
1514117395Skan   (set_attr  "length" "4")])
1515117395Skan
1516117395Skan(define_insn "spe_evmwhssfa"
1517117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1518117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1519117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 615))
1520117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1521132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1522117395Skan  "TARGET_SPE"
1523117395Skan  "evmwhssfa %0,%1,%2"
1524117395Skan  [(set_attr "type" "veccomplex")
1525117395Skan   (set_attr  "length" "4")])
1526117395Skan
1527117395Skan(define_insn "spe_evmwhusian"
1528117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1529117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1530117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 626))]
1531117395Skan  "TARGET_SPE"
1532117395Skan  "evmwhusian %0,%1,%2"
1533117395Skan  [(set_attr "type" "veccomplex")
1534117395Skan   (set_attr  "length" "4")])
1535117395Skan
1536117395Skan(define_insn "spe_evmwhssf"
1537117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1538117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1539117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 628))
1540117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1541117395Skan  "TARGET_SPE"
1542117395Skan  "evmwhssf %0,%1,%2"
1543117395Skan  [(set_attr "type" "veccomplex")
1544117395Skan   (set_attr  "length" "4")])
1545117395Skan
1546117395Skan(define_insn "spe_evmwhumia"
1547117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1548117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1549117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 629))
1550132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1551117395Skan  "TARGET_SPE"
1552117395Skan  "evmwhumia %0,%1,%2"
1553117395Skan  [(set_attr "type" "veccomplex")
1554117395Skan   (set_attr  "length" "4")])
1555117395Skan
1556117395Skan(define_insn "spe_evmwhumi"
1557117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1558117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1559117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 630))]
1560117395Skan  "TARGET_SPE"
1561117395Skan  "evmwhumi %0,%1,%2"
1562117395Skan  [(set_attr "type" "veccomplex")
1563117395Skan   (set_attr  "length" "4")])
1564117395Skan
1565117395Skan(define_insn "spe_evmwlsmiaaw"
1566117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1567117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1568117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1569117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 635))
1570132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1571117395Skan  "TARGET_SPE"
1572117395Skan  "evmwlsmiaaw %0,%1,%2"
1573117395Skan  [(set_attr "type" "veccomplex")
1574117395Skan   (set_attr  "length" "4")])
1575117395Skan
1576117395Skan(define_insn "spe_evmwlsmianw"
1577117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1578117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1579117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1580117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 636))
1581132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1582117395Skan  "TARGET_SPE"
1583117395Skan  "evmwlsmianw %0,%1,%2"
1584117395Skan  [(set_attr "type" "veccomplex")
1585117395Skan   (set_attr  "length" "4")])
1586117395Skan
1587117395Skan(define_insn "spe_evmwlssiaaw"
1588117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1589117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1590117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1591117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 641))
1592117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1593132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1594117395Skan  "TARGET_SPE"
1595117395Skan  "evmwlssiaaw %0,%1,%2"
1596117395Skan  [(set_attr "type" "veccomplex")
1597117395Skan   (set_attr  "length" "4")])
1598117395Skan
1599117395Skan(define_insn "spe_evmwlssianw"
1600117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1601117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1602117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1603117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 642))
1604117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1605132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1606117395Skan  "TARGET_SPE"
1607117395Skan  "evmwlssianw %0,%1,%2"
1608117395Skan  [(set_attr "type" "veccomplex")
1609117395Skan   (set_attr  "length" "4")])
1610117395Skan
1611117395Skan(define_insn "spe_evmwlumiaaw"
1612117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1613117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1614117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1615117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 643))
1616132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1617117395Skan  "TARGET_SPE"
1618117395Skan  "evmwlumiaaw %0,%1,%2"
1619117395Skan  [(set_attr "type" "veccomplex")
1620117395Skan   (set_attr  "length" "4")])
1621117395Skan
1622117395Skan(define_insn "spe_evmwlumianw"
1623117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1624117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1625117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1626117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 644))
1627132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1628117395Skan  "TARGET_SPE"
1629117395Skan  "evmwlumianw %0,%1,%2"
1630117395Skan  [(set_attr "type" "veccomplex")
1631117395Skan   (set_attr  "length" "4")])
1632117395Skan
1633117395Skan(define_insn "spe_evmwlumia"
1634117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1635117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1636117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 645))
1637132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1638117395Skan  "TARGET_SPE"
1639117395Skan  "evmwlumia %0,%1,%2"
1640117395Skan  [(set_attr "type" "veccomplex")
1641117395Skan   (set_attr  "length" "4")])
1642117395Skan
1643117395Skan(define_insn "spe_evmwlumi"
1644117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1645117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1646117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 646))]
1647117395Skan  "TARGET_SPE"
1648117395Skan  "evmwlumi %0,%1,%2"
1649117395Skan  [(set_attr "type" "veccomplex")
1650117395Skan   (set_attr  "length" "4")])
1651117395Skan
1652117395Skan(define_insn "spe_evmwlusiaaw"
1653117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1654117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1655117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1656117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 647))
1657117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1658132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1659117395Skan  "TARGET_SPE"
1660117395Skan  "evmwlusiaaw %0,%1,%2"
1661117395Skan  [(set_attr "type" "veccomplex")
1662117395Skan   (set_attr  "length" "4")])
1663117395Skan
1664117395Skan(define_insn "spe_evmwlusianw"
1665117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1666117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1667117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1668117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 648))
1669117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1670132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1671117395Skan  "TARGET_SPE"
1672117395Skan  "evmwlusianw %0,%1,%2"
1673117395Skan  [(set_attr "type" "veccomplex")
1674117395Skan   (set_attr  "length" "4")])
1675117395Skan
1676117395Skan(define_insn "spe_evmwsmfaa"
1677117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1678117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1679117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1680117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 649))
1681132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1682117395Skan  "TARGET_SPE"
1683117395Skan  "evmwsmfaa %0,%1,%2"
1684117395Skan  [(set_attr "type" "veccomplex")
1685117395Skan   (set_attr  "length" "4")])
1686117395Skan
1687117395Skan(define_insn "spe_evmwsmfan"
1688117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1689117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1690117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1691117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 650))
1692132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1693117395Skan  "TARGET_SPE"
1694117395Skan  "evmwsmfan %0,%1,%2"
1695117395Skan  [(set_attr "type" "veccomplex")
1696117395Skan   (set_attr  "length" "4")])
1697117395Skan
1698117395Skan(define_insn "spe_evmwsmfa"
1699117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1700117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1701117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 651))
1702132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1703117395Skan  "TARGET_SPE"
1704117395Skan  "evmwsmfa %0,%1,%2"
1705117395Skan  [(set_attr "type" "veccomplex")
1706117395Skan   (set_attr  "length" "4")])
1707117395Skan
1708117395Skan(define_insn "spe_evmwsmf"
1709117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1710117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1711117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 652))]
1712117395Skan  "TARGET_SPE"
1713117395Skan  "evmwsmf %0,%1,%2"
1714117395Skan  [(set_attr "type" "veccomplex")
1715117395Skan   (set_attr  "length" "4")])
1716117395Skan
1717117395Skan(define_insn "spe_evmwsmiaa"
1718117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1719117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1720117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1721117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 653))
1722132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1723117395Skan  "TARGET_SPE"
1724117395Skan  "evmwsmiaa %0,%1,%2"
1725117395Skan  [(set_attr "type" "veccomplex")
1726117395Skan   (set_attr  "length" "4")])
1727117395Skan
1728117395Skan(define_insn "spe_evmwsmian"
1729117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1730117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1731117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1732117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 654))
1733132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1734117395Skan  "TARGET_SPE"
1735117395Skan  "evmwsmian %0,%1,%2"
1736117395Skan  [(set_attr "type" "veccomplex")
1737117395Skan   (set_attr  "length" "4")])
1738117395Skan
1739117395Skan(define_insn "spe_evmwsmia"
1740117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1741117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1742117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 655))
1743132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1744117395Skan  "TARGET_SPE"
1745117395Skan  "evmwsmia %0,%1,%2"
1746117395Skan  [(set_attr "type" "veccomplex")
1747117395Skan   (set_attr  "length" "4")])
1748117395Skan
1749117395Skan(define_insn "spe_evmwsmi"
1750117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1751117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1752117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 656))]
1753117395Skan  "TARGET_SPE"
1754117395Skan  "evmwsmi %0,%1,%2"
1755117395Skan  [(set_attr "type" "veccomplex")
1756117395Skan   (set_attr  "length" "4")])
1757117395Skan
1758117395Skan(define_insn "spe_evmwssfaa"
1759117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1760117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1761117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1762117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 657))
1763117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1764132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1765117395Skan  "TARGET_SPE"
1766117395Skan  "evmwssfaa %0,%1,%2"
1767117395Skan  [(set_attr "type" "veccomplex")
1768117395Skan   (set_attr  "length" "4")])
1769117395Skan
1770117395Skan(define_insn "spe_evmwssfan"
1771117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1772117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1773117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1774117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 658))
1775117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1776132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1777117395Skan  "TARGET_SPE"
1778117395Skan  "evmwssfan %0,%1,%2"
1779117395Skan  [(set_attr "type" "veccomplex")
1780117395Skan   (set_attr  "length" "4")])
1781117395Skan
1782117395Skan(define_insn "spe_evmwssfa"
1783117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1784117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1785117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 659))
1786117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1787132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1788117395Skan  "TARGET_SPE"
1789117395Skan  "evmwssfa %0,%1,%2"
1790117395Skan  [(set_attr "type" "veccomplex")
1791117395Skan   (set_attr  "length" "4")])
1792117395Skan
1793117395Skan(define_insn "spe_evmwssf"
1794117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1795117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1796117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 660))
1797117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1798117395Skan  "TARGET_SPE"
1799117395Skan  "evmwssf %0,%1,%2"
1800117395Skan  [(set_attr "type" "veccomplex")
1801117395Skan   (set_attr  "length" "4")])
1802117395Skan
1803117395Skan(define_insn "spe_evmwumiaa"
1804117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1805117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1806117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1807117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 661))
1808132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1809117395Skan  "TARGET_SPE"
1810117395Skan  "evmwumiaa %0,%1,%2"
1811117395Skan  [(set_attr "type" "veccomplex")
1812117395Skan   (set_attr  "length" "4")])
1813117395Skan
1814117395Skan(define_insn "spe_evmwumian"
1815117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1816117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1817117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1818117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 662))
1819132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1820117395Skan  "TARGET_SPE"
1821117395Skan  "evmwumian %0,%1,%2"
1822117395Skan  [(set_attr "type" "veccomplex")
1823117395Skan   (set_attr  "length" "4")])
1824117395Skan
1825117395Skan(define_insn "spe_evmwumia"
1826117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1827117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1828117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 663))
1829132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1830117395Skan  "TARGET_SPE"
1831117395Skan  "evmwumia %0,%1,%2"
1832117395Skan  [(set_attr "type" "veccomplex")
1833117395Skan   (set_attr  "length" "4")])
1834117395Skan
1835117395Skan(define_insn "spe_evmwumi"
1836117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1837117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1838117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 664))]
1839117395Skan  "TARGET_SPE"
1840117395Skan  "evmwumi %0,%1,%2"
1841117395Skan  [(set_attr "type" "veccomplex")
1842117395Skan   (set_attr  "length" "4")])
1843117395Skan
1844117395Skan(define_insn "spe_evaddw"
1845117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1846117395Skan        (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1847117395Skan		   (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
1848117395Skan  "TARGET_SPE"
1849117395Skan  "evaddw %0,%1,%2"
1850132718Skan  [(set_attr "type" "vecsimple")
1851117395Skan   (set_attr  "length" "4")])
1852117395Skan
1853117395Skan(define_insn "spe_evaddusiaaw"
1854117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1855117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1856117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 673))
1857117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1858132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1859117395Skan  "TARGET_SPE"
1860117395Skan  "evaddusiaaw %0,%1"
1861117395Skan  [(set_attr "type" "veccomplex")
1862117395Skan   (set_attr  "length" "4")])
1863117395Skan
1864117395Skan(define_insn "spe_evaddumiaaw"
1865117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1866117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1867117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 674))
1868132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1869117395Skan  "TARGET_SPE"
1870117395Skan  "evaddumiaaw %0,%1"
1871117395Skan  [(set_attr "type" "veccomplex")
1872117395Skan   (set_attr  "length" "4")])
1873117395Skan
1874117395Skan(define_insn "spe_evaddssiaaw"
1875117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1876117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1877117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 675))
1878117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1879132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1880117395Skan  "TARGET_SPE"
1881117395Skan  "evaddssiaaw %0,%1"
1882117395Skan  [(set_attr "type" "veccomplex")
1883117395Skan   (set_attr  "length" "4")])
1884117395Skan
1885117395Skan(define_insn "spe_evaddsmiaaw"
1886117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1887117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1888117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 676))
1889132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1890117395Skan  "TARGET_SPE"
1891117395Skan  "evaddsmiaaw %0,%1"
1892117395Skan  [(set_attr "type" "veccomplex")
1893117395Skan   (set_attr  "length" "4")])
1894117395Skan
1895117395Skan(define_insn "spe_evaddiw"
1896117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1897117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1898117395Skan		      (match_operand:QI 2 "immediate_operand" "i")] 677))]
1899117395Skan  "TARGET_SPE"
1900117395Skan  "evaddiw %0,%1,%2"
1901132718Skan  [(set_attr "type" "vecsimple")
1902117395Skan   (set_attr  "length" "4")])
1903117395Skan
1904117395Skan(define_insn "spe_evsubifw"
1905117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1906117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1907117395Skan		      (match_operand:QI 2 "immediate_operand" "i")] 678))]
1908117395Skan  "TARGET_SPE"
1909117395Skan  "evsubifw %0,%2,%1"
1910117395Skan  [(set_attr "type" "veccomplex")
1911117395Skan   (set_attr  "length" "4")])
1912117395Skan
1913117395Skan(define_insn "spe_evsubfw"
1914117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1915117395Skan        (minus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1916117395Skan		    (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
1917117395Skan  "TARGET_SPE"
1918132718Skan  "evsubfw %0,%2,%1"
1919117395Skan  [(set_attr "type" "veccomplex")
1920117395Skan   (set_attr  "length" "4")])
1921117395Skan
1922117395Skan(define_insn "spe_evsubfusiaaw"
1923117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1924117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1925117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 679))
1926117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1927132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1928117395Skan  "TARGET_SPE"
1929117395Skan  "evsubfusiaaw %0,%1"
1930117395Skan  [(set_attr "type" "veccomplex")
1931117395Skan   (set_attr  "length" "4")])
1932117395Skan
1933117395Skan(define_insn "spe_evsubfumiaaw"
1934117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1935117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1936117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 680))
1937132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1938117395Skan  "TARGET_SPE"
1939117395Skan  "evsubfumiaaw %0,%1"
1940117395Skan  [(set_attr "type" "veccomplex")
1941117395Skan   (set_attr  "length" "4")])
1942117395Skan
1943117395Skan(define_insn "spe_evsubfssiaaw"
1944117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1945117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1946117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 681))
1947117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1948132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1949117395Skan  "TARGET_SPE"
1950117395Skan  "evsubfssiaaw %0,%1"
1951117395Skan  [(set_attr "type" "veccomplex")
1952117395Skan   (set_attr  "length" "4")])
1953117395Skan
1954117395Skan(define_insn "spe_evsubfsmiaaw"
1955117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1956117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1957117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 682))
1958132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1959117395Skan  "TARGET_SPE"
1960117395Skan  "evsubfsmiaaw %0,%1"
1961117395Skan  [(set_attr "type" "veccomplex")
1962117395Skan   (set_attr  "length" "4")])
1963117395Skan
1964117395Skan(define_insn "spe_evmra"
1965117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1966117395Skan        (match_operand:V2SI 1 "gpc_reg_operand" "r"))
1967117395Skan   (set (reg:V2SI SPE_ACC_REGNO)
1968117395Skan	(unspec:V2SI [(match_dup 1)] 726))]
1969117395Skan  "TARGET_SPE"
1970117395Skan  "evmra %0,%1"
1971117395Skan  [(set_attr "type" "veccomplex")
1972117395Skan   (set_attr  "length" "4")])
1973117395Skan
1974117395Skan(define_insn "spe_evdivws"
1975117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1976117395Skan        (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1977117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))
1978117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1979117395Skan  "TARGET_SPE"
1980117395Skan  "evdivws %0,%1,%2"
1981132718Skan  [(set_attr "type" "vecdiv")
1982117395Skan   (set_attr  "length" "4")])
1983117395Skan
1984117395Skan(define_insn "spe_evdivwu"
1985117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1986117395Skan        (udiv:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1987117395Skan		   (match_operand:V2SI 2 "gpc_reg_operand" "r")))
1988117395Skan      (clobber (reg:SI SPEFSCR_REGNO))]
1989117395Skan  "TARGET_SPE"
1990117395Skan  "evdivwu %0,%1,%2"
1991132718Skan  [(set_attr "type" "vecdiv")
1992117395Skan   (set_attr  "length" "4")])
1993117395Skan
1994117395Skan(define_insn "spe_evsplatfi"
1995117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1996117395Skan        (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 684))]
1997117395Skan  "TARGET_SPE"
1998117395Skan  "evsplatfi %0,%1"
1999117395Skan  [(set_attr "type" "vecperm")
2000117395Skan   (set_attr  "length" "4")])
2001117395Skan
2002117395Skan(define_insn "spe_evsplati"
2003117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2004117395Skan        (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 685))]
2005117395Skan  "TARGET_SPE"
2006117395Skan  "evsplati %0,%1"
2007117395Skan  [(set_attr "type" "vecperm")
2008117395Skan   (set_attr  "length" "4")])
2009117395Skan
2010117395Skan(define_insn "spe_evstdd"
2011117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2012117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2013117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2014117395Skan   (unspec [(const_int 0)] 686)]
2015132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2016132718Skan  "evstdd %2,%1*8(%0)"
2017117395Skan  [(set_attr "type" "vecstore")
2018117395Skan   (set_attr  "length" "4")])
2019117395Skan
2020117395Skan(define_insn "spe_evstddx"
2021117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2022117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2023117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2024117395Skan   (unspec [(const_int 0)] 687)]
2025117395Skan  "TARGET_SPE"
2026117395Skan  "evstddx %2,%0,%1"
2027117395Skan  [(set_attr "type" "vecstore")
2028117395Skan   (set_attr  "length" "4")])
2029117395Skan
2030117395Skan(define_insn "spe_evstdh"
2031117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2032117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2033117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2034117395Skan   (unspec [(const_int 0)] 688)]
2035132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2036132718Skan  "evstdh %2,%1*8(%0)"
2037117395Skan  [(set_attr "type" "vecstore")
2038117395Skan   (set_attr  "length" "4")])
2039117395Skan
2040117395Skan(define_insn "spe_evstdhx"
2041117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2042117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2043117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2044117395Skan   (unspec [(const_int 0)] 689)]
2045117395Skan  "TARGET_SPE"
2046117395Skan  "evstdhx %2,%0,%1"
2047117395Skan  [(set_attr "type" "vecstore")
2048117395Skan   (set_attr  "length" "4")])
2049117395Skan
2050117395Skan(define_insn "spe_evstdw"
2051117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2052117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2053117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2054117395Skan   (unspec [(const_int 0)] 690)]
2055132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2056132718Skan  "evstdw %2,%1*8(%0)"
2057117395Skan  [(set_attr "type" "vecstore")
2058117395Skan   (set_attr  "length" "4")])
2059117395Skan
2060117395Skan(define_insn "spe_evstdwx"
2061117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2062117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2063117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2064117395Skan   (unspec [(const_int 0)] 691)]
2065117395Skan  "TARGET_SPE"
2066117395Skan  "evstdwx %2,%0,%1"
2067117395Skan  [(set_attr "type" "vecstore")
2068117395Skan   (set_attr  "length" "4")])
2069117395Skan
2070117395Skan(define_insn "spe_evstwhe"
2071117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2072117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2073117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2074117395Skan   (unspec [(const_int 0)] 692)]
2075132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2076132718Skan  "evstwhe %2,%1*4(%0)"
2077117395Skan  [(set_attr "type" "vecstore")
2078117395Skan   (set_attr  "length" "4")])
2079117395Skan
2080117395Skan(define_insn "spe_evstwhex"
2081117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2082117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2083117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2084117395Skan   (unspec [(const_int 0)] 693)]
2085117395Skan  "TARGET_SPE"
2086117395Skan  "evstwhex %2,%0,%1"
2087117395Skan  [(set_attr "type" "vecstore")
2088117395Skan   (set_attr  "length" "4")])
2089117395Skan
2090117395Skan(define_insn "spe_evstwho"
2091117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2092117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2093117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2094117395Skan   (unspec [(const_int 0)] 694)]
2095132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2096132718Skan  "evstwho %2,%1*4(%0)"
2097117395Skan  [(set_attr "type" "vecstore")
2098117395Skan   (set_attr  "length" "4")])
2099117395Skan
2100117395Skan(define_insn "spe_evstwhox"
2101117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2102117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2103117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2104117395Skan   (unspec [(const_int 0)] 695)]
2105117395Skan  "TARGET_SPE"
2106117395Skan  "evstwhox %2,%0,%1"
2107117395Skan  [(set_attr "type" "vecstore")
2108117395Skan   (set_attr  "length" "4")])
2109117395Skan
2110117395Skan(define_insn "spe_evstwwe"
2111117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2112117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2113117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2114117395Skan   (unspec [(const_int 0)] 696)]
2115132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2116132718Skan  "evstwwe %2,%1*4(%0)"
2117117395Skan  [(set_attr "type" "vecstore")
2118117395Skan   (set_attr  "length" "4")])
2119117395Skan
2120117395Skan(define_insn "spe_evstwwex"
2121117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2122117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2123117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2124117395Skan   (unspec [(const_int 0)] 697)]
2125117395Skan  "TARGET_SPE"
2126117395Skan  "evstwwex %2,%0,%1"
2127117395Skan  [(set_attr "type" "vecstore")
2128117395Skan   (set_attr  "length" "4")])
2129117395Skan
2130117395Skan(define_insn "spe_evstwwo"
2131117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2132117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2133117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2134117395Skan   (unspec [(const_int 0)] 698)]
2135132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2136132718Skan  "evstwwo %2,%1*4(%0)"
2137117395Skan  [(set_attr "type" "vecstore")
2138117395Skan   (set_attr  "length" "4")])
2139117395Skan
2140117395Skan(define_insn "spe_evstwwox"
2141117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2142117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2143117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2144117395Skan   (unspec [(const_int 0)] 699)]
2145117395Skan  "TARGET_SPE"
2146117395Skan  "evstwwox %2,%0,%1"
2147117395Skan  [(set_attr "type" "vecstore")
2148117395Skan   (set_attr  "length" "4")])
2149117395Skan
2150117395Skan;; Vector move instructions.
2151117395Skan
2152117395Skan(define_expand "movv2si"
2153117395Skan  [(set (match_operand:V2SI 0 "nonimmediate_operand" "")
2154117395Skan	(match_operand:V2SI 1 "any_operand" ""))]
2155117395Skan  "TARGET_SPE"
2156117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V2SImode); DONE; }")
2157117395Skan
2158117395Skan(define_insn "*movv2si_internal"
2159132718Skan  [(set (match_operand:V2SI 0 "nonimmediate_operand" "=m,r,r,r")
2160132718Skan	(match_operand:V2SI 1 "input_operand" "r,m,r,W"))]
2161132718Skan  "TARGET_SPE
2162132718Skan   && (gpc_reg_operand (operands[0], V2SImode)
2163132718Skan       || gpc_reg_operand (operands[1], V2SImode))"
2164132718Skan  "*
2165132718Skan{
2166132718Skan  switch (which_alternative)
2167132718Skan    {
2168132718Skan    case 0: return \"evstdd%X0 %1,%y0\";
2169132718Skan    case 1: return \"evldd%X1 %0,%y1\";
2170132718Skan    case 2: return \"evor %0,%1,%1\";
2171132718Skan    case 3: return output_vec_const_move (operands);
2172132718Skan    default: abort ();
2173132718Skan    }
2174132718Skan}"
2175132718Skan  [(set_attr "type" "vecload,vecstore,*,*")
2176132718Skan   (set_attr "length" "*,*,*,12")])
2177117395Skan
2178132718Skan(define_split
2179132718Skan  [(set (match_operand:V2SI 0 "register_operand" "")
2180132718Skan	(match_operand:V2SI 1 "zero_constant" ""))]
2181132718Skan  "TARGET_SPE && reload_completed"
2182132718Skan  [(set (match_dup 0)
2183132718Skan	(xor:V2SI (match_dup 0) (match_dup 0)))]
2184132718Skan  "")
2185132718Skan
2186117395Skan(define_expand "movv1di"
2187117395Skan  [(set (match_operand:V1DI 0 "nonimmediate_operand" "")
2188117395Skan	(match_operand:V1DI 1 "any_operand" ""))]
2189117395Skan  "TARGET_SPE"
2190117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V1DImode); DONE; }")
2191117395Skan
2192117395Skan(define_insn "*movv1di_internal"
2193132718Skan  [(set (match_operand:V1DI 0 "nonimmediate_operand" "=m,r,r,r")
2194132718Skan	(match_operand:V1DI 1 "input_operand" "r,m,r,W"))]
2195132718Skan  "TARGET_SPE
2196132718Skan   && (gpc_reg_operand (operands[0], V1DImode)
2197132718Skan       || gpc_reg_operand (operands[1], V1DImode))"
2198117395Skan  "@
2199117395Skan   evstdd%X0 %1,%y0
2200117395Skan   evldd%X1 %0,%y1
2201132718Skan   evor %0,%1,%1
2202132718Skan   evxor %0,%0,%0"
2203132718Skan  [(set_attr "type" "vecload,vecstore,*,*")
2204132718Skan   (set_attr "length" "*,*,*,*")])
2205117395Skan
2206117395Skan(define_expand "movv4hi"
2207117395Skan  [(set (match_operand:V4HI 0 "nonimmediate_operand" "")
2208117395Skan	(match_operand:V4HI 1 "any_operand" ""))]
2209117395Skan  "TARGET_SPE"
2210117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V4HImode); DONE; }")
2211117395Skan
2212117395Skan(define_insn "*movv4hi_internal"
2213117395Skan  [(set (match_operand:V4HI 0 "nonimmediate_operand" "=m,r,r")
2214117395Skan	(match_operand:V4HI 1 "input_operand" "r,m,r"))]
2215132718Skan  "TARGET_SPE
2216132718Skan   && (gpc_reg_operand (operands[0], V4HImode)
2217132718Skan       || gpc_reg_operand (operands[1], V4HImode))"
2218117395Skan  "@
2219117395Skan   evstdd%X0 %1,%y0
2220117395Skan   evldd%X1 %0,%y1
2221117395Skan   evor %0,%1,%1"
2222117395Skan  [(set_attr "type" "vecload")])
2223117395Skan
2224117395Skan(define_expand "movv2sf"
2225117395Skan  [(set (match_operand:V2SF 0 "nonimmediate_operand" "")
2226117395Skan	(match_operand:V2SF 1 "any_operand" ""))]
2227117395Skan  "TARGET_SPE"
2228117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V2SFmode); DONE; }")
2229117395Skan
2230117395Skan(define_insn "*movv2sf_internal"
2231132718Skan  [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,r,r,r")
2232132718Skan	(match_operand:V2SF 1 "input_operand" "r,m,r,W"))]
2233132718Skan  "TARGET_SPE
2234132718Skan   && (gpc_reg_operand (operands[0], V2SFmode)
2235132718Skan       || gpc_reg_operand (operands[1], V2SFmode))"
2236117395Skan  "@
2237117395Skan   evstdd%X0 %1,%y0
2238117395Skan   evldd%X1 %0,%y1
2239132718Skan   evor %0,%1,%1
2240132718Skan   evxor %0,%0,%0"
2241132718Skan  [(set_attr "type" "vecload,vecstore,*,*")
2242132718Skan   (set_attr "length" "*,*,*,*")])
2243117395Skan
2244132718Skan;; End of vector move instructions.
2245132718Skan
2246117395Skan(define_insn "spe_evmwhssfaa"
2247117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2248117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2249117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 702))
2250117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2251132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2252117395Skan  "TARGET_SPE"
2253117395Skan  "evmwhssfaa %0,%1,%2"
2254117395Skan  [(set_attr "type" "veccomplex")
2255117395Skan   (set_attr  "length" "4")])
2256117395Skan
2257117395Skan(define_insn "spe_evmwhssmaa"
2258117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2259117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2260117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 703))
2261117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2262132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2263117395Skan  "TARGET_SPE"
2264117395Skan  "evmwhssmaa %0,%1,%2"
2265117395Skan  [(set_attr "type" "veccomplex")
2266117395Skan   (set_attr  "length" "4")])
2267117395Skan
2268117395Skan(define_insn "spe_evmwhsmfaa"
2269117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2270117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2271117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 704))
2272132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2273117395Skan  "TARGET_SPE"
2274117395Skan  "evmwhsmfaa %0,%1,%2"
2275117395Skan  [(set_attr "type" "veccomplex")
2276117395Skan   (set_attr  "length" "4")])
2277117395Skan
2278117395Skan(define_insn "spe_evmwhsmiaa"
2279117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2280117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2281117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 705))
2282132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2283117395Skan  "TARGET_SPE"
2284117395Skan  "evmwhsmiaa %0,%1,%2"
2285117395Skan  [(set_attr "type" "veccomplex")
2286117395Skan   (set_attr  "length" "4")])
2287117395Skan
2288117395Skan(define_insn "spe_evmwhusiaa"
2289117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2290117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2291117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 706))
2292117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2293132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2294117395Skan  "TARGET_SPE"
2295117395Skan  "evmwhusiaa %0,%1,%2"
2296117395Skan  [(set_attr "type" "veccomplex")
2297117395Skan   (set_attr  "length" "4")])
2298117395Skan
2299117395Skan(define_insn "spe_evmwhumiaa"
2300117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2301117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2302117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 707))
2303132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2304117395Skan  "TARGET_SPE"
2305117395Skan  "evmwhumiaa %0,%1,%2"
2306117395Skan  [(set_attr "type" "veccomplex")
2307117395Skan   (set_attr  "length" "4")])
2308117395Skan
2309117395Skan(define_insn "spe_evmwhssfan"
2310117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2311117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2312117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 708))
2313117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2314132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2315117395Skan  "TARGET_SPE"
2316117395Skan  "evmwhssfan %0,%1,%2"
2317117395Skan  [(set_attr "type" "veccomplex")
2318117395Skan   (set_attr  "length" "4")])
2319117395Skan
2320117395Skan(define_insn "spe_evmwhssian"
2321117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2322117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2323117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 709))
2324117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2325132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2326117395Skan  "TARGET_SPE"
2327117395Skan  "evmwhssian %0,%1,%2"
2328117395Skan  [(set_attr "type" "veccomplex")
2329117395Skan   (set_attr  "length" "4")])
2330117395Skan
2331117395Skan(define_insn "spe_evmwhsmfan"
2332117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2333117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2334117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 710))
2335132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2336117395Skan  "TARGET_SPE"
2337117395Skan  "evmwhsmfan %0,%1,%2"
2338117395Skan  [(set_attr "type" "veccomplex")
2339117395Skan   (set_attr  "length" "4")])
2340117395Skan
2341117395Skan(define_insn "spe_evmwhsmian"
2342117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2343117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2344117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 711))
2345132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2346117395Skan  "TARGET_SPE"
2347117395Skan  "evmwhsmian %0,%1,%2"
2348117395Skan  [(set_attr "type" "veccomplex")
2349117395Skan   (set_attr  "length" "4")])
2350117395Skan
2351117395Skan(define_insn "spe_evmwhumian"
2352117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2353117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2354117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 713))
2355132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2356117395Skan  "TARGET_SPE"
2357117395Skan  "evmwhumian %0,%1,%2"
2358117395Skan  [(set_attr "type" "veccomplex")
2359117395Skan   (set_attr  "length" "4")])
2360117395Skan
2361117395Skan(define_insn "spe_evmwhgssfaa"
2362117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2363117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2364117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 714))
2365117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2366132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2367117395Skan  "TARGET_SPE"
2368117395Skan  "evmwhgssfaa %0,%1,%2"
2369117395Skan  [(set_attr "type" "veccomplex")
2370117395Skan   (set_attr  "length" "4")])
2371117395Skan
2372117395Skan(define_insn "spe_evmwhgsmfaa"
2373117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2374117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2375117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 715))
2376132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2377117395Skan  "TARGET_SPE"
2378117395Skan  "evmwhgsmfaa %0,%1,%2"
2379117395Skan  [(set_attr "type" "veccomplex")
2380117395Skan   (set_attr  "length" "4")])
2381117395Skan
2382117395Skan(define_insn "spe_evmwhgsmiaa"
2383117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2384117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2385117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 716))
2386132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2387117395Skan  "TARGET_SPE"
2388117395Skan  "evmwhgsmiaa %0,%1,%2"
2389117395Skan  [(set_attr "type" "veccomplex")
2390117395Skan   (set_attr  "length" "4")])
2391117395Skan
2392117395Skan(define_insn "spe_evmwhgumiaa"
2393117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2394117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2395117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 717))
2396132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2397117395Skan  "TARGET_SPE"
2398117395Skan  "evmwhgumiaa %0,%1,%2"
2399117395Skan  [(set_attr "type" "veccomplex")
2400117395Skan   (set_attr  "length" "4")])
2401117395Skan
2402117395Skan(define_insn "spe_evmwhgssfan"
2403117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2404117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2405117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 718))
2406117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2407132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2408117395Skan  "TARGET_SPE"
2409117395Skan  "evmwhgssfan %0,%1,%2"
2410117395Skan  [(set_attr "type" "veccomplex")
2411117395Skan   (set_attr  "length" "4")])
2412117395Skan
2413117395Skan(define_insn "spe_evmwhgsmfan"
2414117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2415117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2416117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 719))
2417132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2418117395Skan  "TARGET_SPE"
2419117395Skan  "evmwhgsmfan %0,%1,%2"
2420117395Skan  [(set_attr "type" "veccomplex")
2421117395Skan   (set_attr  "length" "4")])
2422117395Skan
2423117395Skan(define_insn "spe_evmwhgsmian"
2424117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2425117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2426117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 720))
2427132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2428117395Skan  "TARGET_SPE"
2429117395Skan  "evmwhgsmian %0,%1,%2"
2430117395Skan  [(set_attr "type" "veccomplex")
2431117395Skan   (set_attr  "length" "4")])
2432117395Skan
2433117395Skan(define_insn "spe_evmwhgumian"
2434117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2435117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2436117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 721))
2437132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2438117395Skan  "TARGET_SPE"
2439117395Skan  "evmwhgumian %0,%1,%2"
2440117395Skan  [(set_attr "type" "veccomplex")
2441117395Skan   (set_attr  "length" "4")])
2442117395Skan
2443117395Skan(define_insn "spe_mtspefscr"
2444117395Skan  [(set (reg:SI SPEFSCR_REGNO)
2445117395Skan	(unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
2446117395Skan			    722))]
2447117395Skan  "TARGET_SPE"
2448117395Skan  "mtspefscr %0"
2449117395Skan  [(set_attr "type" "vecsimple")])
2450117395Skan
2451117395Skan(define_insn "spe_mfspefscr"
2452117395Skan  [(set (match_operand:SI 0 "register_operand" "=r")
2453117395Skan	(unspec_volatile:SI [(reg:SI SPEFSCR_REGNO)] 723))]
2454117395Skan  "TARGET_SPE"
2455117395Skan  "mfspefscr %0"
2456117395Skan  [(set_attr "type" "vecsimple")])
2457117395Skan
2458132718Skan;; FP comparison stuff.
2459132718Skan
2460132718Skan;; Flip the GT bit.
2461132718Skan(define_insn "e500_flip_gt_bit"
2462132718Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2463132718Skan       (unspec:CCFP
2464132718Skan        [(match_operand:CCFP 1 "cc_reg_operand" "y")] 999))]
2465132718Skan  "!TARGET_FPRS && TARGET_HARD_FLOAT"
2466132718Skan  "*
2467132718Skan{
2468132718Skan  return output_e500_flip_gt_bit (operands[0], operands[1]);
2469132718Skan}"
2470132718Skan  [(set_attr "type" "cr_logical")])
2471132718Skan
2472117395Skan;; MPC8540 single-precision FP instructions on GPRs.
2473117395Skan;; We have 2 variants for each.  One for IEEE compliant math and one
2474117395Skan;; for non IEEE compliant math.
2475117395Skan
2476117395Skan(define_insn "cmpsfeq_gpr"
2477117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2478132718Skan       (unspec:CCFP
2479132718Skan        [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2480132718Skan                       (match_operand:SF 2 "gpc_reg_operand" "r"))]
2481132718Skan        1000))]
2482117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2483117395Skan  "efscmpeq %0,%1,%2"
2484132718Skan  [(set_attr "type" "veccmp")])
2485117395Skan
2486117395Skan(define_insn "tstsfeq_gpr"
2487117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2488132718Skan       (unspec:CCFP
2489132718Skan        [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2490132718Skan                       (match_operand:SF 2 "gpc_reg_operand" "r"))]
2491132718Skan        1001))]
2492117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2493117395Skan  "efststeq %0,%1,%2"
2494132718Skan  [(set_attr "type" "veccmpsimple")])
2495117395Skan
2496117395Skan(define_insn "cmpsfgt_gpr"
2497117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2498132718Skan       (unspec:CCFP
2499132718Skan        [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2500132718Skan                       (match_operand:SF 2 "gpc_reg_operand" "r"))]
2501132718Skan        1002))]
2502117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2503117395Skan  "efscmpgt %0,%1,%2"
2504132718Skan  [(set_attr "type" "veccmp")])
2505117395Skan
2506117395Skan(define_insn "tstsfgt_gpr"
2507117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2508132718Skan       (unspec:CCFP
2509132718Skan        [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2510132718Skan                       (match_operand:SF 2 "gpc_reg_operand" "r"))]
2511132718Skan        1003))]
2512117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2513117395Skan  "efststgt %0,%1,%2"
2514132718Skan  [(set_attr "type" "veccmpsimple")])
2515117395Skan
2516117395Skan(define_insn "cmpsflt_gpr"
2517117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2518132718Skan       (unspec:CCFP
2519132718Skan        [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2520132718Skan                       (match_operand:SF 2 "gpc_reg_operand" "r"))]
2521132718Skan        1004))]
2522117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2523117395Skan  "efscmplt %0,%1,%2"
2524132718Skan  [(set_attr "type" "veccmp")])
2525117395Skan
2526117395Skan(define_insn "tstsflt_gpr"
2527117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2528132718Skan       (unspec:CCFP
2529132718Skan        [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2530132718Skan                       (match_operand:SF 2 "gpc_reg_operand" "r"))]
2531132718Skan        1005))]
2532117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2533117395Skan  "efststlt %0,%1,%2"
2534132718Skan  [(set_attr "type" "veccmpsimple")])
2535