1 ; MIPS DSP ASE REV 2 Revision 0.02 11/24/2006
3 (define_insn "mips_absq_s_qb"
5 [(set (match_operand:V4QI 0 "register_operand" "=d")
6 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")]
8 (set (reg:CCDSP CCDSP_OU_REGNUM)
9 (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
12 [(set_attr "type" "arith")
13 (set_attr "mode" "SI")])
15 (define_insn "mips_addu_ph"
17 [(set (match_operand:V2HI 0 "register_operand" "=d")
18 (plus:V2HI (match_operand:V2HI 1 "reg_or_0_operand" "dYG")
19 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")))
20 (set (reg:CCDSP CCDSP_OU_REGNUM)
21 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
24 [(set_attr "type" "arith")
25 (set_attr "mode" "SI")])
27 (define_insn "mips_addu_s_ph"
29 [(set (match_operand:V2HI 0 "register_operand" "=d")
30 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
31 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
33 (set (reg:CCDSP CCDSP_OU_REGNUM)
34 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
36 "addu_s.ph\t%0,%z1,%z2"
37 [(set_attr "type" "arith")
38 (set_attr "mode" "SI")])
40 (define_insn "mips_adduh_qb"
41 [(set (match_operand:V4QI 0 "register_operand" "=d")
42 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
43 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
46 "adduh.qb\t%0,%z1,%z2"
47 [(set_attr "type" "arith")
48 (set_attr "mode" "SI")])
50 (define_insn "mips_adduh_r_qb"
51 [(set (match_operand:V4QI 0 "register_operand" "=d")
52 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
53 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
56 "adduh_r.qb\t%0,%z1,%z2"
57 [(set_attr "type" "arith")
58 (set_attr "mode" "SI")])
60 (define_insn "mips_append"
61 [(set (match_operand:SI 0 "register_operand" "=d")
62 (unspec:SI [(match_operand:SI 1 "register_operand" "0")
63 (match_operand:SI 2 "reg_or_0_operand" "dJ")
64 (match_operand:SI 3 "const_int_operand" "n")]
68 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
69 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
70 return "append\t%0,%z2,%3";
72 [(set_attr "type" "arith")
73 (set_attr "mode" "SI")])
75 (define_insn "mips_balign"
76 [(set (match_operand:SI 0 "register_operand" "=d")
77 (unspec:SI [(match_operand:SI 1 "register_operand" "0")
78 (match_operand:SI 2 "reg_or_0_operand" "dJ")
79 (match_operand:SI 3 "const_int_operand" "n")]
83 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 3)
84 operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
85 return "balign\t%0,%z2,%3";
87 [(set_attr "type" "arith")
88 (set_attr "mode" "SI")])
90 (define_insn "mips_cmpgdu_eq_qb"
92 [(set (match_operand:SI 0 "register_operand" "=d")
93 (unspec:SI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
94 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
96 (set (reg:CCDSP CCDSP_CC_REGNUM)
97 (unspec:CCDSP [(match_dup 1) (match_dup 2)
98 (reg:CCDSP CCDSP_CC_REGNUM)]
99 UNSPEC_CMPGDU_EQ_QB))])]
101 "cmpgdu.eq.qb\t%0,%z1,%z2"
102 [(set_attr "type" "arith")
103 (set_attr "mode" "SI")])
105 (define_insn "mips_cmpgdu_lt_qb"
107 [(set (match_operand:SI 0 "register_operand" "=d")
108 (unspec:SI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
109 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
110 UNSPEC_CMPGDU_LT_QB))
111 (set (reg:CCDSP CCDSP_CC_REGNUM)
112 (unspec:CCDSP [(match_dup 1) (match_dup 2)
113 (reg:CCDSP CCDSP_CC_REGNUM)]
114 UNSPEC_CMPGDU_LT_QB))])]
116 "cmpgdu.lt.qb\t%0,%z1,%z2"
117 [(set_attr "type" "arith")
118 (set_attr "mode" "SI")])
120 (define_insn "mips_cmpgdu_le_qb"
122 [(set (match_operand:SI 0 "register_operand" "=d")
123 (unspec:SI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
124 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
125 UNSPEC_CMPGDU_LE_QB))
126 (set (reg:CCDSP CCDSP_CC_REGNUM)
127 (unspec:CCDSP [(match_dup 1) (match_dup 2)
128 (reg:CCDSP CCDSP_CC_REGNUM)]
129 UNSPEC_CMPGDU_LE_QB))])]
131 "cmpgdu.le.qb\t%0,%z1,%z2"
132 [(set_attr "type" "arith")
133 (set_attr "mode" "SI")])
135 (define_insn "mips_dpa_w_ph"
136 [(set (match_operand:DI 0 "register_operand" "=a")
137 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
138 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
139 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
141 "TARGET_DSPR2 && !TARGET_64BIT"
142 "dpa.w.ph\t%q0,%z2,%z3"
143 [(set_attr "type" "imadd")
144 (set_attr "mode" "SI")])
146 (define_insn "mips_dps_w_ph"
147 [(set (match_operand:DI 0 "register_operand" "=a")
148 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
149 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
150 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
152 "TARGET_DSPR2 && !TARGET_64BIT"
153 "dps.w.ph\t%q0,%z2,%z3"
154 [(set_attr "type" "imadd")
155 (set_attr "mode" "SI")])
157 (define_expand "mips_madd<u>"
158 [(set (match_operand:DI 0 "register_operand")
160 (mult:DI (any_extend:DI (match_operand:SI 2 "register_operand"))
161 (any_extend:DI (match_operand:SI 3 "register_operand")))
162 (match_operand:DI 1 "register_operand")))]
163 "TARGET_DSPR2 && !TARGET_64BIT")
165 (define_expand "mips_msub<u>"
166 [(set (match_operand:DI 0 "register_operand")
168 (match_operand:DI 1 "register_operand")
169 (mult:DI (any_extend:DI (match_operand:SI 2 "register_operand"))
170 (any_extend:DI (match_operand:SI 3 "register_operand")))))]
171 "TARGET_DSPR2 && !TARGET_64BIT")
173 (define_insn "mulv2hi3"
175 [(set (match_operand:V2HI 0 "register_operand" "=d")
176 (mult:V2HI (match_operand:V2HI 1 "register_operand" "d")
177 (match_operand:V2HI 2 "register_operand" "d")))
178 (set (reg:CCDSP CCDSP_OU_REGNUM)
179 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MUL_PH))
180 (clobber (match_scratch:DI 3 "=x"))])]
183 [(set_attr "type" "imul3")
184 (set_attr "mode" "SI")])
186 (define_insn "mips_mul_s_ph"
188 [(set (match_operand:V2HI 0 "register_operand" "=d")
189 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
190 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
192 (set (reg:CCDSP CCDSP_OU_REGNUM)
193 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MUL_S_PH))
194 (clobber (match_scratch:DI 3 "=x"))])]
196 "mul_s.ph\t%0,%z1,%z2"
197 [(set_attr "type" "imul3")
198 (set_attr "mode" "SI")])
200 (define_insn "mips_mulq_rs_w"
202 [(set (match_operand:SI 0 "register_operand" "=d")
203 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
204 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
206 (set (reg:CCDSP CCDSP_OU_REGNUM)
207 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_RS_W))
208 (clobber (match_scratch:DI 3 "=x"))])]
210 "mulq_rs.w\t%0,%z1,%z2"
211 [(set_attr "type" "imul3")
212 (set_attr "mode" "SI")])
214 (define_insn "mips_mulq_s_ph"
216 [(set (match_operand:V2HI 0 "register_operand" "=d")
217 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
218 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
220 (set (reg:CCDSP CCDSP_OU_REGNUM)
221 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_S_PH))
222 (clobber (match_scratch:DI 3 "=x"))])]
224 "mulq_s.ph\t%0,%z1,%z2"
225 [(set_attr "type" "imul3")
226 (set_attr "mode" "SI")])
228 (define_insn "mips_mulq_s_w"
230 [(set (match_operand:SI 0 "register_operand" "=d")
231 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
232 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
234 (set (reg:CCDSP CCDSP_OU_REGNUM)
235 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_S_W))
236 (clobber (match_scratch:DI 3 "=x"))])]
238 "mulq_s.w\t%0,%z1,%z2"
239 [(set_attr "type" "imul3")
240 (set_attr "mode" "SI")])
242 (define_insn "mips_mulsa_w_ph"
243 [(set (match_operand:DI 0 "register_operand" "=a")
244 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
245 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
246 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
248 "TARGET_DSPR2 && !TARGET_64BIT"
249 "mulsa.w.ph\t%q0,%z2,%z3"
250 [(set_attr "type" "imadd")
251 (set_attr "mode" "SI")])
253 (define_insn "mips_mult"
254 [(set (match_operand:DI 0 "register_operand" "=a")
256 (sign_extend:DI (match_operand:SI 1 "register_operand" "d"))
257 (sign_extend:DI (match_operand:SI 2 "register_operand" "d"))))]
258 "TARGET_DSPR2 && !TARGET_64BIT"
260 [(set_attr "type" "imul")
261 (set_attr "mode" "SI")])
263 (define_insn "mips_multu"
264 [(set (match_operand:DI 0 "register_operand" "=a")
266 (zero_extend:DI (match_operand:SI 1 "register_operand" "d"))
267 (zero_extend:DI (match_operand:SI 2 "register_operand" "d"))))]
268 "TARGET_DSPR2 && !TARGET_64BIT"
270 [(set_attr "type" "imul")
271 (set_attr "mode" "SI")])
273 (define_insn "mips_precr_qb_ph"
274 [(set (match_operand:V4QI 0 "register_operand" "=d")
275 (unspec:V4QI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
276 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
277 UNSPEC_PRECR_QB_PH))]
279 "precr.qb.ph\t%0,%z1,%z2"
280 [(set_attr "type" "arith")
281 (set_attr "mode" "SI")])
283 (define_insn "mips_precr_sra_ph_w"
284 [(set (match_operand:V2HI 0 "register_operand" "=d")
285 (unspec:V2HI [(match_operand:SI 1 "register_operand" "0")
286 (match_operand:SI 2 "reg_or_0_operand" "dJ")
287 (match_operand:SI 3 "const_int_operand" "n")]
288 UNSPEC_PRECR_SRA_PH_W))]
291 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
292 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
293 return "precr_sra.ph.w\t%0,%z2,%3";
295 [(set_attr "type" "arith")
296 (set_attr "mode" "SI")])
298 (define_insn "mips_precr_sra_r_ph_w"
299 [(set (match_operand:V2HI 0 "register_operand" "=d")
300 (unspec:V2HI [(match_operand:SI 1 "register_operand" "0")
301 (match_operand:SI 2 "reg_or_0_operand" "dJ")
302 (match_operand:SI 3 "const_int_operand" "n")]
303 UNSPEC_PRECR_SRA_R_PH_W))]
306 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
307 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
308 return "precr_sra_r.ph.w\t%0,%z2,%3";
310 [(set_attr "type" "arith")
311 (set_attr "mode" "SI")])
313 (define_insn "mips_prepend"
314 [(set (match_operand:SI 0 "register_operand" "=d")
315 (unspec:SI [(match_operand:SI 1 "register_operand" "0")
316 (match_operand:SI 2 "reg_or_0_operand" "dJ")
317 (match_operand:SI 3 "const_int_operand" "n")]
321 if (INTVAL (operands[3]) & ~(unsigned HOST_WIDE_INT) 31)
322 operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
323 return "prepend\t%0,%z2,%3";
325 [(set_attr "type" "arith")
326 (set_attr "mode" "SI")])
328 (define_insn "mips_shra_qb"
329 [(set (match_operand:V4QI 0 "register_operand" "=d,d")
330 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG,dYG")
331 (match_operand:SI 2 "arith_operand" "I,d")]
335 if (which_alternative == 0)
337 if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 7)
338 operands[2] = GEN_INT (INTVAL (operands[2]) & 7);
339 return "shra.qb\t%0,%z1,%2";
341 return "shrav.qb\t%0,%z1,%2";
343 [(set_attr "type" "shift")
344 (set_attr "mode" "SI")])
347 (define_insn "mips_shra_r_qb"
348 [(set (match_operand:V4QI 0 "register_operand" "=d,d")
349 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG,dYG")
350 (match_operand:SI 2 "arith_operand" "I,d")]
354 if (which_alternative == 0)
356 if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 7)
357 operands[2] = GEN_INT (INTVAL (operands[2]) & 7);
358 return "shra_r.qb\t%0,%z1,%2";
360 return "shrav_r.qb\t%0,%z1,%2";
362 [(set_attr "type" "shift")
363 (set_attr "mode" "SI")])
365 (define_insn "mips_shrl_ph"
366 [(set (match_operand:V2HI 0 "register_operand" "=d,d")
367 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG,dYG")
368 (match_operand:SI 2 "arith_operand" "I,d")]
372 if (which_alternative == 0)
374 if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 15)
375 operands[2] = GEN_INT (INTVAL (operands[2]) & 15);
376 return "shrl.ph\t%0,%z1,%2";
378 return "shrlv.ph\t%0,%z1,%2";
380 [(set_attr "type" "shift")
381 (set_attr "mode" "SI")])
383 (define_insn "mips_subu_ph"
385 [(set (match_operand:V2HI 0 "register_operand" "=d")
386 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
387 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
389 (set (reg:CCDSP CCDSP_OU_REGNUM)
390 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
392 "subu.ph\t%0,%z1,%z2"
393 [(set_attr "type" "arith")
394 (set_attr "mode" "SI")])
396 (define_insn "mips_subu_s_ph"
398 [(set (match_operand:V2HI 0 "register_operand" "=d")
399 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
400 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
402 (set (reg:CCDSP CCDSP_OU_REGNUM)
403 (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
405 "subu_s.ph\t%0,%z1,%z2"
406 [(set_attr "type" "arith")
407 (set_attr "mode" "SI")])
409 (define_insn "mips_subuh_qb"
410 [(set (match_operand:V4QI 0 "register_operand" "=d")
411 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
412 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
415 "subuh.qb\t%0,%z1,%z2"
416 [(set_attr "type" "arith")
417 (set_attr "mode" "SI")])
419 (define_insn "mips_subuh_r_qb"
420 [(set (match_operand:V4QI 0 "register_operand" "=d")
421 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")
422 (match_operand:V4QI 2 "reg_or_0_operand" "dYG")]
425 "subuh_r.qb\t%0,%z1,%z2"
426 [(set_attr "type" "arith")
427 (set_attr "mode" "SI")])
429 (define_insn "mips_addqh_ph"
430 [(set (match_operand:V2HI 0 "register_operand" "=d")
431 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
432 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
435 "addqh.ph\t%0,%z1,%z2"
436 [(set_attr "type" "arith")
437 (set_attr "mode" "SI")])
439 (define_insn "mips_addqh_r_ph"
440 [(set (match_operand:V2HI 0 "register_operand" "=d")
441 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
442 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
445 "addqh_r.ph\t%0,%z1,%z2"
446 [(set_attr "type" "arith")
447 (set_attr "mode" "SI")])
449 (define_insn "mips_addqh_w"
450 [(set (match_operand:SI 0 "register_operand" "=d")
451 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
452 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
455 "addqh.w\t%0,%z1,%z2"
456 [(set_attr "type" "arith")
457 (set_attr "mode" "SI")])
459 (define_insn "mips_addqh_r_w"
460 [(set (match_operand:SI 0 "register_operand" "=d")
461 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
462 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
465 "addqh_r.w\t%0,%z1,%z2"
466 [(set_attr "type" "arith")
467 (set_attr "mode" "SI")])
469 (define_insn "mips_subqh_ph"
470 [(set (match_operand:V2HI 0 "register_operand" "=d")
471 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
472 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
475 "subqh.ph\t%0,%z1,%z2"
476 [(set_attr "type" "arith")
477 (set_attr "mode" "SI")])
479 (define_insn "mips_subqh_r_ph"
480 [(set (match_operand:V2HI 0 "register_operand" "=d")
481 (unspec:V2HI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG")
482 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")]
485 "subqh_r.ph\t%0,%z1,%z2"
486 [(set_attr "type" "arith")
487 (set_attr "mode" "SI")])
489 (define_insn "mips_subqh_w"
490 [(set (match_operand:SI 0 "register_operand" "=d")
491 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
492 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
495 "subqh.w\t%0,%z1,%z2"
496 [(set_attr "type" "arith")
497 (set_attr "mode" "SI")])
499 (define_insn "mips_subqh_r_w"
500 [(set (match_operand:SI 0 "register_operand" "=d")
501 (unspec:SI [(match_operand:SI 1 "reg_or_0_operand" "dJ")
502 (match_operand:SI 2 "reg_or_0_operand" "dJ")]
505 "subqh_r.w\t%0,%z1,%z2"
506 [(set_attr "type" "arith")
507 (set_attr "mode" "SI")])
509 (define_insn "mips_dpax_w_ph"
510 [(set (match_operand:DI 0 "register_operand" "=a")
511 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
512 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
513 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
515 "TARGET_DSPR2 && !TARGET_64BIT"
516 "dpax.w.ph\t%q0,%z2,%z3"
517 [(set_attr "type" "imadd")
518 (set_attr "mode" "SI")])
520 (define_insn "mips_dpsx_w_ph"
521 [(set (match_operand:DI 0 "register_operand" "=a")
522 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
523 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
524 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
526 "TARGET_DSPR2 && !TARGET_64BIT"
527 "dpsx.w.ph\t%q0,%z2,%z3"
528 [(set_attr "type" "imadd")
529 (set_attr "mode" "SI")])
531 (define_insn "mips_dpaqx_s_w_ph"
533 [(set (match_operand:DI 0 "register_operand" "=a")
534 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
535 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
536 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
537 UNSPEC_DPAQX_S_W_PH))
538 (set (reg:CCDSP CCDSP_OU_REGNUM)
539 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
540 UNSPEC_DPAQX_S_W_PH))])]
541 "TARGET_DSPR2 && !TARGET_64BIT"
542 "dpaqx_s.w.ph\t%q0,%z2,%z3"
543 [(set_attr "type" "imadd")
544 (set_attr "mode" "SI")])
546 (define_insn "mips_dpaqx_sa_w_ph"
548 [(set (match_operand:DI 0 "register_operand" "=a")
549 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
550 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
551 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
552 UNSPEC_DPAQX_SA_W_PH))
553 (set (reg:CCDSP CCDSP_OU_REGNUM)
554 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
555 UNSPEC_DPAQX_SA_W_PH))])]
556 "TARGET_DSPR2 && !TARGET_64BIT"
557 "dpaqx_sa.w.ph\t%q0,%z2,%z3"
558 [(set_attr "type" "imadd")
559 (set_attr "mode" "SI")])
561 (define_insn "mips_dpsqx_s_w_ph"
563 [(set (match_operand:DI 0 "register_operand" "=a")
564 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
565 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
566 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
567 UNSPEC_DPSQX_S_W_PH))
568 (set (reg:CCDSP CCDSP_OU_REGNUM)
569 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
570 UNSPEC_DPSQX_S_W_PH))])]
571 "TARGET_DSPR2 && !TARGET_64BIT"
572 "dpsqx_s.w.ph\t%q0,%z2,%z3"
573 [(set_attr "type" "imadd")
574 (set_attr "mode" "SI")])
576 (define_insn "mips_dpsqx_sa_w_ph"
578 [(set (match_operand:DI 0 "register_operand" "=a")
579 (unspec:DI [(match_operand:DI 1 "register_operand" "0")
580 (match_operand:V2HI 2 "reg_or_0_operand" "dYG")
581 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")]
582 UNSPEC_DPSQX_SA_W_PH))
583 (set (reg:CCDSP CCDSP_OU_REGNUM)
584 (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
585 UNSPEC_DPSQX_SA_W_PH))])]
586 "TARGET_DSPR2 && !TARGET_64BIT"
587 "dpsqx_sa.w.ph\t%q0,%z2,%z3"
588 [(set_attr "type" "imadd")
589 (set_attr "mode" "SI")])