1117395Skan;; e500 SPE description
2169689Skan;; Copyright (C) 2002, 2003, 2004, 2005 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
19169689Skan;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
20169689Skan;; MA 02110-1301, USA.
21117395Skan
22117395Skan(define_constants
23117395Skan  [(SPE_ACC_REGNO	111)
24169689Skan   (SPEFSCR_REGNO	112)
25117395Skan
26169689Skan   (CMPDFEQ_GPR		1006)
27169689Skan   (TSTDFEQ_GPR		1007)
28169689Skan   (CMPDFGT_GPR		1008)
29169689Skan   (TSTDFGT_GPR		1009)
30169689Skan   (CMPDFLT_GPR		1010)
31169689Skan   (TSTDFLT_GPR		1011)
32169689Skan   (E500_CR_IOR_COMPARE 1012)
33169689Skan   ])
34169689Skan
35169689Skan;; Modes using a 64-bit register.
36169689Skan(define_mode_macro SPE64 [DF V4HI V2SF V1DI V2SI])
37169689Skan
38117395Skan(define_insn "*negsf2_gpr"
39117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
40117395Skan        (neg:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
41117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
42117395Skan  "efsneg %0,%1"
43132718Skan  [(set_attr "type" "fpsimple")])
44117395Skan
45117395Skan(define_insn "*abssf2_gpr"
46117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
47117395Skan	(abs:SF (match_operand:SF 1 "gpc_reg_operand" "r")))]
48117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
49117395Skan  "efsabs %0,%1"
50132718Skan  [(set_attr "type" "fpsimple")])
51117395Skan
52132718Skan(define_insn "*nabssf2_gpr"
53132718Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
54132718Skan	(neg:SF (abs:SF (match_operand:SF 1 "gpc_reg_operand" "r"))))]
55132718Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
56132718Skan  "efsnabs %0,%1"
57132718Skan  [(set_attr "type" "fpsimple")])
58132718Skan
59117395Skan(define_insn "*addsf3_gpr"
60117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
61117395Skan	(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
62117395Skan		 (match_operand:SF 2 "gpc_reg_operand" "r")))]
63117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
64117395Skan  "efsadd %0,%1,%2"
65117395Skan  [(set_attr "type" "fp")])
66117395Skan
67117395Skan(define_insn "*subsf3_gpr"
68117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
69117395Skan	(minus:SF (match_operand:SF 1 "gpc_reg_operand" "r")
70117395Skan		  (match_operand:SF 2 "gpc_reg_operand" "r")))]
71117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
72117395Skan  "efssub %0,%1,%2"
73117395Skan  [(set_attr "type" "fp")])
74117395Skan
75117395Skan(define_insn "*mulsf3_gpr"
76117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
77117395Skan        (mult:SF (match_operand:SF 1 "gpc_reg_operand" "%r")
78117395Skan                 (match_operand:SF 2 "gpc_reg_operand" "r")))]
79117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
80117395Skan  "efsmul %0,%1,%2"
81117395Skan  [(set_attr "type" "fp")])
82117395Skan
83117395Skan(define_insn "*divsf3_gpr"
84117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
85117395Skan        (div:SF (match_operand:SF 1 "gpc_reg_operand" "r")
86117395Skan                (match_operand:SF 2 "gpc_reg_operand" "r")))]
87117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
88117395Skan  "efsdiv %0,%1,%2"
89132718Skan  [(set_attr "type" "vecfdiv")])
90117395Skan
91169689Skan;; Floating point conversion instructions.
92169689Skan
93169689Skan(define_insn "fixuns_truncdfsi2"
94169689Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
95169689Skan	(unsigned_fix:SI (match_operand:DF 1 "gpc_reg_operand" "r")))]
96169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
97169689Skan  "efdctuiz %0,%1"
98169689Skan  [(set_attr "type" "fp")])
99169689Skan
100169689Skan(define_insn "spe_extendsfdf2"
101169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
102169689Skan	(float_extend:DF (match_operand:SF 1 "gpc_reg_operand" "r")))]
103169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
104169689Skan  "efdcfs %0,%1"
105169689Skan  [(set_attr "type" "fp")])
106169689Skan
107132718Skan(define_insn "spe_fixuns_truncsfsi2"
108117395Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
109132718Skan	(unsigned_fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
110117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
111117395Skan  "efsctuiz %0,%1"
112117395Skan  [(set_attr "type" "fp")])
113117395Skan
114117395Skan(define_insn "spe_fix_truncsfsi2"
115117395Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
116117395Skan	(fix:SI (match_operand:SF 1 "gpc_reg_operand" "r")))]
117117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
118132718Skan  "efsctsiz %0,%1"
119117395Skan  [(set_attr "type" "fp")])
120117395Skan
121169689Skan(define_insn "spe_fix_truncdfsi2"
122169689Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
123169689Skan	(fix:SI (match_operand:DF 1 "gpc_reg_operand" "r")))]
124169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
125169689Skan  "efdctsiz %0,%1"
126169689Skan  [(set_attr "type" "fp")])
127169689Skan
128117395Skan(define_insn "spe_floatunssisf2"
129117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
130117395Skan        (unsigned_float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
131117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
132117395Skan  "efscfui %0,%1"
133117395Skan  [(set_attr "type" "fp")])
134117395Skan
135169689Skan(define_insn "spe_floatunssidf2"
136169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
137169689Skan        (unsigned_float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))]
138169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
139169689Skan  "efdcfui %0,%1"
140169689Skan  [(set_attr "type" "fp")])
141169689Skan
142117395Skan(define_insn "spe_floatsisf2"
143117395Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
144117395Skan        (float:SF (match_operand:SI 1 "gpc_reg_operand" "r")))]
145117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS"
146117395Skan  "efscfsi %0,%1"
147117395Skan  [(set_attr "type" "fp")])
148117395Skan
149169689Skan(define_insn "spe_floatsidf2"
150169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
151169689Skan	(float:DF (match_operand:SI 1 "gpc_reg_operand" "r")))]
152169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
153169689Skan  "efdcfsi %0,%1"
154169689Skan  [(set_attr "type" "fp")])
155117395Skan
156117395Skan;; SPE SIMD instructions
157117395Skan
158117395Skan(define_insn "spe_evabs"
159117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
160117395Skan	(abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
161117395Skan  "TARGET_SPE"
162117395Skan  "evabs %0,%1"
163117395Skan  [(set_attr "type" "vecsimple")
164117395Skan   (set_attr  "length" "4")])
165117395Skan
166117395Skan(define_insn "spe_evandc"
167117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
168117395Skan        (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
169117395Skan		  (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
170117395Skan  "TARGET_SPE"
171117395Skan  "evandc %0,%1,%2"
172117395Skan  [(set_attr "type" "vecsimple")
173117395Skan   (set_attr  "length" "4")])
174117395Skan
175117395Skan(define_insn "spe_evand"
176117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
177117395Skan        (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
178117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
179117395Skan  "TARGET_SPE"
180117395Skan  "evand %0,%1,%2"
181117395Skan  [(set_attr "type" "vecsimple")
182117395Skan   (set_attr  "length" "4")])
183117395Skan
184117395Skan;; Vector compare instructions
185117395Skan
186117395Skan(define_insn "spe_evcmpeq"
187117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
188117395Skan	(unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
189117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 500))]
190117395Skan  "TARGET_SPE"
191117395Skan  "evcmpeq %0,%1,%2"
192117395Skan  [(set_attr "type" "veccmp")
193117395Skan   (set_attr  "length" "4")])
194117395Skan
195117395Skan(define_insn "spe_evcmpgts"
196117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
197117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
198117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 501))]
199117395Skan  "TARGET_SPE"
200117395Skan  "evcmpgts %0,%1,%2"
201117395Skan  [(set_attr "type" "veccmp")
202117395Skan   (set_attr  "length" "4")])
203117395Skan
204117395Skan(define_insn "spe_evcmpgtu"
205117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
206117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
207117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 502))]
208117395Skan  "TARGET_SPE"
209117395Skan  "evcmpgtu %0,%1,%2"
210117395Skan  [(set_attr "type" "veccmp")
211117395Skan   (set_attr  "length" "4")])
212117395Skan
213117395Skan(define_insn "spe_evcmplts"
214117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
215117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
216117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 503))]
217117395Skan  "TARGET_SPE"
218117395Skan  "evcmplts %0,%1,%2"
219117395Skan  [(set_attr "type" "veccmp")
220117395Skan   (set_attr  "length" "4")])
221117395Skan
222117395Skan(define_insn "spe_evcmpltu"
223117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
224117395Skan        (unspec:CC [(match_operand:V2SI 1 "gpc_reg_operand" "r")
225117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 504))]
226117395Skan  "TARGET_SPE"
227117395Skan  "evcmpltu %0,%1,%2"
228117395Skan  [(set_attr "type" "veccmp")
229117395Skan   (set_attr  "length" "4")])
230117395Skan
231117395Skan;; Floating point vector compare instructions
232117395Skan
233117395Skan(define_insn "spe_evfscmpeq"
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")] 538))
237117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
238117395Skan  "TARGET_SPE"
239117395Skan  "evfscmpeq %0,%1,%2"
240117395Skan  [(set_attr "type" "veccmp")
241117395Skan   (set_attr  "length" "4")])
242117395Skan
243117395Skan(define_insn "spe_evfscmpgt"
244117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
245117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
246117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 539))
247117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
248117395Skan  "TARGET_SPE"
249117395Skan  "evfscmpgt %0,%1,%2"
250117395Skan  [(set_attr "type" "veccmp")
251117395Skan   (set_attr  "length" "4")])
252117395Skan
253117395Skan(define_insn "spe_evfscmplt"
254117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
255117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
256117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 540))
257117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
258117395Skan  "TARGET_SPE"
259117395Skan  "evfscmplt %0,%1,%2"
260117395Skan  [(set_attr "type" "veccmp")
261117395Skan   (set_attr  "length" "4")])
262117395Skan
263117395Skan(define_insn "spe_evfststeq"
264117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
265117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
266117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 541))]
267117395Skan  "TARGET_SPE"
268117395Skan  "evfststeq %0,%1,%2"
269117395Skan  [(set_attr "type" "veccmp")
270117395Skan   (set_attr  "length" "4")])
271117395Skan
272117395Skan(define_insn "spe_evfststgt"
273117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
274117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
275117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 542))]
276117395Skan  "TARGET_SPE"
277117395Skan  "evfststgt %0,%1,%2"
278117395Skan  [(set_attr "type" "veccmp")
279117395Skan   (set_attr  "length" "4")])
280117395Skan
281117395Skan(define_insn "spe_evfststlt"
282117395Skan  [(set (match_operand:CC 0 "cc_reg_operand" "=y")
283117395Skan        (unspec:CC [(match_operand:V2SF 1 "gpc_reg_operand" "r")
284117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")] 543))]
285117395Skan  "TARGET_SPE"
286117395Skan  "evfststlt %0,%1,%2"
287117395Skan  [(set_attr "type" "veccmp")
288117395Skan   (set_attr  "length" "4")])
289117395Skan
290117395Skan;; End of vector compare instructions
291117395Skan
292117395Skan(define_insn "spe_evcntlsw"
293117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
294117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 505))]
295117395Skan  "TARGET_SPE"
296117395Skan  "evcntlsw %0,%1"
297117395Skan  [(set_attr "type" "vecsimple")
298117395Skan   (set_attr  "length" "4")])
299117395Skan
300117395Skan(define_insn "spe_evcntlzw"
301117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
302117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 506))]
303117395Skan  "TARGET_SPE"
304117395Skan  "evcntlzw %0,%1"
305117395Skan  [(set_attr "type" "vecsimple")
306117395Skan   (set_attr  "length" "4")])
307117395Skan
308117395Skan(define_insn "spe_eveqv"
309117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
310117395Skan        (not:V2SI (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
311117395Skan			    (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
312117395Skan  "TARGET_SPE"
313117395Skan  "eveqv %0,%1,%2"
314117395Skan  [(set_attr "type" "vecsimple")
315117395Skan   (set_attr  "length" "4")])
316117395Skan
317117395Skan(define_insn "spe_evextsb"
318117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
319117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 507))]
320117395Skan  "TARGET_SPE"
321117395Skan  "evextsb %0,%1"
322117395Skan  [(set_attr "type" "vecsimple")
323117395Skan   (set_attr  "length" "4")])
324117395Skan
325117395Skan(define_insn "spe_evextsh"
326117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
327117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 508))]
328117395Skan  "TARGET_SPE"
329117395Skan  "evextsh %0,%1"
330117395Skan  [(set_attr "type" "vecsimple")
331117395Skan   (set_attr  "length" "4")])
332117395Skan
333117395Skan(define_insn "spe_evlhhesplat"
334132718Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand"  "=r")
335132718Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand"   "b")
336117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
337117395Skan   (unspec [(const_int 0)] 509)]
338132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
339132718Skan  "evlhhesplat %0,%2*2(%1)"
340117395Skan  [(set_attr "type" "vecload")
341117395Skan   (set_attr  "length" "4")])
342117395Skan
343117395Skan(define_insn "spe_evlhhesplatx"
344117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
345117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
346117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
347117395Skan   (unspec [(const_int 0)] 510)]
348117395Skan  "TARGET_SPE"
349117395Skan  "evlhhesplatx %0,%1,%2"
350117395Skan  [(set_attr "type" "vecload")
351117395Skan   (set_attr  "length" "4")])
352117395Skan
353117395Skan(define_insn "spe_evlhhossplat"
354117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
355117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
356117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
357117395Skan   (unspec [(const_int 0)] 511)]
358132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
359132718Skan  "evlhhossplat %0,%2*2(%1)"
360117395Skan  [(set_attr "type" "vecload")
361117395Skan   (set_attr  "length" "4")])
362117395Skan
363117395Skan(define_insn "spe_evlhhossplatx"
364117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
365117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
366117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
367117395Skan   (unspec [(const_int 0)] 512)]
368117395Skan  "TARGET_SPE"
369117395Skan  "evlhhossplatx %0,%1,%2"
370117395Skan  [(set_attr "type" "vecload")
371117395Skan   (set_attr  "length" "4")])
372117395Skan
373117395Skan(define_insn "spe_evlhhousplat"
374117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
375117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
376117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
377117395Skan   (unspec [(const_int 0)] 513)]
378132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
379132718Skan  "evlhhousplat %0,%2*2(%1)"
380117395Skan  [(set_attr "type" "vecload")
381117395Skan   (set_attr  "length" "4")])
382117395Skan
383117395Skan(define_insn "spe_evlhhousplatx"
384117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
385117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
386117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
387117395Skan   (unspec [(const_int 0)] 514)]
388117395Skan  "TARGET_SPE"
389117395Skan  "evlhhousplatx %0,%1,%2"
390117395Skan  [(set_attr "type" "vecload")
391117395Skan   (set_attr  "length" "4")])
392117395Skan
393117395Skan(define_insn "spe_evlwhsplat"
394117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
395117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
396117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
397117395Skan   (unspec [(const_int 0)] 515)]
398132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
399132718Skan  "evlwhsplat %0,%2*4(%1)"
400117395Skan  [(set_attr "type" "vecload")
401117395Skan   (set_attr  "length" "4")])
402117395Skan
403117395Skan(define_insn "spe_evlwhsplatx"
404117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
405117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
406117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
407117395Skan   (unspec [(const_int 0)] 516)]
408117395Skan  "TARGET_SPE"
409117395Skan  "evlwhsplatx %0,%1,%2"
410117395Skan  [(set_attr "type" "vecload")
411117395Skan   (set_attr  "length" "4")])
412117395Skan
413117395Skan(define_insn "spe_evlwwsplat"
414117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
415117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
416117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
417117395Skan   (unspec [(const_int 0)] 517)]
418132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
419132718Skan  "evlwwsplat %0,%2*4(%1)"
420117395Skan  [(set_attr "type" "vecload")
421117395Skan   (set_attr  "length" "4")])
422117395Skan
423117395Skan(define_insn "spe_evlwwsplatx"
424117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
425117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
426117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
427117395Skan   (unspec [(const_int 0)] 518)]
428117395Skan  "TARGET_SPE"
429117395Skan  "evlwwsplatx %0,%1,%2"
430117395Skan  [(set_attr "type" "vecload")
431117395Skan   (set_attr  "length" "4")])
432117395Skan
433117395Skan(define_insn "spe_evmergehi"
434117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
435117395Skan	(vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
436117395Skan			(vec_select:V2SI
437117395Skan			 (match_operand:V2SI 2 "gpc_reg_operand" "r")
438117395Skan			 (parallel [(const_int 1)
439117395Skan				    (const_int 0)]))
440117395Skan			(const_int 2)))]
441117395Skan  "TARGET_SPE"
442117395Skan  "evmergehi %0,%1,%2"
443117395Skan  [(set_attr "type" "vecsimple")
444117395Skan   (set_attr  "length" "4")])
445117395Skan
446117395Skan(define_insn "spe_evmergehilo"
447117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
448117395Skan	(vec_merge:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
449117395Skan			(match_operand:V2SI 2 "gpc_reg_operand" "r")
450117395Skan			(const_int 2)))]
451117395Skan  "TARGET_SPE"
452117395Skan  "evmergehilo %0,%1,%2"
453117395Skan  [(set_attr "type" "vecsimple")
454117395Skan   (set_attr  "length" "4")])
455117395Skan
456117395Skan(define_insn "spe_evmergelo"
457117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
458117395Skan	(vec_merge:V2SI (vec_select:V2SI
459117395Skan			 (match_operand:V2SI 1 "gpc_reg_operand" "r")
460117395Skan			 (parallel [(const_int 1)
461117395Skan				    (const_int 0)]))
462117395Skan			(match_operand:V2SI 2 "gpc_reg_operand" "r")
463117395Skan			(const_int 2)))]
464117395Skan  "TARGET_SPE"
465117395Skan  "evmergelo %0,%1,%2"
466117395Skan  [(set_attr "type" "vecsimple")
467117395Skan   (set_attr  "length" "4")])
468117395Skan
469117395Skan(define_insn "spe_evmergelohi"
470117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
471117395Skan	(vec_merge:V2SI (vec_select:V2SI
472117395Skan			 (match_operand:V2SI 1 "gpc_reg_operand" "r")
473117395Skan			 (parallel [(const_int 1)
474117395Skan				    (const_int 0)]))
475117395Skan			(vec_select:V2SI
476117395Skan			 (match_operand:V2SI 2 "gpc_reg_operand" "r")
477117395Skan			 (parallel [(const_int 1)
478117395Skan				    (const_int 0)]))
479117395Skan			(const_int 2)))]
480117395Skan  "TARGET_SPE"
481117395Skan  "evmergelohi %0,%1,%2"
482117395Skan  [(set_attr "type" "vecsimple")
483117395Skan   (set_attr  "length" "4")])
484117395Skan
485117395Skan(define_insn "spe_evnand"
486117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
487117395Skan        (not:V2SI (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
488117395Skan                            (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
489117395Skan  "TARGET_SPE"
490117395Skan  "evnand %0,%1,%2"
491117395Skan  [(set_attr "type" "vecsimple")
492117395Skan   (set_attr  "length" "4")])
493117395Skan
494132718Skan(define_insn "negv2si2"
495117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
496117395Skan        (neg:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
497117395Skan  "TARGET_SPE"
498117395Skan  "evneg %0,%1"
499117395Skan  [(set_attr "type" "vecsimple")
500117395Skan   (set_attr  "length" "4")])
501117395Skan
502117395Skan(define_insn "spe_evnor"
503117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
504117395Skan        (not:V2SI  (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
505117395Skan                             (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
506117395Skan  "TARGET_SPE"
507117395Skan  "evnor %0,%1,%2"
508117395Skan  [(set_attr "type" "vecsimple")
509117395Skan   (set_attr  "length" "4")])
510117395Skan
511117395Skan(define_insn "spe_evorc"
512117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
513117395Skan        (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
514117395Skan		  (not:V2SI (match_operand:V2SI 2 "gpc_reg_operand" "r"))))]
515117395Skan  "TARGET_SPE"
516117395Skan  "evorc %0,%1,%2"
517117395Skan  [(set_attr "type" "vecsimple")
518117395Skan   (set_attr  "length" "4")])
519117395Skan
520117395Skan(define_insn "spe_evor"
521117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
522117395Skan        (ior:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
523117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
524117395Skan  "TARGET_SPE"
525117395Skan  "evor %0,%1,%2"
526117395Skan  [(set_attr "type" "vecsimple")
527117395Skan   (set_attr  "length" "4")])
528117395Skan
529117395Skan(define_insn "spe_evrlwi"
530117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
531117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
532117395Skan		      (match_operand:QI 2 "immediate_operand" "i")] 519))]
533117395Skan  "TARGET_SPE"
534117395Skan  "evrlwi %0,%1,%2"
535117395Skan  [(set_attr "type" "vecsimple")
536117395Skan   (set_attr  "length" "4")])
537117395Skan
538117395Skan(define_insn "spe_evrlw"
539117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
540117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
541117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 520))]
542117395Skan  "TARGET_SPE"
543117395Skan  "evrlw %0,%1,%2"
544117395Skan  [(set_attr "type" "veccomplex")
545117395Skan   (set_attr  "length" "4")])
546117395Skan
547117395Skan(define_insn "spe_evrndw"
548117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
549117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 521))]
550117395Skan  "TARGET_SPE"
551117395Skan  "evrndw %0,%1"
552117395Skan  [(set_attr "type" "vecsimple")
553117395Skan   (set_attr  "length" "4")])
554117395Skan
555117395Skan(define_insn "spe_evsel"
556117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
557117395Skan	(unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
558117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")
559117395Skan		      (match_operand:CC 3 "cc_reg_operand" "y")] 522))]
560117395Skan  "TARGET_SPE"
561117395Skan  "evsel %0,%1,%2,%3"
562117395Skan  [(set_attr "type" "veccmp")
563117395Skan   (set_attr "length" "4")])
564117395Skan
565117395Skan(define_insn "spe_evsel_fs"
566117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
567117395Skan	(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")
568117395Skan		      (match_operand:V2SF 2 "gpc_reg_operand" "r")
569117395Skan		      (match_operand:CC 3 "cc_reg_operand" "y")] 725))]
570117395Skan  "TARGET_SPE"
571117395Skan  "evsel %0,%1,%2,%3"
572117395Skan  [(set_attr "type" "veccmp")
573117395Skan   (set_attr "length" "4")])
574117395Skan
575117395Skan(define_insn "spe_evslwi"
576117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
577117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
578117395Skan		      (match_operand:QI 2 "immediate_operand" "i")]
579117395Skan		     523))]
580117395Skan  "TARGET_SPE"
581117395Skan  "evslwi %0,%1,%2"
582117395Skan  [(set_attr "type" "vecsimple")
583117395Skan   (set_attr  "length" "4")])
584117395Skan
585117395Skan(define_insn "spe_evslw"
586117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
587117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
588117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 524))]
589117395Skan  "TARGET_SPE"
590117395Skan  "evslw %0,%1,%2"
591117395Skan  [(set_attr "type" "vecsimple")
592117395Skan   (set_attr  "length" "4")])
593117395Skan
594117395Skan(define_insn "spe_evsrwis"
595117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
596117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
597117395Skan		      (match_operand:QI 2 "immediate_operand" "i")]
598117395Skan		     525))]
599117395Skan  "TARGET_SPE"
600117395Skan  "evsrwis %0,%1,%2"
601117395Skan  [(set_attr "type" "vecsimple")
602117395Skan   (set_attr  "length" "4")])
603117395Skan
604117395Skan(define_insn "spe_evsrwiu"
605117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
606117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
607117395Skan		      (match_operand:QI 2 "immediate_operand" "i")]
608117395Skan		     526))]
609117395Skan  "TARGET_SPE"
610117395Skan  "evsrwiu %0,%1,%2"
611117395Skan  [(set_attr "type" "vecsimple")
612117395Skan   (set_attr  "length" "4")])
613117395Skan
614117395Skan(define_insn "spe_evsrws"
615117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
616117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
617117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 527))]
618117395Skan  "TARGET_SPE"
619117395Skan  "evsrws %0,%1,%2"
620117395Skan  [(set_attr "type" "vecsimple")
621117395Skan   (set_attr  "length" "4")])
622117395Skan
623117395Skan(define_insn "spe_evsrwu"
624117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
625117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
626117395Skan		      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 528))]
627117395Skan  "TARGET_SPE"
628117395Skan  "evsrwu %0,%1,%2"
629117395Skan  [(set_attr "type" "vecsimple")
630117395Skan   (set_attr  "length" "4")])
631117395Skan
632132718Skan;; vector xors
633132718Skan
634132718Skan(define_insn "xorv2si3"
635117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
636117395Skan        (xor:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
637117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
638117395Skan  "TARGET_SPE"
639117395Skan  "evxor %0,%1,%2"
640117395Skan  [(set_attr "type" "vecsimple")
641117395Skan   (set_attr  "length" "4")])
642117395Skan
643132718Skan(define_insn "xorv4hi3"
644132718Skan  [(set (match_operand:V4HI 0 "gpc_reg_operand" "=r")
645132718Skan        (xor:V4HI (match_operand:V4HI 1 "gpc_reg_operand" "r")
646132718Skan		  (match_operand:V4HI 2 "gpc_reg_operand" "r")))]
647132718Skan  "TARGET_SPE"
648132718Skan  "evxor %0,%1,%2"
649132718Skan  [(set_attr "type" "vecsimple")
650132718Skan   (set_attr  "length" "4")])
651132718Skan
652132718Skan(define_insn "xorv1di3"
653132718Skan  [(set (match_operand:V1DI 0 "gpc_reg_operand" "=r")
654132718Skan        (xor:V1DI (match_operand:V1DI 1 "gpc_reg_operand" "r")
655132718Skan		  (match_operand:V1DI 2 "gpc_reg_operand" "r")))]
656132718Skan  "TARGET_SPE"
657132718Skan  "evxor %0,%1,%2"
658132718Skan  [(set_attr "type" "vecsimple")
659132718Skan   (set_attr  "length" "4")])
660132718Skan
661132718Skan;; end of vector xors
662132718Skan
663117395Skan(define_insn "spe_evfsabs"
664117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
665117395Skan        (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
666117395Skan  "TARGET_SPE"
667117395Skan  "evfsabs %0,%1"
668132718Skan  [(set_attr "type" "vecsimple")
669117395Skan   (set_attr  "length" "4")])
670117395Skan
671117395Skan(define_insn "spe_evfsadd"
672117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
673117395Skan        (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
674117395Skan		   (match_operand:V2SF 2 "gpc_reg_operand" "r")))
675117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
676117395Skan  "TARGET_SPE"
677117395Skan  "evfsadd %0,%1,%2"
678117395Skan  [(set_attr "type" "vecfloat")
679117395Skan   (set_attr  "length" "4")])
680117395Skan
681117395Skan(define_insn "spe_evfscfsf"
682117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
683117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 529))]
684117395Skan  "TARGET_SPE"
685117395Skan  "evfscfsf %0,%1"
686117395Skan  [(set_attr "type" "vecfloat")
687117395Skan   (set_attr  "length" "4")])
688117395Skan
689117395Skan(define_insn "spe_evfscfsi"
690132718Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
691132718Skan        (float:V2SF (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
692117395Skan  "TARGET_SPE"
693117395Skan  "evfscfsi %0,%1"
694117395Skan  [(set_attr "type" "vecfloat")
695117395Skan   (set_attr  "length" "4")])
696117395Skan
697117395Skan(define_insn "spe_evfscfuf"
698117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
699117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 530))]
700117395Skan  "TARGET_SPE"
701117395Skan  "evfscfuf %0,%1"
702117395Skan  [(set_attr "type" "vecfloat")
703117395Skan   (set_attr  "length" "4")])
704117395Skan
705117395Skan(define_insn "spe_evfscfui"
706117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
707117395Skan	(unspec:V2SF [(match_operand:V2SI 1 "gpc_reg_operand" "r")] 701))]
708117395Skan  "TARGET_SPE"
709117395Skan  "evfscfui %0,%1"
710117395Skan  [(set_attr "type" "vecfloat")
711117395Skan   (set_attr  "length" "4")])
712117395Skan
713117395Skan(define_insn "spe_evfsctsf"
714117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
715117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 531))]
716117395Skan  "TARGET_SPE"
717117395Skan  "evfsctsf %0,%1"
718117395Skan  [(set_attr "type" "vecfloat")
719117395Skan   (set_attr  "length" "4")])
720117395Skan
721117395Skan(define_insn "spe_evfsctsi"
722117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
723117395Skan	(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 532))]
724117395Skan  "TARGET_SPE"
725117395Skan  "evfsctsi %0,%1"
726117395Skan  [(set_attr "type" "vecfloat")
727117395Skan   (set_attr  "length" "4")])
728117395Skan
729117395Skan(define_insn "spe_evfsctsiz"
730117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
731117395Skan	(unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 533))]
732117395Skan  "TARGET_SPE"
733117395Skan  "evfsctsiz %0,%1"
734117395Skan  [(set_attr "type" "vecfloat")
735117395Skan   (set_attr  "length" "4")])
736117395Skan
737117395Skan(define_insn "spe_evfsctuf"
738117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
739117395Skan        (unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 534))]
740117395Skan  "TARGET_SPE"
741117395Skan  "evfsctuf %0,%1"
742117395Skan  [(set_attr "type" "vecfloat")
743117395Skan   (set_attr  "length" "4")])
744117395Skan
745117395Skan(define_insn "spe_evfsctui"
746117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
747117395Skan        (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 535))]
748117395Skan  "TARGET_SPE"
749117395Skan  "evfsctui %0,%1"
750117395Skan  [(set_attr "type" "vecfloat")
751117395Skan   (set_attr  "length" "4")])
752117395Skan
753117395Skan(define_insn "spe_evfsctuiz"
754117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
755117395Skan        (unspec:V2SI [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 536))]
756117395Skan  "TARGET_SPE"
757117395Skan  "evfsctuiz %0,%1"
758117395Skan  [(set_attr "type" "vecfloat")
759117395Skan   (set_attr  "length" "4")])
760117395Skan
761117395Skan(define_insn "spe_evfsdiv"
762117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
763117395Skan        (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
764117395Skan		  (match_operand:V2SF 2 "gpc_reg_operand" "r")))
765117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
766117395Skan  "TARGET_SPE"
767117395Skan  "evfsdiv %0,%1,%2"
768132718Skan  [(set_attr "type" "vecfdiv")
769117395Skan   (set_attr  "length" "4")])
770117395Skan
771117395Skan(define_insn "spe_evfsmul"
772117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
773117395Skan        (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
774117395Skan		   (match_operand:V2SF 2 "gpc_reg_operand" "r")))
775117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
776117395Skan  "TARGET_SPE"
777117395Skan  "evfsmul %0,%1,%2"
778117395Skan  [(set_attr "type" "vecfloat")
779117395Skan   (set_attr  "length" "4")])
780117395Skan
781117395Skan(define_insn "spe_evfsnabs"
782117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
783117395Skan	(unspec:V2SF [(match_operand:V2SF 1 "gpc_reg_operand" "r")] 537))]
784117395Skan  "TARGET_SPE"
785117395Skan  "evfsnabs %0,%1"
786132718Skan  [(set_attr "type" "vecsimple")
787117395Skan   (set_attr  "length" "4")])
788117395Skan
789117395Skan(define_insn "spe_evfsneg"
790117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
791117395Skan        (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")))]
792117395Skan  "TARGET_SPE"
793117395Skan  "evfsneg %0,%1"
794132718Skan  [(set_attr "type" "vecsimple")
795117395Skan   (set_attr  "length" "4")])
796117395Skan
797117395Skan(define_insn "spe_evfssub"
798117395Skan  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=r")
799117395Skan        (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "r")
800117395Skan		    (match_operand:V2SF 2 "gpc_reg_operand" "r")))
801117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
802117395Skan  "TARGET_SPE"
803117395Skan  "evfssub %0,%1,%2"
804117395Skan  [(set_attr "type" "vecfloat")
805117395Skan   (set_attr  "length" "4")])
806117395Skan
807117395Skan;; SPE SIMD load instructions.
808117395Skan
809132718Skan;; Only the hardware engineer who designed the SPE understands the
810117395Skan;; plethora of load and store instructions ;-).  We have no way of
811117395Skan;; differentiating between them with RTL so use an unspec of const_int 0 
812117395Skan;; to avoid identical RTL.
813117395Skan
814117395Skan(define_insn "spe_evldd"
815117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
816117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
817117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
818117395Skan   (unspec [(const_int 0)] 544)]
819117395Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
820132718Skan  "evldd %0,%2*8(%1)"
821117395Skan  [(set_attr "type" "vecload")
822117395Skan   (set_attr  "length" "4")])
823117395Skan
824117395Skan(define_insn "spe_evlddx"
825117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
826117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
827117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
828117395Skan   (unspec [(const_int 0)] 545)]
829117395Skan  "TARGET_SPE"
830117395Skan  "evlddx %0,%1,%2"
831117395Skan  [(set_attr "type" "vecload")
832117395Skan   (set_attr  "length" "4")])
833117395Skan
834117395Skan(define_insn "spe_evldh"
835117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
836117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
837117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
838117395Skan   (unspec [(const_int 0)] 546)]
839117395Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
840132718Skan  "evldh %0,%2*8(%1)"
841117395Skan  [(set_attr "type" "vecload")
842117395Skan   (set_attr  "length" "4")])
843117395Skan
844117395Skan(define_insn "spe_evldhx"
845117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
846117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
847117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
848117395Skan   (unspec [(const_int 0)] 547)]
849117395Skan  "TARGET_SPE"
850117395Skan  "evldhx %0,%1,%2"
851117395Skan  [(set_attr "type" "vecload")
852117395Skan   (set_attr  "length" "4")])
853117395Skan
854117395Skan(define_insn "spe_evldw"
855117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
856117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
857117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
858117395Skan   (unspec [(const_int 0)] 548)]
859132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
860132718Skan  "evldw %0,%2*8(%1)"
861117395Skan  [(set_attr "type" "vecload")
862117395Skan   (set_attr  "length" "4")])
863117395Skan
864117395Skan(define_insn "spe_evldwx"
865117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
866117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
867117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
868117395Skan   (unspec [(const_int 0)] 549)]
869117395Skan  "TARGET_SPE"
870117395Skan  "evldwx %0,%1,%2"
871117395Skan  [(set_attr "type" "vecload")
872117395Skan   (set_attr  "length" "4")])
873117395Skan
874117395Skan(define_insn "spe_evlwhe"
875117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
876117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
877117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
878117395Skan   (unspec [(const_int 0)] 550)]
879132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
880132718Skan  "evlwhe %0,%2*4(%1)"
881117395Skan  [(set_attr "type" "vecload")
882117395Skan   (set_attr  "length" "4")])
883117395Skan
884117395Skan(define_insn "spe_evlwhex"
885117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
886117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
887117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
888117395Skan   (unspec [(const_int 0)] 551)]
889117395Skan  "TARGET_SPE"
890117395Skan  "evlwhex %0,%1,%2"
891117395Skan  [(set_attr "type" "vecload")
892117395Skan   (set_attr  "length" "4")])
893117395Skan
894117395Skan(define_insn "spe_evlwhos"
895117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
896117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
897117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
898117395Skan   (unspec [(const_int 0)] 552)]
899132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
900132718Skan  "evlwhos %0,%2*4(%1)"
901117395Skan  [(set_attr "type" "vecload")
902117395Skan   (set_attr  "length" "4")])
903117395Skan
904117395Skan(define_insn "spe_evlwhosx"
905117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
906117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
907117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
908117395Skan   (unspec [(const_int 0)] 553)]
909117395Skan  "TARGET_SPE"
910117395Skan  "evlwhosx %0,%1,%2"
911117395Skan  [(set_attr "type" "vecload")
912117395Skan   (set_attr  "length" "4")])
913117395Skan
914117395Skan(define_insn "spe_evlwhou"
915117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
916117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
917117395Skan			   (match_operand:QI 2 "immediate_operand" "i"))))
918117395Skan   (unspec [(const_int 0)] 554)]
919132718Skan  "TARGET_SPE && INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 31"
920132718Skan  "evlwhou %0,%2*4(%1)"
921117395Skan  [(set_attr "type" "vecload")
922117395Skan   (set_attr  "length" "4")])
923117395Skan
924117395Skan(define_insn "spe_evlwhoux"
925117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
926117395Skan	(mem:V2SI (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
927117395Skan			   (match_operand:SI 2 "gpc_reg_operand" "r"))))
928117395Skan   (unspec [(const_int 0)] 555)]
929117395Skan  "TARGET_SPE"
930117395Skan  "evlwhoux %0,%1,%2"
931117395Skan  [(set_attr "type" "vecload")
932117395Skan   (set_attr  "length" "4")])
933117395Skan
934117395Skan(define_insn "spe_brinc"
935117395Skan  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
936117395Skan        (unspec:SI [(match_operand:SI 1 "gpc_reg_operand" "r")
937117395Skan		    (match_operand:SI 2 "gpc_reg_operand" "r")] 556))]
938117395Skan  "TARGET_SPE"
939117395Skan  "brinc %0,%1,%2"
940132718Skan  [(set_attr "type" "brinc")
941117395Skan   (set_attr  "length" "4")])
942117395Skan
943117395Skan(define_insn "spe_evmhegsmfaa"
944117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
945117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
946117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
947117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 557))
948132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
949117395Skan  "TARGET_SPE"
950117395Skan  "evmhegsmfaa %0,%1,%2"
951117395Skan  [(set_attr "type" "veccomplex")
952117395Skan   (set_attr  "length" "4")])
953117395Skan
954117395Skan(define_insn "spe_evmhegsmfan"
955117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
956117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
957117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
958117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 558))
959132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
960117395Skan  "TARGET_SPE"
961117395Skan  "evmhegsmfan %0,%1,%2"
962117395Skan  [(set_attr "type" "veccomplex")
963117395Skan   (set_attr  "length" "4")])
964117395Skan
965117395Skan(define_insn "spe_evmhegsmiaa"
966117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
967117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
968117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
969117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 559))
970132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
971117395Skan  "TARGET_SPE"
972117395Skan  "evmhegsmiaa %0,%1,%2"
973117395Skan  [(set_attr "type" "veccomplex")
974117395Skan   (set_attr  "length" "4")])
975117395Skan
976117395Skan(define_insn "spe_evmhegsmian"
977117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
978117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
979117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
980117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 560))
981132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
982117395Skan  "TARGET_SPE"
983117395Skan  "evmhegsmian %0,%1,%2"
984117395Skan  [(set_attr "type" "veccomplex")
985117395Skan   (set_attr  "length" "4")])
986117395Skan
987117395Skan(define_insn "spe_evmhegumiaa"
988117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
989117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
990117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
991117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 561))
992132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
993117395Skan  "TARGET_SPE"
994117395Skan  "evmhegumiaa %0,%1,%2"
995117395Skan  [(set_attr "type" "veccomplex")
996117395Skan   (set_attr  "length" "4")])
997117395Skan
998117395Skan(define_insn "spe_evmhegumian"
999117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1000117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1001117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1002117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 562))
1003132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1004117395Skan  "TARGET_SPE"
1005117395Skan  "evmhegumian %0,%1,%2"
1006117395Skan  [(set_attr "type" "veccomplex")
1007117395Skan   (set_attr  "length" "4")])
1008117395Skan
1009117395Skan(define_insn "spe_evmhesmfaaw"
1010117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1011117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1012117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1013117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 563))
1014132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1015117395Skan  "TARGET_SPE"
1016117395Skan  "evmhesmfaaw %0,%1,%2"
1017117395Skan  [(set_attr "type" "veccomplex")
1018117395Skan   (set_attr  "length" "4")])
1019117395Skan
1020117395Skan(define_insn "spe_evmhesmfanw"
1021117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1022117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1023117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1024117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 564))
1025132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1026117395Skan  "TARGET_SPE"
1027117395Skan  "evmhesmfanw %0,%1,%2"
1028117395Skan  [(set_attr "type" "veccomplex")
1029117395Skan   (set_attr  "length" "4")])
1030117395Skan
1031117395Skan(define_insn "spe_evmhesmfa"
1032117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1033117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1034117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 565))
1035132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1036117395Skan  "TARGET_SPE"
1037117395Skan  "evmhesmfa %0,%1,%2"
1038117395Skan  [(set_attr "type" "veccomplex")
1039117395Skan   (set_attr  "length" "4")])
1040117395Skan
1041117395Skan(define_insn "spe_evmhesmf"
1042117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1043117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1044117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 566))]
1045117395Skan  "TARGET_SPE"
1046117395Skan  "evmhesmf %0,%1,%2"
1047117395Skan  [(set_attr "type" "veccomplex")
1048117395Skan   (set_attr  "length" "4")])
1049117395Skan
1050117395Skan(define_insn "spe_evmhesmiaaw"
1051117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1052117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1053117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1054117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 567))
1055132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1056117395Skan  "TARGET_SPE"
1057117395Skan  "evmhesmiaaw %0,%1,%2"
1058117395Skan  [(set_attr "type" "veccomplex")
1059117395Skan   (set_attr  "length" "4")])
1060117395Skan
1061117395Skan(define_insn "spe_evmhesmianw"
1062117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1063117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1064117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1065117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 568))
1066132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1067117395Skan  "TARGET_SPE"
1068117395Skan  "evmhesmianw %0,%1,%2"
1069117395Skan  [(set_attr "type" "veccomplex")
1070117395Skan   (set_attr  "length" "4")])
1071117395Skan
1072117395Skan(define_insn "spe_evmhesmia"
1073117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1074117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1075117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 569))
1076132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1077117395Skan  "TARGET_SPE"
1078117395Skan  "evmhesmia %0,%1,%2"
1079117395Skan  [(set_attr "type" "veccomplex")
1080117395Skan   (set_attr  "length" "4")])
1081117395Skan
1082117395Skan(define_insn "spe_evmhesmi"
1083117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1084117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1085117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 570))]
1086117395Skan  "TARGET_SPE"
1087117395Skan  "evmhesmi %0,%1,%2"
1088117395Skan  [(set_attr "type" "veccomplex")
1089117395Skan   (set_attr  "length" "4")])
1090117395Skan
1091117395Skan(define_insn "spe_evmhessfaaw"
1092117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1093117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1094117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1095117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 571))
1096117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1097132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1098117395Skan  "TARGET_SPE"
1099117395Skan  "evmhessfaaw %0,%1,%2"
1100117395Skan  [(set_attr "type" "veccomplex")
1101117395Skan   (set_attr  "length" "4")])
1102117395Skan
1103117395Skan(define_insn "spe_evmhessfanw"
1104117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1105117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1106117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1107117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 572))
1108117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1109132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1110117395Skan  "TARGET_SPE"
1111117395Skan  "evmhessfanw %0,%1,%2"
1112117395Skan  [(set_attr "type" "veccomplex")
1113117395Skan   (set_attr  "length" "4")])
1114117395Skan
1115117395Skan(define_insn "spe_evmhessfa"
1116117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1117117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1118117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 573))
1119117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1120132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1121117395Skan  "TARGET_SPE"
1122117395Skan  "evmhessfa %0,%1,%2"
1123117395Skan  [(set_attr "type" "veccomplex")
1124117395Skan   (set_attr  "length" "4")])
1125117395Skan
1126117395Skan(define_insn "spe_evmhessf"
1127117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1128117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1129117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 574))
1130117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1131117395Skan  "TARGET_SPE"
1132117395Skan  "evmhessf %0,%1,%2"
1133117395Skan  [(set_attr "type" "veccomplex")
1134117395Skan   (set_attr  "length" "4")])
1135117395Skan
1136117395Skan(define_insn "spe_evmhessiaaw"
1137117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1138117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1139117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1140117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 575))
1141117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1142132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1143117395Skan  "TARGET_SPE"
1144117395Skan  "evmhessiaaw %0,%1,%2"
1145117395Skan  [(set_attr "type" "veccomplex")
1146117395Skan   (set_attr  "length" "4")])
1147117395Skan
1148117395Skan(define_insn "spe_evmhessianw"
1149117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1150117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1151117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1152117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 576))
1153117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1154132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1155117395Skan  "TARGET_SPE"
1156117395Skan  "evmhessianw %0,%1,%2"
1157117395Skan  [(set_attr "type" "veccomplex")
1158117395Skan   (set_attr  "length" "4")])
1159117395Skan
1160117395Skan(define_insn "spe_evmheumiaaw"
1161117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1162117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1163117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1164117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 577))
1165132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1166117395Skan  "TARGET_SPE"
1167117395Skan  "evmheumiaaw %0,%1,%2"
1168117395Skan  [(set_attr "type" "veccomplex")
1169117395Skan   (set_attr  "length" "4")])
1170117395Skan
1171117395Skan(define_insn "spe_evmheumianw"
1172117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1173117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1174117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1175117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 578))
1176132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1177117395Skan  "TARGET_SPE"
1178117395Skan  "evmheumianw %0,%1,%2"
1179117395Skan  [(set_attr "type" "veccomplex")
1180117395Skan   (set_attr  "length" "4")])
1181117395Skan
1182117395Skan(define_insn "spe_evmheumia"
1183117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1184117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1185117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 579))
1186132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1187117395Skan  "TARGET_SPE"
1188117395Skan  "evmheumia %0,%1,%2"
1189117395Skan  [(set_attr "type" "veccomplex")
1190117395Skan   (set_attr  "length" "4")])
1191117395Skan
1192117395Skan(define_insn "spe_evmheumi"
1193117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1194117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1195117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 580))]
1196117395Skan  "TARGET_SPE"
1197117395Skan  "evmheumi %0,%1,%2"
1198117395Skan  [(set_attr "type" "veccomplex")
1199117395Skan   (set_attr  "length" "4")])
1200117395Skan
1201117395Skan(define_insn "spe_evmheusiaaw"
1202117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1203117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1204117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1205117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 581))
1206117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1207132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1208117395Skan  "TARGET_SPE"
1209117395Skan  "evmheusiaaw %0,%1,%2"
1210117395Skan  [(set_attr "type" "veccomplex")
1211117395Skan   (set_attr  "length" "4")])
1212117395Skan
1213117395Skan(define_insn "spe_evmheusianw"
1214117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1215117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1216117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1217117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 582))
1218117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1219132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1220117395Skan  "TARGET_SPE"
1221117395Skan  "evmheusianw %0,%1,%2"
1222117395Skan  [(set_attr "type" "veccomplex")
1223117395Skan   (set_attr  "length" "4")])
1224117395Skan
1225117395Skan(define_insn "spe_evmhogsmfaa"
1226117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1227117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1228117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1229117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 583))
1230132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1231117395Skan  "TARGET_SPE"
1232117395Skan  "evmhogsmfaa %0,%1,%2"
1233117395Skan  [(set_attr "type" "veccomplex")
1234117395Skan   (set_attr  "length" "4")])
1235117395Skan
1236117395Skan(define_insn "spe_evmhogsmfan"
1237117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1238117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1239117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1240117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 584))
1241132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1242117395Skan  "TARGET_SPE"
1243117395Skan  "evmhogsmfan %0,%1,%2"
1244117395Skan  [(set_attr "type" "veccomplex")
1245117395Skan   (set_attr  "length" "4")])
1246117395Skan
1247117395Skan(define_insn "spe_evmhogsmiaa"
1248117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1249117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1250117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1251117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 585))
1252132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1253117395Skan  "TARGET_SPE"
1254117395Skan  "evmhogsmiaa %0,%1,%2"
1255117395Skan  [(set_attr "type" "veccomplex")
1256117395Skan   (set_attr  "length" "4")])
1257117395Skan
1258117395Skan(define_insn "spe_evmhogsmian"
1259117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1260117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1261117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1262117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 586))
1263132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1264117395Skan  "TARGET_SPE"
1265117395Skan  "evmhogsmian %0,%1,%2"
1266117395Skan  [(set_attr "type" "veccomplex")
1267117395Skan   (set_attr  "length" "4")])
1268117395Skan
1269117395Skan(define_insn "spe_evmhogumiaa"
1270117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1271117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1272117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1273117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 587))
1274132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1275117395Skan  "TARGET_SPE"
1276117395Skan  "evmhogumiaa %0,%1,%2"
1277117395Skan  [(set_attr "type" "veccomplex")
1278117395Skan   (set_attr  "length" "4")])
1279117395Skan
1280117395Skan(define_insn "spe_evmhogumian"
1281117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1282117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1283117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1284117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 588))
1285132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1286117395Skan  "TARGET_SPE"
1287117395Skan  "evmhogumian %0,%1,%2"
1288117395Skan  [(set_attr "type" "veccomplex")
1289117395Skan   (set_attr  "length" "4")])
1290117395Skan
1291117395Skan(define_insn "spe_evmhosmfaaw"
1292117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1293117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1294117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1295117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 589))
1296132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1297117395Skan  "TARGET_SPE"
1298117395Skan  "evmhosmfaaw %0,%1,%2"
1299117395Skan  [(set_attr "type" "veccomplex")
1300117395Skan   (set_attr  "length" "4")])
1301117395Skan
1302117395Skan(define_insn "spe_evmhosmfanw"
1303117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1304117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1305117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1306117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 590))
1307132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1308117395Skan  "TARGET_SPE"
1309117395Skan  "evmhosmfanw %0,%1,%2"
1310117395Skan  [(set_attr "type" "veccomplex")
1311117395Skan   (set_attr  "length" "4")])
1312117395Skan
1313117395Skan(define_insn "spe_evmhosmfa"
1314117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1315117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1316117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 591))]
1317117395Skan  "TARGET_SPE"
1318117395Skan  "evmhosmfa %0,%1,%2"
1319117395Skan  [(set_attr "type" "veccomplex")
1320117395Skan   (set_attr  "length" "4")])
1321117395Skan
1322117395Skan(define_insn "spe_evmhosmf"
1323117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1324117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1325117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 592))
1326132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1327117395Skan  "TARGET_SPE"
1328117395Skan  "evmhosmf %0,%1,%2"
1329117395Skan  [(set_attr "type" "veccomplex")
1330117395Skan   (set_attr  "length" "4")])
1331117395Skan
1332117395Skan(define_insn "spe_evmhosmiaaw"
1333117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1334117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1335117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1336117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 593))
1337132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1338117395Skan  "TARGET_SPE"
1339117395Skan  "evmhosmiaaw %0,%1,%2"
1340117395Skan  [(set_attr "type" "veccomplex")
1341117395Skan   (set_attr  "length" "4")])
1342117395Skan
1343117395Skan(define_insn "spe_evmhosmianw"
1344117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1345117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1346117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1347117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 594))
1348132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1349117395Skan  "TARGET_SPE"
1350117395Skan  "evmhosmianw %0,%1,%2"
1351117395Skan  [(set_attr "type" "veccomplex")
1352117395Skan   (set_attr  "length" "4")])
1353117395Skan
1354117395Skan(define_insn "spe_evmhosmia"
1355117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1356117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1357117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 595))
1358132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1359117395Skan  "TARGET_SPE"
1360117395Skan  "evmhosmia %0,%1,%2"
1361117395Skan  [(set_attr "type" "veccomplex")
1362117395Skan   (set_attr  "length" "4")])
1363117395Skan
1364117395Skan(define_insn "spe_evmhosmi"
1365117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1366117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1367117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 596))]
1368117395Skan  "TARGET_SPE"
1369117395Skan  "evmhosmi %0,%1,%2"
1370117395Skan  [(set_attr "type" "veccomplex")
1371117395Skan   (set_attr  "length" "4")])
1372117395Skan
1373117395Skan(define_insn "spe_evmhossfaaw"
1374117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1375117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1376117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1377117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 597))
1378117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1379132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1380117395Skan  "TARGET_SPE"
1381117395Skan  "evmhossfaaw %0,%1,%2"
1382117395Skan  [(set_attr "type" "veccomplex")
1383117395Skan   (set_attr  "length" "4")])
1384117395Skan
1385117395Skan(define_insn "spe_evmhossfanw"
1386117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1387117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1388117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1389117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 598))
1390117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1391132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1392117395Skan  "TARGET_SPE"
1393117395Skan  "evmhossfanw %0,%1,%2"
1394117395Skan  [(set_attr "type" "veccomplex")
1395117395Skan   (set_attr  "length" "4")])
1396117395Skan
1397117395Skan(define_insn "spe_evmhossfa"
1398117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1399117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1400117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1401117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 599))
1402117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1403132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1404117395Skan  "TARGET_SPE"
1405117395Skan  "evmhossfa %0,%1,%2"
1406117395Skan  [(set_attr "type" "veccomplex")
1407117395Skan   (set_attr  "length" "4")])
1408117395Skan
1409117395Skan(define_insn "spe_evmhossf"
1410117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1411117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1412117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 600))
1413117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1414117395Skan  "TARGET_SPE"
1415117395Skan  "evmhossf %0,%1,%2"
1416117395Skan  [(set_attr "type" "veccomplex")
1417117395Skan   (set_attr  "length" "4")])
1418117395Skan
1419117395Skan(define_insn "spe_evmhossiaaw"
1420117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1421117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1422117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1423117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 601))
1424117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1425132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1426117395Skan  "TARGET_SPE"
1427117395Skan  "evmhossiaaw %0,%1,%2"
1428117395Skan  [(set_attr "type" "veccomplex")
1429117395Skan   (set_attr  "length" "4")])
1430117395Skan
1431117395Skan(define_insn "spe_evmhossianw"
1432117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1433117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1434117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1435117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 602))
1436117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1437132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1438117395Skan  "TARGET_SPE"
1439117395Skan  "evmhossianw %0,%1,%2"
1440117395Skan  [(set_attr "type" "veccomplex")
1441117395Skan   (set_attr  "length" "4")])
1442117395Skan
1443117395Skan(define_insn "spe_evmhoumiaaw"
1444117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1445117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1446117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1447117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 603))
1448132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1449117395Skan  "TARGET_SPE"
1450117395Skan  "evmhoumiaaw %0,%1,%2"
1451117395Skan  [(set_attr "type" "veccomplex")
1452117395Skan   (set_attr  "length" "4")])
1453117395Skan
1454117395Skan(define_insn "spe_evmhoumianw"
1455117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1456117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1457117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1458117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 604))
1459132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1460117395Skan  "TARGET_SPE"
1461117395Skan  "evmhoumianw %0,%1,%2"
1462117395Skan  [(set_attr "type" "veccomplex")
1463117395Skan   (set_attr  "length" "4")])
1464117395Skan
1465117395Skan(define_insn "spe_evmhoumia"
1466117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1467117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1468117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 605))
1469132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1470117395Skan  "TARGET_SPE"
1471117395Skan  "evmhoumia %0,%1,%2"
1472117395Skan  [(set_attr "type" "veccomplex")
1473117395Skan   (set_attr  "length" "4")])
1474117395Skan
1475117395Skan(define_insn "spe_evmhoumi"
1476117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1477117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1478117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 606))]
1479117395Skan  "TARGET_SPE"
1480117395Skan  "evmhoumi %0,%1,%2"
1481117395Skan  [(set_attr "type" "veccomplex")
1482117395Skan   (set_attr  "length" "4")])
1483117395Skan
1484117395Skan(define_insn "spe_evmhousiaaw"
1485117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1486117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1487117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1488117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 607))
1489117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1490132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1491117395Skan  "TARGET_SPE"
1492117395Skan  "evmhousiaaw %0,%1,%2"
1493117395Skan  [(set_attr "type" "veccomplex")
1494117395Skan   (set_attr  "length" "4")])
1495117395Skan
1496117395Skan(define_insn "spe_evmhousianw"
1497117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1498117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1499117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1500117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 608))
1501117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1502132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1503117395Skan  "TARGET_SPE"
1504117395Skan  "evmhousianw %0,%1,%2"
1505117395Skan  [(set_attr "type" "veccomplex")
1506117395Skan   (set_attr  "length" "4")])
1507117395Skan
1508117395Skan(define_insn "spe_evmmlssfa"
1509117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1510117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1511117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 609))]
1512117395Skan  "TARGET_SPE"
1513117395Skan  "evmmlssfa %0,%1,%2"
1514117395Skan  [(set_attr "type" "veccomplex")
1515117395Skan   (set_attr  "length" "4")])
1516117395Skan
1517117395Skan(define_insn "spe_evmmlssf"
1518117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1519117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1520117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 610))]
1521117395Skan  "TARGET_SPE"
1522117395Skan  "evmmlssf %0,%1,%2"
1523117395Skan  [(set_attr "type" "veccomplex")
1524117395Skan   (set_attr  "length" "4")])
1525117395Skan
1526117395Skan(define_insn "spe_evmwhsmfa"
1527117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1528117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1529117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 611))
1530132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1531117395Skan  "TARGET_SPE"
1532117395Skan  "evmwhsmfa %0,%1,%2"
1533117395Skan  [(set_attr "type" "veccomplex")
1534117395Skan   (set_attr  "length" "4")])
1535117395Skan
1536117395Skan(define_insn "spe_evmwhsmf"
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")] 612))]
1540117395Skan  "TARGET_SPE"
1541117395Skan  "evmwhsmf %0,%1,%2"
1542117395Skan  [(set_attr "type" "veccomplex")
1543117395Skan   (set_attr  "length" "4")])
1544117395Skan
1545117395Skan(define_insn "spe_evmwhsmia"
1546117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1547117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1548117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 613))
1549132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1550117395Skan  "TARGET_SPE"
1551117395Skan  "evmwhsmia %0,%1,%2"
1552117395Skan  [(set_attr "type" "veccomplex")
1553117395Skan   (set_attr  "length" "4")])
1554117395Skan
1555117395Skan(define_insn "spe_evmwhsmi"
1556117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1557117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1558117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 614))]
1559117395Skan  "TARGET_SPE"
1560117395Skan  "evmwhsmi %0,%1,%2"
1561117395Skan  [(set_attr "type" "veccomplex")
1562117395Skan   (set_attr  "length" "4")])
1563117395Skan
1564117395Skan(define_insn "spe_evmwhssfa"
1565117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1566117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1567117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 615))
1568117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1569132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1570117395Skan  "TARGET_SPE"
1571117395Skan  "evmwhssfa %0,%1,%2"
1572117395Skan  [(set_attr "type" "veccomplex")
1573117395Skan   (set_attr  "length" "4")])
1574117395Skan
1575117395Skan(define_insn "spe_evmwhusian"
1576117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1577117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1578117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 626))]
1579117395Skan  "TARGET_SPE"
1580117395Skan  "evmwhusian %0,%1,%2"
1581117395Skan  [(set_attr "type" "veccomplex")
1582117395Skan   (set_attr  "length" "4")])
1583117395Skan
1584117395Skan(define_insn "spe_evmwhssf"
1585117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1586117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1587117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 628))
1588117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1589117395Skan  "TARGET_SPE"
1590117395Skan  "evmwhssf %0,%1,%2"
1591117395Skan  [(set_attr "type" "veccomplex")
1592117395Skan   (set_attr  "length" "4")])
1593117395Skan
1594117395Skan(define_insn "spe_evmwhumia"
1595117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1596117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1597117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 629))
1598132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1599117395Skan  "TARGET_SPE"
1600117395Skan  "evmwhumia %0,%1,%2"
1601117395Skan  [(set_attr "type" "veccomplex")
1602117395Skan   (set_attr  "length" "4")])
1603117395Skan
1604117395Skan(define_insn "spe_evmwhumi"
1605117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1606117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1607117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 630))]
1608117395Skan  "TARGET_SPE"
1609117395Skan  "evmwhumi %0,%1,%2"
1610117395Skan  [(set_attr "type" "veccomplex")
1611117395Skan   (set_attr  "length" "4")])
1612117395Skan
1613117395Skan(define_insn "spe_evmwlsmiaaw"
1614117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1615117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1616117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1617117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 635))
1618132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1619117395Skan  "TARGET_SPE"
1620117395Skan  "evmwlsmiaaw %0,%1,%2"
1621117395Skan  [(set_attr "type" "veccomplex")
1622117395Skan   (set_attr  "length" "4")])
1623117395Skan
1624117395Skan(define_insn "spe_evmwlsmianw"
1625117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1626117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1627117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1628117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 636))
1629132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1630117395Skan  "TARGET_SPE"
1631117395Skan  "evmwlsmianw %0,%1,%2"
1632117395Skan  [(set_attr "type" "veccomplex")
1633117395Skan   (set_attr  "length" "4")])
1634117395Skan
1635117395Skan(define_insn "spe_evmwlssiaaw"
1636117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1637117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1638117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1639117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 641))
1640117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1641132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1642117395Skan  "TARGET_SPE"
1643117395Skan  "evmwlssiaaw %0,%1,%2"
1644117395Skan  [(set_attr "type" "veccomplex")
1645117395Skan   (set_attr  "length" "4")])
1646117395Skan
1647117395Skan(define_insn "spe_evmwlssianw"
1648117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1649117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1650117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1651117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 642))
1652117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1653132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1654117395Skan  "TARGET_SPE"
1655117395Skan  "evmwlssianw %0,%1,%2"
1656117395Skan  [(set_attr "type" "veccomplex")
1657117395Skan   (set_attr  "length" "4")])
1658117395Skan
1659117395Skan(define_insn "spe_evmwlumiaaw"
1660117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1661117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1662117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1663117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 643))
1664132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1665117395Skan  "TARGET_SPE"
1666117395Skan  "evmwlumiaaw %0,%1,%2"
1667117395Skan  [(set_attr "type" "veccomplex")
1668117395Skan   (set_attr  "length" "4")])
1669117395Skan
1670117395Skan(define_insn "spe_evmwlumianw"
1671117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1672117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1673117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1674117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 644))
1675132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1676117395Skan  "TARGET_SPE"
1677117395Skan  "evmwlumianw %0,%1,%2"
1678117395Skan  [(set_attr "type" "veccomplex")
1679117395Skan   (set_attr  "length" "4")])
1680117395Skan
1681117395Skan(define_insn "spe_evmwlumia"
1682117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1683117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1684117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 645))
1685132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1686117395Skan  "TARGET_SPE"
1687117395Skan  "evmwlumia %0,%1,%2"
1688117395Skan  [(set_attr "type" "veccomplex")
1689117395Skan   (set_attr  "length" "4")])
1690117395Skan
1691117395Skan(define_insn "spe_evmwlumi"
1692117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1693117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1694117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 646))]
1695117395Skan  "TARGET_SPE"
1696117395Skan  "evmwlumi %0,%1,%2"
1697117395Skan  [(set_attr "type" "veccomplex")
1698117395Skan   (set_attr  "length" "4")])
1699117395Skan
1700117395Skan(define_insn "spe_evmwlusiaaw"
1701117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1702117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1703117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1704117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 647))
1705117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1706132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1707117395Skan  "TARGET_SPE"
1708117395Skan  "evmwlusiaaw %0,%1,%2"
1709117395Skan  [(set_attr "type" "veccomplex")
1710117395Skan   (set_attr  "length" "4")])
1711117395Skan
1712117395Skan(define_insn "spe_evmwlusianw"
1713117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1714117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1715117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1716117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 648))
1717117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1718132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1719117395Skan  "TARGET_SPE"
1720117395Skan  "evmwlusianw %0,%1,%2"
1721117395Skan  [(set_attr "type" "veccomplex")
1722117395Skan   (set_attr  "length" "4")])
1723117395Skan
1724117395Skan(define_insn "spe_evmwsmfaa"
1725117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1726117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1727117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1728117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 649))
1729132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1730117395Skan  "TARGET_SPE"
1731117395Skan  "evmwsmfaa %0,%1,%2"
1732117395Skan  [(set_attr "type" "veccomplex")
1733117395Skan   (set_attr  "length" "4")])
1734117395Skan
1735117395Skan(define_insn "spe_evmwsmfan"
1736117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1737117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1738117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1739117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 650))
1740132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1741117395Skan  "TARGET_SPE"
1742117395Skan  "evmwsmfan %0,%1,%2"
1743117395Skan  [(set_attr "type" "veccomplex")
1744117395Skan   (set_attr  "length" "4")])
1745117395Skan
1746117395Skan(define_insn "spe_evmwsmfa"
1747117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1748117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1749117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 651))
1750132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1751117395Skan  "TARGET_SPE"
1752117395Skan  "evmwsmfa %0,%1,%2"
1753117395Skan  [(set_attr "type" "veccomplex")
1754117395Skan   (set_attr  "length" "4")])
1755117395Skan
1756117395Skan(define_insn "spe_evmwsmf"
1757117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1758117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1759117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 652))]
1760117395Skan  "TARGET_SPE"
1761117395Skan  "evmwsmf %0,%1,%2"
1762117395Skan  [(set_attr "type" "veccomplex")
1763117395Skan   (set_attr  "length" "4")])
1764117395Skan
1765117395Skan(define_insn "spe_evmwsmiaa"
1766117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1767117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1768117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1769117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 653))
1770132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1771117395Skan  "TARGET_SPE"
1772117395Skan  "evmwsmiaa %0,%1,%2"
1773117395Skan  [(set_attr "type" "veccomplex")
1774117395Skan   (set_attr  "length" "4")])
1775117395Skan
1776117395Skan(define_insn "spe_evmwsmian"
1777117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1778117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1779117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1780117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 654))
1781132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1782117395Skan  "TARGET_SPE"
1783117395Skan  "evmwsmian %0,%1,%2"
1784117395Skan  [(set_attr "type" "veccomplex")
1785117395Skan   (set_attr  "length" "4")])
1786117395Skan
1787117395Skan(define_insn "spe_evmwsmia"
1788117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1789117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1790117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 655))
1791132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1792117395Skan  "TARGET_SPE"
1793117395Skan  "evmwsmia %0,%1,%2"
1794117395Skan  [(set_attr "type" "veccomplex")
1795117395Skan   (set_attr  "length" "4")])
1796117395Skan
1797117395Skan(define_insn "spe_evmwsmi"
1798117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1799117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1800117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 656))]
1801117395Skan  "TARGET_SPE"
1802117395Skan  "evmwsmi %0,%1,%2"
1803117395Skan  [(set_attr "type" "veccomplex")
1804117395Skan   (set_attr  "length" "4")])
1805117395Skan
1806117395Skan(define_insn "spe_evmwssfaa"
1807117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1808117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1809117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1810117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 657))
1811117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1812132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1813117395Skan  "TARGET_SPE"
1814117395Skan  "evmwssfaa %0,%1,%2"
1815117395Skan  [(set_attr "type" "veccomplex")
1816117395Skan   (set_attr  "length" "4")])
1817117395Skan
1818117395Skan(define_insn "spe_evmwssfan"
1819117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1820117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1821117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1822117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 658))
1823117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1824132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1825117395Skan  "TARGET_SPE"
1826117395Skan  "evmwssfan %0,%1,%2"
1827117395Skan  [(set_attr "type" "veccomplex")
1828117395Skan   (set_attr  "length" "4")])
1829117395Skan
1830117395Skan(define_insn "spe_evmwssfa"
1831117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1832117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1833117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 659))
1834117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1835132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1836117395Skan  "TARGET_SPE"
1837117395Skan  "evmwssfa %0,%1,%2"
1838117395Skan  [(set_attr "type" "veccomplex")
1839117395Skan   (set_attr  "length" "4")])
1840117395Skan
1841117395Skan(define_insn "spe_evmwssf"
1842117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1843117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1844117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 660))
1845117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
1846117395Skan  "TARGET_SPE"
1847117395Skan  "evmwssf %0,%1,%2"
1848117395Skan  [(set_attr "type" "veccomplex")
1849117395Skan   (set_attr  "length" "4")])
1850117395Skan
1851117395Skan(define_insn "spe_evmwumiaa"
1852117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1853117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1854117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1855117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 661))
1856132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1857117395Skan  "TARGET_SPE"
1858117395Skan  "evmwumiaa %0,%1,%2"
1859117395Skan  [(set_attr "type" "veccomplex")
1860117395Skan   (set_attr  "length" "4")])
1861117395Skan
1862117395Skan(define_insn "spe_evmwumian"
1863117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1864117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1865117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")
1866117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 662))
1867132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1868117395Skan  "TARGET_SPE"
1869117395Skan  "evmwumian %0,%1,%2"
1870117395Skan  [(set_attr "type" "veccomplex")
1871117395Skan   (set_attr  "length" "4")])
1872117395Skan
1873117395Skan(define_insn "spe_evmwumia"
1874117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1875117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1876117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 663))
1877132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1878117395Skan  "TARGET_SPE"
1879117395Skan  "evmwumia %0,%1,%2"
1880117395Skan  [(set_attr "type" "veccomplex")
1881117395Skan   (set_attr  "length" "4")])
1882117395Skan
1883117395Skan(define_insn "spe_evmwumi"
1884117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1885117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1886117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 664))]
1887117395Skan  "TARGET_SPE"
1888117395Skan  "evmwumi %0,%1,%2"
1889117395Skan  [(set_attr "type" "veccomplex")
1890117395Skan   (set_attr  "length" "4")])
1891117395Skan
1892117395Skan(define_insn "spe_evaddw"
1893117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1894117395Skan        (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1895117395Skan		   (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
1896117395Skan  "TARGET_SPE"
1897117395Skan  "evaddw %0,%1,%2"
1898132718Skan  [(set_attr "type" "vecsimple")
1899117395Skan   (set_attr  "length" "4")])
1900117395Skan
1901117395Skan(define_insn "spe_evaddusiaaw"
1902117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1903117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1904117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 673))
1905117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1906132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1907117395Skan  "TARGET_SPE"
1908117395Skan  "evaddusiaaw %0,%1"
1909117395Skan  [(set_attr "type" "veccomplex")
1910117395Skan   (set_attr  "length" "4")])
1911117395Skan
1912117395Skan(define_insn "spe_evaddumiaaw"
1913117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1914117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1915117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 674))
1916132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1917117395Skan  "TARGET_SPE"
1918117395Skan  "evaddumiaaw %0,%1"
1919117395Skan  [(set_attr "type" "veccomplex")
1920117395Skan   (set_attr  "length" "4")])
1921117395Skan
1922117395Skan(define_insn "spe_evaddssiaaw"
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)] 675))
1926117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1927132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1928117395Skan  "TARGET_SPE"
1929117395Skan  "evaddssiaaw %0,%1"
1930117395Skan  [(set_attr "type" "veccomplex")
1931117395Skan   (set_attr  "length" "4")])
1932117395Skan
1933117395Skan(define_insn "spe_evaddsmiaaw"
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)] 676))
1937132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1938117395Skan  "TARGET_SPE"
1939117395Skan  "evaddsmiaaw %0,%1"
1940117395Skan  [(set_attr "type" "veccomplex")
1941117395Skan   (set_attr  "length" "4")])
1942117395Skan
1943117395Skan(define_insn "spe_evaddiw"
1944117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1945117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1946117395Skan		      (match_operand:QI 2 "immediate_operand" "i")] 677))]
1947117395Skan  "TARGET_SPE"
1948117395Skan  "evaddiw %0,%1,%2"
1949132718Skan  [(set_attr "type" "vecsimple")
1950117395Skan   (set_attr  "length" "4")])
1951117395Skan
1952117395Skan(define_insn "spe_evsubifw"
1953117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1954117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1955117395Skan		      (match_operand:QI 2 "immediate_operand" "i")] 678))]
1956117395Skan  "TARGET_SPE"
1957117395Skan  "evsubifw %0,%2,%1"
1958117395Skan  [(set_attr "type" "veccomplex")
1959117395Skan   (set_attr  "length" "4")])
1960117395Skan
1961117395Skan(define_insn "spe_evsubfw"
1962117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1963117395Skan        (minus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
1964117395Skan		    (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
1965117395Skan  "TARGET_SPE"
1966132718Skan  "evsubfw %0,%2,%1"
1967117395Skan  [(set_attr "type" "veccomplex")
1968117395Skan   (set_attr  "length" "4")])
1969117395Skan
1970117395Skan(define_insn "spe_evsubfusiaaw"
1971117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1972117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1973117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 679))
1974117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1975132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1976117395Skan  "TARGET_SPE"
1977117395Skan  "evsubfusiaaw %0,%1"
1978117395Skan  [(set_attr "type" "veccomplex")
1979117395Skan   (set_attr  "length" "4")])
1980117395Skan
1981117395Skan(define_insn "spe_evsubfumiaaw"
1982117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1983117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1984117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 680))
1985132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1986117395Skan  "TARGET_SPE"
1987117395Skan  "evsubfumiaaw %0,%1"
1988117395Skan  [(set_attr "type" "veccomplex")
1989117395Skan   (set_attr  "length" "4")])
1990117395Skan
1991117395Skan(define_insn "spe_evsubfssiaaw"
1992117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
1993117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
1994117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 681))
1995117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
1996132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
1997117395Skan  "TARGET_SPE"
1998117395Skan  "evsubfssiaaw %0,%1"
1999117395Skan  [(set_attr "type" "veccomplex")
2000117395Skan   (set_attr  "length" "4")])
2001117395Skan
2002117395Skan(define_insn "spe_evsubfsmiaaw"
2003117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2004117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2005117395Skan		      (reg:V2SI SPE_ACC_REGNO)] 682))
2006132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2007117395Skan  "TARGET_SPE"
2008117395Skan  "evsubfsmiaaw %0,%1"
2009117395Skan  [(set_attr "type" "veccomplex")
2010117395Skan   (set_attr  "length" "4")])
2011117395Skan
2012117395Skan(define_insn "spe_evmra"
2013117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2014117395Skan        (match_operand:V2SI 1 "gpc_reg_operand" "r"))
2015117395Skan   (set (reg:V2SI SPE_ACC_REGNO)
2016117395Skan	(unspec:V2SI [(match_dup 1)] 726))]
2017117395Skan  "TARGET_SPE"
2018117395Skan  "evmra %0,%1"
2019117395Skan  [(set_attr "type" "veccomplex")
2020117395Skan   (set_attr  "length" "4")])
2021117395Skan
2022117395Skan(define_insn "spe_evdivws"
2023117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2024117395Skan        (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
2025117395Skan		  (match_operand:V2SI 2 "gpc_reg_operand" "r")))
2026117395Skan   (clobber (reg:SI SPEFSCR_REGNO))]
2027117395Skan  "TARGET_SPE"
2028117395Skan  "evdivws %0,%1,%2"
2029132718Skan  [(set_attr "type" "vecdiv")
2030117395Skan   (set_attr  "length" "4")])
2031117395Skan
2032117395Skan(define_insn "spe_evdivwu"
2033117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2034117395Skan        (udiv:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
2035117395Skan		   (match_operand:V2SI 2 "gpc_reg_operand" "r")))
2036117395Skan      (clobber (reg:SI SPEFSCR_REGNO))]
2037117395Skan  "TARGET_SPE"
2038117395Skan  "evdivwu %0,%1,%2"
2039132718Skan  [(set_attr "type" "vecdiv")
2040117395Skan   (set_attr  "length" "4")])
2041117395Skan
2042117395Skan(define_insn "spe_evsplatfi"
2043117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2044117395Skan        (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 684))]
2045117395Skan  "TARGET_SPE"
2046117395Skan  "evsplatfi %0,%1"
2047117395Skan  [(set_attr "type" "vecperm")
2048117395Skan   (set_attr  "length" "4")])
2049117395Skan
2050117395Skan(define_insn "spe_evsplati"
2051117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2052117395Skan        (unspec:V2SI [(match_operand:QI 1 "immediate_operand" "i")] 685))]
2053117395Skan  "TARGET_SPE"
2054117395Skan  "evsplati %0,%1"
2055117395Skan  [(set_attr "type" "vecperm")
2056117395Skan   (set_attr  "length" "4")])
2057117395Skan
2058117395Skan(define_insn "spe_evstdd"
2059117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2060117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2061117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2062117395Skan   (unspec [(const_int 0)] 686)]
2063132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2064132718Skan  "evstdd %2,%1*8(%0)"
2065117395Skan  [(set_attr "type" "vecstore")
2066117395Skan   (set_attr  "length" "4")])
2067117395Skan
2068117395Skan(define_insn "spe_evstddx"
2069117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2070117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2071117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2072117395Skan   (unspec [(const_int 0)] 687)]
2073117395Skan  "TARGET_SPE"
2074117395Skan  "evstddx %2,%0,%1"
2075117395Skan  [(set_attr "type" "vecstore")
2076117395Skan   (set_attr  "length" "4")])
2077117395Skan
2078117395Skan(define_insn "spe_evstdh"
2079117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2080117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2081117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2082117395Skan   (unspec [(const_int 0)] 688)]
2083132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2084132718Skan  "evstdh %2,%1*8(%0)"
2085117395Skan  [(set_attr "type" "vecstore")
2086117395Skan   (set_attr  "length" "4")])
2087117395Skan
2088117395Skan(define_insn "spe_evstdhx"
2089117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2090117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2091117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2092117395Skan   (unspec [(const_int 0)] 689)]
2093117395Skan  "TARGET_SPE"
2094117395Skan  "evstdhx %2,%0,%1"
2095117395Skan  [(set_attr "type" "vecstore")
2096117395Skan   (set_attr  "length" "4")])
2097117395Skan
2098117395Skan(define_insn "spe_evstdw"
2099117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2100117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2101117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2102117395Skan   (unspec [(const_int 0)] 690)]
2103132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2104132718Skan  "evstdw %2,%1*8(%0)"
2105117395Skan  [(set_attr "type" "vecstore")
2106117395Skan   (set_attr  "length" "4")])
2107117395Skan
2108117395Skan(define_insn "spe_evstdwx"
2109117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2110117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2111117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2112117395Skan   (unspec [(const_int 0)] 691)]
2113117395Skan  "TARGET_SPE"
2114117395Skan  "evstdwx %2,%0,%1"
2115117395Skan  [(set_attr "type" "vecstore")
2116117395Skan   (set_attr  "length" "4")])
2117117395Skan
2118117395Skan(define_insn "spe_evstwhe"
2119117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2120117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2121117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2122117395Skan   (unspec [(const_int 0)] 692)]
2123132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2124132718Skan  "evstwhe %2,%1*4(%0)"
2125117395Skan  [(set_attr "type" "vecstore")
2126117395Skan   (set_attr  "length" "4")])
2127117395Skan
2128117395Skan(define_insn "spe_evstwhex"
2129117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2130117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2131117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2132117395Skan   (unspec [(const_int 0)] 693)]
2133117395Skan  "TARGET_SPE"
2134117395Skan  "evstwhex %2,%0,%1"
2135117395Skan  [(set_attr "type" "vecstore")
2136117395Skan   (set_attr  "length" "4")])
2137117395Skan
2138117395Skan(define_insn "spe_evstwho"
2139117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2140117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2141117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2142117395Skan   (unspec [(const_int 0)] 694)]
2143132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2144132718Skan  "evstwho %2,%1*4(%0)"
2145117395Skan  [(set_attr "type" "vecstore")
2146117395Skan   (set_attr  "length" "4")])
2147117395Skan
2148117395Skan(define_insn "spe_evstwhox"
2149117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2150117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2151117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2152117395Skan   (unspec [(const_int 0)] 695)]
2153117395Skan  "TARGET_SPE"
2154117395Skan  "evstwhox %2,%0,%1"
2155117395Skan  [(set_attr "type" "vecstore")
2156117395Skan   (set_attr  "length" "4")])
2157117395Skan
2158117395Skan(define_insn "spe_evstwwe"
2159117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2160117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2161117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2162117395Skan   (unspec [(const_int 0)] 696)]
2163132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2164132718Skan  "evstwwe %2,%1*4(%0)"
2165117395Skan  [(set_attr "type" "vecstore")
2166117395Skan   (set_attr  "length" "4")])
2167117395Skan
2168117395Skan(define_insn "spe_evstwwex"
2169117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2170117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2171117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2172117395Skan   (unspec [(const_int 0)] 697)]
2173117395Skan  "TARGET_SPE"
2174117395Skan  "evstwwex %2,%0,%1"
2175117395Skan  [(set_attr "type" "vecstore")
2176117395Skan   (set_attr  "length" "4")])
2177117395Skan
2178117395Skan(define_insn "spe_evstwwo"
2179117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2180117395Skan			   (match_operand:QI 1 "immediate_operand" "i")))
2181117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2182117395Skan   (unspec [(const_int 0)] 698)]
2183132718Skan  "TARGET_SPE && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 31"
2184132718Skan  "evstwwo %2,%1*4(%0)"
2185117395Skan  [(set_attr "type" "vecstore")
2186117395Skan   (set_attr  "length" "4")])
2187117395Skan
2188117395Skan(define_insn "spe_evstwwox"
2189117395Skan  [(set (mem:V2SI (plus:SI (match_operand:SI 0 "gpc_reg_operand" "b")
2190117395Skan			   (match_operand:SI 1 "gpc_reg_operand" "r")))
2191117395Skan	(match_operand:V2SI 2 "gpc_reg_operand" "r"))
2192117395Skan   (unspec [(const_int 0)] 699)]
2193117395Skan  "TARGET_SPE"
2194117395Skan  "evstwwox %2,%0,%1"
2195117395Skan  [(set_attr "type" "vecstore")
2196117395Skan   (set_attr  "length" "4")])
2197117395Skan
2198169689Skan;; Double-precision floating point instructions.
2199169689Skan
2200169689Skan;; FIXME: Add o=r option.
2201169689Skan(define_insn "*frob_df_di"
2202169689Skan  [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r")
2203169689Skan        (subreg:DF (match_operand:DI 1 "input_operand" "r,m") 0))]
2204169689Skan  "TARGET_E500_DOUBLE"
2205169689Skan  "@
2206169689Skan   evmergelo %0,%1,%L1
2207169689Skan   evldd%X1 %0,%y1")
2208169689Skan
2209169689Skan(define_insn "*frob_di_df"
2210169689Skan  [(set (match_operand:DI 0 "nonimmediate_operand" "=&r")
2211169689Skan        (subreg:DI (match_operand:DF 1 "input_operand" "r") 0))]
2212169689Skan  "TARGET_E500_DOUBLE"
2213169689Skan  "evmergehi %0,%1,%1\;mr %L0,%1"
2214169689Skan  [(set_attr "length" "8")])
2215169689Skan
2216169689Skan(define_insn "*frob_di_df_2"
2217169689Skan  [(set (subreg:DF (match_operand:DI 0 "register_operand" "=&r,r") 0)
2218169689Skan	(match_operand:DF 1 "input_operand" "r,m"))]
2219169689Skan  "TARGET_E500_DOUBLE"
2220169689Skan  "*
2221169689Skan{
2222169689Skan  switch (which_alternative)
2223169689Skan    {
2224169689Skan    default: 
2225169689Skan      gcc_unreachable ();
2226169689Skan    case 0:
2227169689Skan      return \"evmergehi %0,%1,%1\;mr %L0,%1\";
2228169689Skan    case 1:
2229169689Skan      /* If the address is not offsettable we need to load the whole
2230169689Skan	 doubleword into a 64-bit register and then copy the high word
2231169689Skan	 to form the correct output layout.  */
2232169689Skan      if (!offsettable_nonstrict_memref_p (operands[1]))
2233169689Skan	return \"evldd%X1 %L0,%y1\;evmergehi %0,%L0,%L0\";
2234169689Skan      /* If the low-address word is used in the address, we must load
2235169689Skan	it last.  Otherwise, load it first.  Note that we cannot have
2236169689Skan	auto-increment in that case since the address register is
2237169689Skan	known to be dead.  */
2238169689Skan      if (refers_to_regno_p (REGNO (operands[0]), REGNO (operands[0]) + 1,
2239169689Skan			     operands[1], 0))
2240169689Skan	return \"{l|lwz} %L0,%L1\;{l|lwz} %0,%1\";
2241169689Skan      else
2242169689Skan        return \"{l%U1%X1|lwz%U1%X1} %0,%1\;{l|lwz} %L0,%L1\";
2243169689Skan    }
2244169689Skan}"
2245169689Skan  [(set_attr "length" "8,8")])
2246169689Skan
2247169689Skan(define_insn "*mov_si<mode>_e500_subreg0"
2248169689Skan  [(set (subreg:SI (match_operand:SPE64 0 "register_operand" "+r,&r") 0)
2249169689Skan	(match_operand:SI 1 "input_operand" "r,m"))]
2250169689Skan  "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)"
2251169689Skan  "@
2252169689Skan   evmergelo %0,%1,%0
2253169689Skan   evmergelohi %0,%0,%0\;{l%U1%X1|lwz%U1%X1} %0,%1\;evmergelohi %0,%0,%0")
2254169689Skan
2255169689Skan;; ??? Could use evstwwe for memory stores in some cases, depending on
2256169689Skan;; the offset.
2257169689Skan(define_insn "*mov_si<mode>_e500_subreg0_2"
2258169689Skan  [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "+r,m")
2259169689Skan	(subreg:SI (match_operand:SPE64 1 "register_operand" "+r,&r") 0))]
2260169689Skan  "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)"
2261169689Skan  "@
2262169689Skan   evmergehi %0,%0,%1
2263169689Skan   evmergelohi %1,%1,%1\;{st%U0%X0|stw%U0%X0} %1,%0")
2264169689Skan
2265169689Skan(define_insn "*mov_si<mode>_e500_subreg4"
2266169689Skan  [(set (subreg:SI (match_operand:SPE64 0 "register_operand" "+r,r") 4)
2267169689Skan	(match_operand:SI 1 "input_operand" "r,m"))]
2268169689Skan  "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)"
2269169689Skan  "@
2270169689Skan   mr %0,%1
2271169689Skan   {l%U1%X1|lwz%U1%X1} %0,%1")
2272169689Skan
2273169689Skan(define_insn "*mov_si<mode>_e500_subreg4_2"
2274169689Skan  [(set (match_operand:SI 0 "rs6000_nonimmediate_operand" "+r,m")
2275169689Skan	(subreg:SI (match_operand:SPE64 1 "register_operand" "r,r") 4))]
2276169689Skan  "(TARGET_E500_DOUBLE && <MODE>mode == DFmode) || (TARGET_SPE && <MODE>mode != DFmode)"
2277169689Skan  "@
2278169689Skan   mr %0,%1
2279169689Skan   {st%U0%X0|stw%U0%X0} %1,%0")
2280169689Skan
2281169689Skan;; FIXME: Allow r=CONST0.
2282169689Skan(define_insn "*movdf_e500_double"
2283169689Skan  [(set (match_operand:DF 0 "rs6000_nonimmediate_operand" "=r,r,m")
2284169689Skan	(match_operand:DF 1 "input_operand" "r,m,r"))]
2285169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE
2286169689Skan    && (gpc_reg_operand (operands[0], DFmode)
2287169689Skan        || gpc_reg_operand (operands[1], DFmode))"
2288169689Skan  "*
2289169689Skan {
2290169689Skan   switch (which_alternative)
2291169689Skan     {
2292169689Skan     case 0:
2293169689Skan       return \"evor %0,%1,%1\";
2294169689Skan     case 1:
2295169689Skan       return \"evldd%X1 %0,%y1\";
2296169689Skan     case 2:
2297169689Skan       return \"evstdd%X0 %1,%y0\";
2298169689Skan     default:
2299169689Skan       gcc_unreachable ();
2300169689Skan     }
2301169689Skan }"
2302169689Skan  [(set_attr "type" "*,vecload,vecstore")
2303169689Skan   (set_attr "length" "*,*,*")])
2304169689Skan
2305169689Skan(define_insn "spe_truncdfsf2"
2306169689Skan  [(set (match_operand:SF 0 "gpc_reg_operand" "=r")
2307169689Skan	(float_truncate:SF (match_operand:DF 1 "gpc_reg_operand" "r")))]
2308169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2309169689Skan  "efscfd %0,%1")
2310169689Skan
2311169689Skan(define_insn "spe_absdf2"
2312169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2313169689Skan	(abs:DF (match_operand:DF 1 "gpc_reg_operand" "r")))]
2314169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2315169689Skan  "efdabs %0,%1")
2316169689Skan
2317169689Skan(define_insn "spe_nabsdf2"
2318169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2319169689Skan	(neg:DF (abs:DF (match_operand:DF 1 "gpc_reg_operand" "r"))))]
2320169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2321169689Skan  "efdnabs %0,%1")
2322169689Skan
2323169689Skan(define_insn "spe_negdf2"
2324169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2325169689Skan	(neg:DF (match_operand:DF 1 "gpc_reg_operand" "r")))]
2326169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2327169689Skan  "efdneg %0,%1")
2328169689Skan
2329169689Skan(define_insn "spe_adddf3"
2330169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2331169689Skan	(plus:DF (match_operand:DF 1 "gpc_reg_operand" "r")
2332169689Skan		 (match_operand:DF 2 "gpc_reg_operand" "r")))]
2333169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2334169689Skan  "efdadd %0,%1,%2")
2335169689Skan
2336169689Skan(define_insn "spe_subdf3"
2337169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2338169689Skan	(minus:DF (match_operand:DF 1 "gpc_reg_operand" "r")
2339169689Skan		  (match_operand:DF 2 "gpc_reg_operand" "r")))]
2340169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2341169689Skan  "efdsub %0,%1,%2")
2342169689Skan
2343169689Skan(define_insn "spe_muldf3"
2344169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2345169689Skan	(mult:DF (match_operand:DF 1 "gpc_reg_operand" "r")
2346169689Skan		 (match_operand:DF 2 "gpc_reg_operand" "r")))]
2347169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2348169689Skan  "efdmul %0,%1,%2")
2349169689Skan
2350169689Skan(define_insn "spe_divdf3"
2351169689Skan  [(set (match_operand:DF 0 "gpc_reg_operand" "=r")
2352169689Skan	(div:DF (match_operand:DF 1 "gpc_reg_operand" "r")
2353169689Skan		(match_operand:DF 2 "gpc_reg_operand" "r")))]
2354169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE"
2355169689Skan  "efddiv %0,%1,%2")
2356169689Skan
2357117395Skan;; Vector move instructions.
2358117395Skan
2359117395Skan(define_expand "movv2si"
2360117395Skan  [(set (match_operand:V2SI 0 "nonimmediate_operand" "")
2361117395Skan	(match_operand:V2SI 1 "any_operand" ""))]
2362117395Skan  "TARGET_SPE"
2363117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V2SImode); DONE; }")
2364117395Skan
2365117395Skan(define_insn "*movv2si_internal"
2366132718Skan  [(set (match_operand:V2SI 0 "nonimmediate_operand" "=m,r,r,r")
2367132718Skan	(match_operand:V2SI 1 "input_operand" "r,m,r,W"))]
2368132718Skan  "TARGET_SPE
2369132718Skan   && (gpc_reg_operand (operands[0], V2SImode)
2370132718Skan       || gpc_reg_operand (operands[1], V2SImode))"
2371132718Skan  "*
2372132718Skan{
2373132718Skan  switch (which_alternative)
2374132718Skan    {
2375132718Skan    case 0: return \"evstdd%X0 %1,%y0\";
2376132718Skan    case 1: return \"evldd%X1 %0,%y1\";
2377132718Skan    case 2: return \"evor %0,%1,%1\";
2378132718Skan    case 3: return output_vec_const_move (operands);
2379169689Skan    default: gcc_unreachable ();
2380132718Skan    }
2381132718Skan}"
2382132718Skan  [(set_attr "type" "vecload,vecstore,*,*")
2383132718Skan   (set_attr "length" "*,*,*,12")])
2384117395Skan
2385132718Skan(define_split
2386132718Skan  [(set (match_operand:V2SI 0 "register_operand" "")
2387132718Skan	(match_operand:V2SI 1 "zero_constant" ""))]
2388132718Skan  "TARGET_SPE && reload_completed"
2389132718Skan  [(set (match_dup 0)
2390132718Skan	(xor:V2SI (match_dup 0) (match_dup 0)))]
2391132718Skan  "")
2392132718Skan
2393117395Skan(define_expand "movv1di"
2394117395Skan  [(set (match_operand:V1DI 0 "nonimmediate_operand" "")
2395117395Skan	(match_operand:V1DI 1 "any_operand" ""))]
2396117395Skan  "TARGET_SPE"
2397117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V1DImode); DONE; }")
2398117395Skan
2399117395Skan(define_insn "*movv1di_internal"
2400132718Skan  [(set (match_operand:V1DI 0 "nonimmediate_operand" "=m,r,r,r")
2401132718Skan	(match_operand:V1DI 1 "input_operand" "r,m,r,W"))]
2402132718Skan  "TARGET_SPE
2403132718Skan   && (gpc_reg_operand (operands[0], V1DImode)
2404132718Skan       || gpc_reg_operand (operands[1], V1DImode))"
2405117395Skan  "@
2406117395Skan   evstdd%X0 %1,%y0
2407117395Skan   evldd%X1 %0,%y1
2408132718Skan   evor %0,%1,%1
2409132718Skan   evxor %0,%0,%0"
2410132718Skan  [(set_attr "type" "vecload,vecstore,*,*")
2411132718Skan   (set_attr "length" "*,*,*,*")])
2412117395Skan
2413117395Skan(define_expand "movv4hi"
2414117395Skan  [(set (match_operand:V4HI 0 "nonimmediate_operand" "")
2415117395Skan	(match_operand:V4HI 1 "any_operand" ""))]
2416117395Skan  "TARGET_SPE"
2417117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V4HImode); DONE; }")
2418117395Skan
2419117395Skan(define_insn "*movv4hi_internal"
2420169689Skan  [(set (match_operand:V4HI 0 "nonimmediate_operand" "=m,r,r,r")
2421169689Skan	(match_operand:V4HI 1 "input_operand" "r,m,r,W"))]
2422132718Skan  "TARGET_SPE
2423132718Skan   && (gpc_reg_operand (operands[0], V4HImode)
2424132718Skan       || gpc_reg_operand (operands[1], V4HImode))"
2425117395Skan  "@
2426117395Skan   evstdd%X0 %1,%y0
2427117395Skan   evldd%X1 %0,%y1
2428169689Skan   evor %0,%1,%1
2429169689Skan   evxor %0,%0,%0"
2430117395Skan  [(set_attr "type" "vecload")])
2431117395Skan
2432117395Skan(define_expand "movv2sf"
2433117395Skan  [(set (match_operand:V2SF 0 "nonimmediate_operand" "")
2434117395Skan	(match_operand:V2SF 1 "any_operand" ""))]
2435117395Skan  "TARGET_SPE"
2436117395Skan  "{ rs6000_emit_move (operands[0], operands[1], V2SFmode); DONE; }")
2437117395Skan
2438117395Skan(define_insn "*movv2sf_internal"
2439132718Skan  [(set (match_operand:V2SF 0 "nonimmediate_operand" "=m,r,r,r")
2440132718Skan	(match_operand:V2SF 1 "input_operand" "r,m,r,W"))]
2441132718Skan  "TARGET_SPE
2442132718Skan   && (gpc_reg_operand (operands[0], V2SFmode)
2443132718Skan       || gpc_reg_operand (operands[1], V2SFmode))"
2444117395Skan  "@
2445117395Skan   evstdd%X0 %1,%y0
2446117395Skan   evldd%X1 %0,%y1
2447132718Skan   evor %0,%1,%1
2448132718Skan   evxor %0,%0,%0"
2449132718Skan  [(set_attr "type" "vecload,vecstore,*,*")
2450132718Skan   (set_attr "length" "*,*,*,*")])
2451117395Skan
2452132718Skan;; End of vector move instructions.
2453132718Skan
2454117395Skan(define_insn "spe_evmwhssfaa"
2455117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2456117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2457117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 702))
2458117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2459132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2460117395Skan  "TARGET_SPE"
2461117395Skan  "evmwhssfaa %0,%1,%2"
2462117395Skan  [(set_attr "type" "veccomplex")
2463117395Skan   (set_attr  "length" "4")])
2464117395Skan
2465117395Skan(define_insn "spe_evmwhssmaa"
2466117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2467117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2468117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 703))
2469117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2470132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2471117395Skan  "TARGET_SPE"
2472117395Skan  "evmwhssmaa %0,%1,%2"
2473117395Skan  [(set_attr "type" "veccomplex")
2474117395Skan   (set_attr  "length" "4")])
2475117395Skan
2476117395Skan(define_insn "spe_evmwhsmfaa"
2477117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2478117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2479117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 704))
2480132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2481117395Skan  "TARGET_SPE"
2482117395Skan  "evmwhsmfaa %0,%1,%2"
2483117395Skan  [(set_attr "type" "veccomplex")
2484117395Skan   (set_attr  "length" "4")])
2485117395Skan
2486117395Skan(define_insn "spe_evmwhsmiaa"
2487117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2488117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2489117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 705))
2490132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2491117395Skan  "TARGET_SPE"
2492117395Skan  "evmwhsmiaa %0,%1,%2"
2493117395Skan  [(set_attr "type" "veccomplex")
2494117395Skan   (set_attr  "length" "4")])
2495117395Skan
2496117395Skan(define_insn "spe_evmwhusiaa"
2497117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2498117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2499117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 706))
2500117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2501132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2502117395Skan  "TARGET_SPE"
2503117395Skan  "evmwhusiaa %0,%1,%2"
2504117395Skan  [(set_attr "type" "veccomplex")
2505117395Skan   (set_attr  "length" "4")])
2506117395Skan
2507117395Skan(define_insn "spe_evmwhumiaa"
2508117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2509117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2510117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 707))
2511132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2512117395Skan  "TARGET_SPE"
2513117395Skan  "evmwhumiaa %0,%1,%2"
2514117395Skan  [(set_attr "type" "veccomplex")
2515117395Skan   (set_attr  "length" "4")])
2516117395Skan
2517117395Skan(define_insn "spe_evmwhssfan"
2518117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2519117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2520117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 708))
2521117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2522132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2523117395Skan  "TARGET_SPE"
2524117395Skan  "evmwhssfan %0,%1,%2"
2525117395Skan  [(set_attr "type" "veccomplex")
2526117395Skan   (set_attr  "length" "4")])
2527117395Skan
2528117395Skan(define_insn "spe_evmwhssian"
2529117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2530117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2531117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 709))
2532117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2533132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2534117395Skan  "TARGET_SPE"
2535117395Skan  "evmwhssian %0,%1,%2"
2536117395Skan  [(set_attr "type" "veccomplex")
2537117395Skan   (set_attr  "length" "4")])
2538117395Skan
2539117395Skan(define_insn "spe_evmwhsmfan"
2540117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2541117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2542117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 710))
2543132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2544117395Skan  "TARGET_SPE"
2545117395Skan  "evmwhsmfan %0,%1,%2"
2546117395Skan  [(set_attr "type" "veccomplex")
2547117395Skan   (set_attr  "length" "4")])
2548117395Skan
2549117395Skan(define_insn "spe_evmwhsmian"
2550117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2551117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2552117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 711))
2553132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2554117395Skan  "TARGET_SPE"
2555117395Skan  "evmwhsmian %0,%1,%2"
2556117395Skan  [(set_attr "type" "veccomplex")
2557117395Skan   (set_attr  "length" "4")])
2558117395Skan
2559117395Skan(define_insn "spe_evmwhumian"
2560117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2561117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2562117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 713))
2563132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2564117395Skan  "TARGET_SPE"
2565117395Skan  "evmwhumian %0,%1,%2"
2566117395Skan  [(set_attr "type" "veccomplex")
2567117395Skan   (set_attr  "length" "4")])
2568117395Skan
2569117395Skan(define_insn "spe_evmwhgssfaa"
2570117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2571117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2572117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 714))
2573117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2574132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2575117395Skan  "TARGET_SPE"
2576117395Skan  "evmwhgssfaa %0,%1,%2"
2577117395Skan  [(set_attr "type" "veccomplex")
2578117395Skan   (set_attr  "length" "4")])
2579117395Skan
2580117395Skan(define_insn "spe_evmwhgsmfaa"
2581117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2582117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2583117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 715))
2584132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2585117395Skan  "TARGET_SPE"
2586117395Skan  "evmwhgsmfaa %0,%1,%2"
2587117395Skan  [(set_attr "type" "veccomplex")
2588117395Skan   (set_attr  "length" "4")])
2589117395Skan
2590117395Skan(define_insn "spe_evmwhgsmiaa"
2591117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2592117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2593117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 716))
2594132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2595117395Skan  "TARGET_SPE"
2596117395Skan  "evmwhgsmiaa %0,%1,%2"
2597117395Skan  [(set_attr "type" "veccomplex")
2598117395Skan   (set_attr  "length" "4")])
2599117395Skan
2600117395Skan(define_insn "spe_evmwhgumiaa"
2601117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2602117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2603117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 717))
2604132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2605117395Skan  "TARGET_SPE"
2606117395Skan  "evmwhgumiaa %0,%1,%2"
2607117395Skan  [(set_attr "type" "veccomplex")
2608117395Skan   (set_attr  "length" "4")])
2609117395Skan
2610117395Skan(define_insn "spe_evmwhgssfan"
2611117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2612117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2613117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 718))
2614117395Skan   (clobber (reg:SI SPEFSCR_REGNO))
2615132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2616117395Skan  "TARGET_SPE"
2617117395Skan  "evmwhgssfan %0,%1,%2"
2618117395Skan  [(set_attr "type" "veccomplex")
2619117395Skan   (set_attr  "length" "4")])
2620117395Skan
2621117395Skan(define_insn "spe_evmwhgsmfan"
2622117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2623117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2624117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 719))
2625132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2626117395Skan  "TARGET_SPE"
2627117395Skan  "evmwhgsmfan %0,%1,%2"
2628117395Skan  [(set_attr "type" "veccomplex")
2629117395Skan   (set_attr  "length" "4")])
2630117395Skan
2631117395Skan(define_insn "spe_evmwhgsmian"
2632117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2633117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2634117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 720))
2635132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2636117395Skan  "TARGET_SPE"
2637117395Skan  "evmwhgsmian %0,%1,%2"
2638117395Skan  [(set_attr "type" "veccomplex")
2639117395Skan   (set_attr  "length" "4")])
2640117395Skan
2641117395Skan(define_insn "spe_evmwhgumian"
2642117395Skan  [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
2643117395Skan        (unspec:V2SI [(match_operand:V2SI 1 "gpc_reg_operand" "r")
2644117395Skan                      (match_operand:V2SI 2 "gpc_reg_operand" "r")] 721))
2645132718Skan   (set (reg:V2SI SPE_ACC_REGNO) (unspec:V2SI  [(const_int 0)] 0))]
2646117395Skan  "TARGET_SPE"
2647117395Skan  "evmwhgumian %0,%1,%2"
2648117395Skan  [(set_attr "type" "veccomplex")
2649117395Skan   (set_attr  "length" "4")])
2650117395Skan
2651117395Skan(define_insn "spe_mtspefscr"
2652117395Skan  [(set (reg:SI SPEFSCR_REGNO)
2653117395Skan	(unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
2654117395Skan			    722))]
2655117395Skan  "TARGET_SPE"
2656117395Skan  "mtspefscr %0"
2657117395Skan  [(set_attr "type" "vecsimple")])
2658117395Skan
2659117395Skan(define_insn "spe_mfspefscr"
2660117395Skan  [(set (match_operand:SI 0 "register_operand" "=r")
2661117395Skan	(unspec_volatile:SI [(reg:SI SPEFSCR_REGNO)] 723))]
2662117395Skan  "TARGET_SPE"
2663117395Skan  "mfspefscr %0"
2664117395Skan  [(set_attr "type" "vecsimple")])
2665117395Skan
2666132718Skan;; FP comparison stuff.
2667132718Skan
2668132718Skan;; Flip the GT bit.
2669169689Skan(define_insn "e500_flip_gt_bit"
2670132718Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2671169689Skan	(unspec:CCFP
2672169689Skan	 [(match_operand:CCFP 1 "cc_reg_operand" "y")] 999))]
2673132718Skan  "!TARGET_FPRS && TARGET_HARD_FLOAT"
2674132718Skan  "*
2675132718Skan{
2676169689Skan  return output_e500_flip_gt_bit (operands[0], operands[1]);
2677132718Skan}"
2678132718Skan  [(set_attr "type" "cr_logical")])
2679132718Skan
2680117395Skan;; MPC8540 single-precision FP instructions on GPRs.
2681117395Skan;; We have 2 variants for each.  One for IEEE compliant math and one
2682117395Skan;; for non IEEE compliant math.
2683117395Skan
2684117395Skan(define_insn "cmpsfeq_gpr"
2685117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2686169689Skan	(unspec:CCFP
2687169689Skan	 [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2688169689Skan			(match_operand:SF 2 "gpc_reg_operand" "r"))]
2689169689Skan	 1000))]
2690117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2691117395Skan  "efscmpeq %0,%1,%2"
2692132718Skan  [(set_attr "type" "veccmp")])
2693117395Skan
2694117395Skan(define_insn "tstsfeq_gpr"
2695117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2696169689Skan	(unspec:CCFP
2697169689Skan	 [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2698169689Skan			(match_operand:SF 2 "gpc_reg_operand" "r"))]
2699169689Skan	 1001))]
2700117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2701117395Skan  "efststeq %0,%1,%2"
2702132718Skan  [(set_attr "type" "veccmpsimple")])
2703117395Skan
2704117395Skan(define_insn "cmpsfgt_gpr"
2705117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2706169689Skan	(unspec:CCFP
2707169689Skan	 [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2708169689Skan			(match_operand:SF 2 "gpc_reg_operand" "r"))]
2709169689Skan	 1002))]
2710117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2711117395Skan  "efscmpgt %0,%1,%2"
2712132718Skan  [(set_attr "type" "veccmp")])
2713117395Skan
2714117395Skan(define_insn "tstsfgt_gpr"
2715117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2716169689Skan	(unspec:CCFP
2717169689Skan	 [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2718169689Skan			(match_operand:SF 2 "gpc_reg_operand" "r"))]
2719169689Skan	 1003))]
2720117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2721117395Skan  "efststgt %0,%1,%2"
2722132718Skan  [(set_attr "type" "veccmpsimple")])
2723117395Skan
2724117395Skan(define_insn "cmpsflt_gpr"
2725117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2726169689Skan	(unspec:CCFP
2727169689Skan	 [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2728169689Skan			(match_operand:SF 2 "gpc_reg_operand" "r"))]
2729169689Skan	 1004))]
2730117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && !flag_unsafe_math_optimizations"
2731117395Skan  "efscmplt %0,%1,%2"
2732132718Skan  [(set_attr "type" "veccmp")])
2733117395Skan
2734117395Skan(define_insn "tstsflt_gpr"
2735117395Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2736169689Skan	(unspec:CCFP
2737169689Skan	 [(compare:CCFP (match_operand:SF 1 "gpc_reg_operand" "r")
2738169689Skan			(match_operand:SF 2 "gpc_reg_operand" "r"))]
2739169689Skan	 1005))]
2740117395Skan  "TARGET_HARD_FLOAT && !TARGET_FPRS && flag_unsafe_math_optimizations"
2741117395Skan  "efststlt %0,%1,%2"
2742132718Skan  [(set_attr "type" "veccmpsimple")])
2743169689Skan
2744169689Skan;; Same thing, but for double-precision.
2745169689Skan
2746169689Skan(define_insn "cmpdfeq_gpr"
2747169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2748169689Skan	(unspec:CCFP
2749169689Skan	 [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r")
2750169689Skan			(match_operand:DF 2 "gpc_reg_operand" "r"))]
2751169689Skan	 CMPDFEQ_GPR))]
2752169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && !flag_unsafe_math_optimizations"
2753169689Skan  "efdcmpeq %0,%1,%2"
2754169689Skan  [(set_attr "type" "veccmp")])
2755169689Skan
2756169689Skan(define_insn "tstdfeq_gpr"
2757169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2758169689Skan	(unspec:CCFP
2759169689Skan	 [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r")
2760169689Skan			(match_operand:DF 2 "gpc_reg_operand" "r"))]
2761169689Skan	 TSTDFEQ_GPR))]
2762169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && flag_unsafe_math_optimizations"
2763169689Skan  "efdtsteq %0,%1,%2"
2764169689Skan  [(set_attr "type" "veccmpsimple")])
2765169689Skan
2766169689Skan(define_insn "cmpdfgt_gpr"
2767169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2768169689Skan	(unspec:CCFP
2769169689Skan	 [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r")
2770169689Skan			(match_operand:DF 2 "gpc_reg_operand" "r"))]
2771169689Skan	 CMPDFGT_GPR))]
2772169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && !flag_unsafe_math_optimizations"
2773169689Skan  "efdcmpgt %0,%1,%2"
2774169689Skan  [(set_attr "type" "veccmp")])
2775169689Skan
2776169689Skan(define_insn "tstdfgt_gpr"
2777169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2778169689Skan	(unspec:CCFP
2779169689Skan	 [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r")
2780169689Skan			(match_operand:DF 2 "gpc_reg_operand" "r"))]
2781169689Skan	 TSTDFGT_GPR))]
2782169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && flag_unsafe_math_optimizations"
2783169689Skan  "efdtstgt %0,%1,%2"
2784169689Skan  [(set_attr "type" "veccmpsimple")])
2785169689Skan
2786169689Skan(define_insn "cmpdflt_gpr"
2787169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2788169689Skan	(unspec:CCFP
2789169689Skan	 [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r")
2790169689Skan			(match_operand:DF 2 "gpc_reg_operand" "r"))]
2791169689Skan	 CMPDFLT_GPR))]
2792169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && !flag_unsafe_math_optimizations"
2793169689Skan  "efdcmplt %0,%1,%2"
2794169689Skan  [(set_attr "type" "veccmp")])
2795169689Skan
2796169689Skan(define_insn "tstdflt_gpr"
2797169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2798169689Skan	(unspec:CCFP
2799169689Skan	 [(compare:CCFP (match_operand:DF 1 "gpc_reg_operand" "r")
2800169689Skan			(match_operand:DF 2 "gpc_reg_operand" "r"))]
2801169689Skan	 TSTDFLT_GPR))]
2802169689Skan  "TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && flag_unsafe_math_optimizations"
2803169689Skan  "efdtstlt %0,%1,%2"
2804169689Skan  [(set_attr "type" "veccmpsimple")])
2805169689Skan
2806169689Skan;; Like cceq_ior_compare, but compare the GT bits.
2807169689Skan(define_insn "e500_cr_ior_compare"
2808169689Skan  [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
2809169689Skan	(unspec:CCFP [(match_operand 1 "cc_reg_operand" "y")
2810169689Skan		      (match_operand 2 "cc_reg_operand" "y")]
2811169689Skan		     E500_CR_IOR_COMPARE))]
2812169689Skan  "TARGET_E500"
2813169689Skan  "cror 4*%0+gt,4*%1+gt,4*%2+gt"
2814169689Skan  [(set_attr "type" "cr_logical")])
2815