1 ;; Copyright (C) 2007 Free Software Foundation, Inc.
3 ;; This file is part of GCC.
5 ;; GCC is free software; you can redistribute it and/or modify
6 ;; it under the terms of the GNU General Public License as published by
7 ;; the Free Software Foundation; either version 3, or (at your option)
10 ;; GCC is distributed in the hope that it will be useful,
11 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ;; GNU General Public License for more details.
15 ;; You should have received a copy of the GNU General Public License
16 ;; along with GCC; see the file COPYING3. If not see
17 ;; <http://www.gnu.org/licenses/>.
19 ; MIPS DSP ASE REV 2 Revision 0.02 11/24/2006
21 (define_c_enum "unspec" [
48 UNSPEC_PRECR_SRA_R_PH_W
73 (define_insn "mips_absq_s_qb"
75 [(set (match_operand:V4QI 0 "register_operand" "=d")
76 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")]
78 (set (reg:CCDSP CCDSP_OU_REGNUM)
79 (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
82 [(set_attr "type" "arith")
83 (set_attr "mode" "SI")])
85 (define_insn "mips_addu_ph"
87 [(set (match_operand:V2HI 0 "register_operand" "=d")
88 (plus:V2HI (match_operand:V2HI 1 "reg_or_0_operand" "dYG")
89 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")))
90 (set (reg:CCDSP CCDSP_OU_REGNUM)
91 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
94 [(set_attr "type" "arith")
95 (set_attr "mode" "SI")])
97 (define_insn "mips_addu_s_ph"
99 [(set (match_operand:V2HI 0 "register_operand" "=d")
100 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
101 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
103 (set (reg:CCDSP CCDSP_OU_REGNUM)
104 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
106 "addu_s.ph\t%0,%z1,%z2"
107 [(set_attr "type" "arith")
108 (set_attr "mode" "SI")])
110 (define_insn "mips_adduh_qb"
111 [(set (match_operand:V4QI 0 "register_operand" "=d")
112 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
113 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
116 "adduh.qb\t%0,%z1,%z2"
117 [(set_attr "type" "arith")
118 (set_attr "mode" "SI")])
120 (define_insn "mips_adduh_r_qb"
121 [(set (match_operand:V4QI 0 "register_operand" "=d")
122 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
123 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
126 "adduh_r.qb\t%0,%z1,%z2"
127 [(set_attr "type" "arith")
128 (set_attr "mode" "SI")])
130 (define_insn "mips_append"
131 [(set (match_operand:SI 0 "register_operand" "=d")
132 (unspec:SI [(match_operand:SI 1 "register_operand" "0")
133 (match_operand:SI 2 "reg_or_0_operand" "dJ")
134 (match_operand:SI 3 "const_int_operand" "n")]
138 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
139 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
140 return "append\t%0,%z2,%3";
142 [(set_attr "type" "arith")
143 (set_attr "mode" "SI")])
145 (define_insn "mips_balign"
146 [(set (match_operand:SI 0 "register_operand" "=d")
147 (unspec:SI [(match_operand:SI 1 "register_operand" "0")
148 (match_operand:SI 2 "reg_or_0_operand" "dJ")
149 (match_operand:SI 3 "const_int_operand" "n")]
153 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 3)
154 operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
155 return "balign\t%0,%z2,%3";
157 [(set_attr "type" "arith")
158 (set_attr "mode" "SI")])
160 (define_insn "mips_cmpgdu_eq_qb"
162 [(set (match_operand:SI 0 "register_operand" "=d")
163 (unspec:SI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
164 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
165 UNSPEC_CMPGDU_EQ_QB))
166 (set (reg:CCDSP CCDSP_CC_REGNUM)
167 (unspec:CCDSP [(match_dup 1) (match_dup 2)
168 (reg:CCDSP CCDSP_CC_REGNUM)]
169 UNSPEC_CMPGDU_EQ_QB))])]
171 "cmpgdu.eq.qb\t%0,%z1,%z2"
172 [(set_attr "type" "arith")
173 (set_attr "mode" "SI")])
175 (define_insn "mips_cmpgdu_lt_qb"
177 [(set (match_operand:SI 0 "register_operand" "=d")
178 (unspec:SI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
179 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
180 UNSPEC_CMPGDU_LT_QB))
181 (set (reg:CCDSP CCDSP_CC_REGNUM)
182 (unspec:CCDSP [(match_dup 1) (match_dup 2)
183 (reg:CCDSP CCDSP_CC_REGNUM)]
184 UNSPEC_CMPGDU_LT_QB))])]
186 "cmpgdu.lt.qb\t%0,%z1,%z2"
187 [(set_attr "type" "arith")
188 (set_attr "mode" "SI")])
190 (define_insn "mips_cmpgdu_le_qb"
192 [(set (match_operand:SI 0 "register_operand" "=d")
193 (unspec:SI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
194 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
195 UNSPEC_CMPGDU_LE_QB))
196 (set (reg:CCDSP CCDSP_CC_REGNUM)
197 (unspec:CCDSP [(match_dup 1) (match_dup 2)
198 (reg:CCDSP CCDSP_CC_REGNUM)]
199 UNSPEC_CMPGDU_LE_QB))])]
201 "cmpgdu.le.qb\t%0,%z1,%z2"
202 [(set_attr "type" "arith")
203 (set_attr "mode" "SI")])
205 (define_insn "mips_dpa_w_ph"
206 [(set (match_operand:DI 0 "register_operand" "=a")
207 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
208 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
209 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
211 "ISA_HAS_DSPR2 && !TARGET_64BIT"
212 "dpa.w.ph\t%q0,%z2,%z3"
213 [(set_attr "type" "imadd")
214 (set_attr "mode" "SI")])
216 (define_insn "mips_dps_w_ph"
217 [(set (match_operand:DI 0 "register_operand" "=a")
218 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
219 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
220 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
222 "ISA_HAS_DSPR2 && !TARGET_64BIT"
223 "dps.w.ph\t%q0,%z2,%z3"
224 [(set_attr "type" "imadd")
225 (set_attr "mode" "SI")])
227 (define_insn "mulv2hi3"
229 [(set (match_operand:V2HI 0 "register_operand" "=d")
230 (mult:V2HI (match_operand:V2HI 1 "register_operand" "d")
231 (match_operand:V2HI 2 "register_operand" "d")))
232 (set (reg:CCDSP CCDSP_OU_REGNUM)
233 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MUL_PH))
234 (clobber (match_scratch:DI 3 "=x"))])]
237 [(set_attr "type" "imul3")
238 (set_attr "mode" "SI")])
240 (define_insn "mips_mul_s_ph"
242 [(set (match_operand:V2HI 0 "register_operand" "=d")
243 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
244 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
246 (set (reg:CCDSP CCDSP_OU_REGNUM)
247 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MUL_S_PH))
248 (clobber (match_scratch:DI 3 "=x"))])]
250 "mul_s.ph\t%0,%z1,%z2"
251 [(set_attr "type" "imul3")
252 (set_attr "mode" "SI")])
254 (define_insn "mips_mulq_rs_w"
256 [(set (match_operand:SI 0 "register_operand" "=d")
257 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
258 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
260 (set (reg:CCDSP CCDSP_OU_REGNUM)
261 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_RS_W))
262 (clobber (match_scratch:DI 3 "=x"))])]
264 "mulq_rs.w\t%0,%z1,%z2"
265 [(set_attr "type" "imul3")
266 (set_attr "mode" "SI")])
268 (define_insn "mips_mulq_s_ph"
270 [(set (match_operand:V2HI 0 "register_operand" "=d")
271 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
272 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
274 (set (reg:CCDSP CCDSP_OU_REGNUM)
275 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_S_PH))
276 (clobber (match_scratch:DI 3 "=x"))])]
278 "mulq_s.ph\t%0,%z1,%z2"
279 [(set_attr "type" "imul3")
280 (set_attr "mode" "SI")])
282 (define_insn "mips_mulq_s_w"
284 [(set (match_operand:SI 0 "register_operand" "=d")
285 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
286 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
288 (set (reg:CCDSP CCDSP_OU_REGNUM)
289 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_S_W))
290 (clobber (match_scratch:DI 3 "=x"))])]
292 "mulq_s.w\t%0,%z1,%z2"
293 [(set_attr "type" "imul3")
294 (set_attr "mode" "SI")])
296 (define_insn "mips_mulsa_w_ph"
297 [(set (match_operand:DI 0 "register_operand" "=a")
298 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
299 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
300 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
302 "ISA_HAS_DSPR2 && !TARGET_64BIT"
303 "mulsa.w.ph\t%q0,%z2,%z3"
304 [(set_attr "type" "imadd")
305 (set_attr "mode" "SI")])
307 (define_insn "mips_precr_qb_ph"
308 [(set (match_operand:V4QI 0 "register_operand" "=d")
309 (unspec:V4QI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
310 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
311 UNSPEC_PRECR_QB_PH))]
313 "precr.qb.ph\t%0,%z1,%z2"
314 [(set_attr "type" "arith")
315 (set_attr "mode" "SI")])
317 (define_insn "mips_precr_sra_ph_w"
318 [(set (match_operand:V2HI 0 "register_operand" "=d")
319 (unspec:V2HI [(match_operand:SI 1 "register_operand" "0")
320 (match_operand:SI 2 "reg_or_0_operand" "dJ")
321 (match_operand:SI 3 "const_int_operand" "n")]
322 UNSPEC_PRECR_SRA_PH_W))]
325 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
326 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
327 return "precr_sra.ph.w\t%0,%z2,%3";
329 [(set_attr "type" "arith")
330 (set_attr "mode" "SI")])
332 (define_insn "mips_precr_sra_r_ph_w"
333 [(set (match_operand:V2HI 0 "register_operand" "=d")
334 (unspec:V2HI [(match_operand:SI 1 "register_operand" "0")
335 (match_operand:SI 2 "reg_or_0_operand" "dJ")
336 (match_operand:SI 3 "const_int_operand" "n")]
337 UNSPEC_PRECR_SRA_R_PH_W))]
340 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
341 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
342 return "precr_sra_r.ph.w\t%0,%z2,%3";
344 [(set_attr "type" "arith")
345 (set_attr "mode" "SI")])
347 (define_insn "mips_prepend"
348 [(set (match_operand:SI 0 "register_operand" "=d")
349 (unspec:SI [(match_operand:SI 1 "register_operand" "0")
350 (match_operand:SI 2 "reg_or_0_operand" "dJ")
351 (match_operand:SI 3 "const_int_operand" "n")]
355 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
356 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
357 return "prepend\t%0,%z2,%3";
359 [(set_attr "type" "arith")
360 (set_attr "mode" "SI")])
362 (define_insn "mips_shra_qb"
363 [(set (match_operand:V4QI 0 "register_operand" "=d,d")
364 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG,dYG")
365 (match_operand:SI 2 "arith_operand" "I,d")]
369 if (which_alternative == 0)
371 if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 7)
372 operands[2] = GEN_INT (INTVAL (operands[2]) & 7);
373 return "shra.qb\t%0,%z1,%2";
375 return "shrav.qb\t%0,%z1,%2";
377 [(set_attr "type" "shift")
378 (set_attr "mode" "SI")])
381 (define_insn "mips_shra_r_qb"
382 [(set (match_operand:V4QI 0 "register_operand" "=d,d")
383 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG,dYG")
384 (match_operand:SI 2 "arith_operand" "I,d")]
388 if (which_alternative == 0)
390 if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 7)
391 operands[2] = GEN_INT (INTVAL (operands[2]) & 7);
392 return "shra_r.qb\t%0,%z1,%2";
394 return "shrav_r.qb\t%0,%z1,%2";
396 [(set_attr "type" "shift")
397 (set_attr "mode" "SI")])
399 (define_insn "mips_shrl_ph"
400 [(set (match_operand:V2HI 0 "register_operand" "=d,d")
401 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG,dYG")
402 (match_operand:SI 2 "arith_operand" "I,d")]
406 if (which_alternative == 0)
408 if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 15)
409 operands[2] = GEN_INT (INTVAL (operands[2]) & 15);
410 return "shrl.ph\t%0,%z1,%2";
412 return "shrlv.ph\t%0,%z1,%2";
414 [(set_attr "type" "shift")
415 (set_attr "mode" "SI")])
417 (define_insn "mips_subu_ph"
419 [(set (match_operand:V2HI 0 "register_operand" "=d")
420 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
421 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
423 (set (reg:CCDSP CCDSP_OU_REGNUM)
424 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
426 "subu.ph\t%0,%z1,%z2"
427 [(set_attr "type" "arith")
428 (set_attr "mode" "SI")])
430 (define_insn "mips_subu_s_ph"
432 [(set (match_operand:V2HI 0 "register_operand" "=d")
433 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
434 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
436 (set (reg:CCDSP CCDSP_OU_REGNUM)
437 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
439 "subu_s.ph\t%0,%z1,%z2"
440 [(set_attr "type" "arith")
441 (set_attr "mode" "SI")])
443 (define_insn "mips_subuh_qb"
444 [(set (match_operand:V4QI 0 "register_operand" "=d")
445 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
446 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
449 "subuh.qb\t%0,%z1,%z2"
450 [(set_attr "type" "arith")
451 (set_attr "mode" "SI")])
453 (define_insn "mips_subuh_r_qb"
454 [(set (match_operand:V4QI 0 "register_operand" "=d")
455 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
456 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
459 "subuh_r.qb\t%0,%z1,%z2"
460 [(set_attr "type" "arith")
461 (set_attr "mode" "SI")])
463 (define_insn "mips_addqh_ph"
464 [(set (match_operand:V2HI 0 "register_operand" "=d")
465 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
466 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
469 "addqh.ph\t%0,%z1,%z2"
470 [(set_attr "type" "arith")
471 (set_attr "mode" "SI")])
473 (define_insn "mips_addqh_r_ph"
474 [(set (match_operand:V2HI 0 "register_operand" "=d")
475 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
476 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
479 "addqh_r.ph\t%0,%z1,%z2"
480 [(set_attr "type" "arith")
481 (set_attr "mode" "SI")])
483 (define_insn "mips_addqh_w"
484 [(set (match_operand:SI 0 "register_operand" "=d")
485 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
486 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
489 "addqh.w\t%0,%z1,%z2"
490 [(set_attr "type" "arith")
491 (set_attr "mode" "SI")])
493 (define_insn "mips_addqh_r_w"
494 [(set (match_operand:SI 0 "register_operand" "=d")
495 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
496 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
499 "addqh_r.w\t%0,%z1,%z2"
500 [(set_attr "type" "arith")
501 (set_attr "mode" "SI")])
503 (define_insn "mips_subqh_ph"
504 [(set (match_operand:V2HI 0 "register_operand" "=d")
505 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
506 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
509 "subqh.ph\t%0,%z1,%z2"
510 [(set_attr "type" "arith")
511 (set_attr "mode" "SI")])
513 (define_insn "mips_subqh_r_ph"
514 [(set (match_operand:V2HI 0 "register_operand" "=d")
515 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
516 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
519 "subqh_r.ph\t%0,%z1,%z2"
520 [(set_attr "type" "arith")
521 (set_attr "mode" "SI")])
523 (define_insn "mips_subqh_w"
524 [(set (match_operand:SI 0 "register_operand" "=d")
525 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
526 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
529 "subqh.w\t%0,%z1,%z2"
530 [(set_attr "type" "arith")
531 (set_attr "mode" "SI")])
533 (define_insn "mips_subqh_r_w"
534 [(set (match_operand:SI 0 "register_operand" "=d")
535 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
536 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
539 "subqh_r.w\t%0,%z1,%z2"
540 [(set_attr "type" "arith")
541 (set_attr "mode" "SI")])
543 (define_insn "mips_dpax_w_ph"
544 [(set (match_operand:DI 0 "register_operand" "=a")
545 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
546 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
547 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
549 "ISA_HAS_DSPR2 && !TARGET_64BIT"
550 "dpax.w.ph\t%q0,%z2,%z3"
551 [(set_attr "type" "imadd")
552 (set_attr "mode" "SI")])
554 (define_insn "mips_dpsx_w_ph"
555 [(set (match_operand:DI 0 "register_operand" "=a")
556 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
557 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
558 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
560 "ISA_HAS_DSPR2 && !TARGET_64BIT"
561 "dpsx.w.ph\t%q0,%z2,%z3"
562 [(set_attr "type" "imadd")
563 (set_attr "mode" "SI")])
565 (define_insn "mips_dpaqx_s_w_ph"
567 [(set (match_operand:DI 0 "register_operand" "=a")
568 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
569 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
570 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
571 UNSPEC_DPAQX_S_W_PH))
572 (set (reg:CCDSP CCDSP_OU_REGNUM)
573 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
574 UNSPEC_DPAQX_S_W_PH))])]
575 "ISA_HAS_DSPR2 && !TARGET_64BIT"
576 "dpaqx_s.w.ph\t%q0,%z2,%z3"
577 [(set_attr "type" "imadd")
578 (set_attr "mode" "SI")])
580 (define_insn "mips_dpaqx_sa_w_ph"
582 [(set (match_operand:DI 0 "register_operand" "=a")
583 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
584 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
585 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
586 UNSPEC_DPAQX_SA_W_PH))
587 (set (reg:CCDSP CCDSP_OU_REGNUM)
588 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
589 UNSPEC_DPAQX_SA_W_PH))])]
590 "ISA_HAS_DSPR2 && !TARGET_64BIT"
591 "dpaqx_sa.w.ph\t%q0,%z2,%z3"
592 [(set_attr "type" "imadd")
593 (set_attr "mode" "SI")])
595 (define_insn "mips_dpsqx_s_w_ph"
597 [(set (match_operand:DI 0 "register_operand" "=a")
598 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
599 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
600 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
601 UNSPEC_DPSQX_S_W_PH))
602 (set (reg:CCDSP CCDSP_OU_REGNUM)
603 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
604 UNSPEC_DPSQX_S_W_PH))])]
605 "ISA_HAS_DSPR2 && !TARGET_64BIT"
606 "dpsqx_s.w.ph\t%q0,%z2,%z3"
607 [(set_attr "type" "imadd")
608 (set_attr "mode" "SI")])
610 (define_insn "mips_dpsqx_sa_w_ph"
612 [(set (match_operand:DI 0 "register_operand" "=a")
613 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
614 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
615 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
616 UNSPEC_DPSQX_SA_W_PH))
617 (set (reg:CCDSP CCDSP_OU_REGNUM)
618 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
619 UNSPEC_DPSQX_SA_W_PH))])]
620 "ISA_HAS_DSPR2 && !TARGET_64BIT"
621 "dpsqx_sa.w.ph\t%q0,%z2,%z3"
622 [(set_attr "type" "imadd")
623 (set_attr "mode" "SI")])