* config/mips/mips.md (UNSPEC_{RSQRT,RECIP}[12]_{S,D,PS}): Delete.
[gcc/gcc.git] / gcc / config / mips / mips-ps-3d.md
1 ;; MIPS Paired-Single Floating and MIPS-3D Instructions.
2 ;; Copyright (C) 2004 Free Software Foundation, Inc.
3 ;;
4 ;; This file is part of GCC.
5 ;;
6 ;; GCC is free software; you can redistribute it and/or modify
7 ;; it under the terms of the GNU General Public License as published by
8 ;; the Free Software Foundation; either version 2, or (at your option)
9 ;; any later version.
10 ;;
11 ;; GCC is distributed in the hope that it will be useful,
12 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 ;; GNU General Public License for more details.
15 ;;
16 ;; You should have received a copy of the GNU General Public License
17 ;; along with GCC; see the file COPYING.  If not, write to
18 ;; the Free Software Foundation, 59 Temple Place - Suite 330,
19 ;; Boston, MA 02111-1307, USA.
20
21 (define_insn "*movcc_v2sf_<mode>"
22   [(set (match_operand:V2SF 0 "register_operand" "=f,f")
23         (if_then_else:V2SF
24          (match_operator:GPR 4 "equality_operator"
25                          [(match_operand:GPR 1 "register_operand" "d,d")
26                           (const_int 0)])
27          (match_operand:V2SF 2 "register_operand" "f,0")
28          (match_operand:V2SF 3 "register_operand" "0,f")))]
29   "TARGET_PAIRED_SINGLE_FLOAT"
30   "@
31     mov%T4.ps\t%0,%2,%1
32     mov%t4.ps\t%0,%3,%1"
33   [(set_attr "type" "condmove")
34    (set_attr "mode" "SF")])
35
36 (define_insn "mips_cond_move_tf_ps"
37   [(set (match_operand:V2SF 0 "register_operand" "=f,f")
38         (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f,0")
39                       (match_operand:V2SF 2 "register_operand" "0,f")
40                       (match_operand:CCV2 3 "register_operand" "z,z")]
41                      UNSPEC_MOVE_TF_PS))]
42   "TARGET_PAIRED_SINGLE_FLOAT"
43   "@
44     movt.ps\t%0,%1,%Q3
45     movf.ps\t%0,%2,%Q3"
46   [(set_attr "type" "condmove")
47    (set_attr "mode" "SF")])
48
49 (define_expand "movv2sfcc"
50   [(set (match_dup 4) (match_operand 1 "comparison_operator"))
51    (set (match_operand:V2SF 0 "register_operand")
52         (if_then_else:V2SF (match_dup 5)
53                            (match_operand:V2SF 2 "register_operand")
54                            (match_operand:V2SF 3 "register_operand")))]
55   "TARGET_PAIRED_SINGLE_FLOAT"
56 {
57   /* We can only support MOVN.PS and MOVZ.PS.
58      NOTE: MOVT.PS and MOVF.PS have different semantics from MOVN.PS and 
59            MOVZ.PS.  MOVT.PS and MOVF.PS depend on two CC values and move 
60            each item independently.  */
61
62   if (GET_MODE_CLASS (GET_MODE (cmp_operands[0])) != MODE_INT)
63     FAIL;
64
65   gen_conditional_move (operands);
66   DONE;
67 })
68
69 ; pul.ps - Pair Upper Lower
70 (define_insn "mips_pul_ps"
71   [(set (match_operand:V2SF 0 "register_operand" "=f")
72         (vec_merge:V2SF
73          (match_operand:V2SF 1 "register_operand" "f")
74          (match_operand:V2SF 2 "register_operand" "f")
75          (const_int 2)))]
76   "TARGET_PAIRED_SINGLE_FLOAT"
77   "pul.ps\t%0,%1,%2"
78   [(set_attr "type" "fmove")
79    (set_attr "mode" "SF")])
80
81 ; puu.ps - Pair upper upper
82 (define_insn "mips_puu_ps"
83   [(set (match_operand:V2SF 0 "register_operand" "=f")
84         (vec_merge:V2SF
85          (match_operand:V2SF 1 "register_operand" "f")
86          (vec_select:V2SF (match_operand:V2SF 2 "register_operand" "f")
87                           (parallel [(const_int 1)
88                                      (const_int 0)]))
89          (const_int 2)))]
90   "TARGET_PAIRED_SINGLE_FLOAT"
91   "puu.ps\t%0,%1,%2"
92   [(set_attr "type" "fmove")
93    (set_attr "mode" "SF")])
94
95 ; pll.ps - Pair Lower Lower
96 (define_insn "mips_pll_ps"
97   [(set (match_operand:V2SF 0 "register_operand" "=f")
98         (vec_merge:V2SF
99          (vec_select:V2SF (match_operand:V2SF 1 "register_operand" "f")
100                           (parallel [(const_int 1)
101                                      (const_int 0)]))
102          (match_operand:V2SF 2 "register_operand" "f")
103          (const_int 2)))]
104   "TARGET_PAIRED_SINGLE_FLOAT"
105   "pll.ps\t%0,%1,%2"
106   [(set_attr "type" "fmove")
107    (set_attr "mode" "SF")])
108
109 ; plu.ps - Pair Lower Upper
110 (define_insn "mips_plu_ps"
111   [(set (match_operand:V2SF 0 "register_operand" "=f")
112         (vec_merge:V2SF
113          (vec_select:V2SF (match_operand:V2SF 1 "register_operand" "f")
114                           (parallel [(const_int 1)
115                                      (const_int 0)]))
116          (vec_select:V2SF (match_operand:V2SF 2 "register_operand" "f")
117                           (parallel [(const_int 1)
118                                      (const_int 0)]))
119          (const_int 2)))]
120   "TARGET_PAIRED_SINGLE_FLOAT"
121   "plu.ps\t%0,%1,%2"
122   [(set_attr "type" "fmove")
123    (set_attr "mode" "SF")])
124
125 ; vec_init
126 (define_expand "vec_initv2sf"
127   [(match_operand:V2SF 0 "register_operand")
128    (match_operand:V2SF 1 "")]
129   "TARGET_PAIRED_SINGLE_FLOAT"
130 {
131   rtx op0 = force_reg (SFmode, XVECEXP (operands[1], 0, 0));
132   rtx op1 = force_reg (SFmode, XVECEXP (operands[1], 0, 1));
133   emit_insn (gen_vec_initv2sf_internal (operands[0], op0, op1));
134   DONE;
135 })
136
137 (define_insn "vec_initv2sf_internal"
138   [(set (match_operand:V2SF 0 "register_operand" "=f")
139         (vec_concat:V2SF
140          (match_operand:SF 1 "register_operand" "f")
141          (match_operand:SF 2 "register_operand" "f")))]
142   "TARGET_PAIRED_SINGLE_FLOAT"
143 {
144   if (BYTES_BIG_ENDIAN)
145     return "cvt.ps.s\t%0,%1,%2";
146   else
147     return "cvt.ps.s\t%0,%2,%1";
148 }
149   [(set_attr "type" "fcvt")
150    (set_attr "mode" "SF")])
151
152 ;; ??? This is only generated if we perform a vector operation that has to be
153 ;; emulated.  There is no other way to get a vector mode bitfield extract
154 ;; currently.
155
156 (define_insn "vec_extractv2sf"
157   [(set (match_operand:SF 0 "register_operand" "=f")
158         (vec_select:SF (match_operand:V2SF 1 "register_operand" "f")
159                        (parallel
160                         [(match_operand 2 "const_0_or_1_operand" "")])))]
161   "TARGET_PAIRED_SINGLE_FLOAT"
162 {
163   if (INTVAL (operands[2]) == !BYTES_BIG_ENDIAN)
164     return "cvt.s.pu\t%0,%1";
165   else
166     return "cvt.s.pl\t%0,%1";
167 }
168   [(set_attr "type" "fcvt")
169    (set_attr "mode" "SF")])
170
171 ;; ??? This is only generated if we disable the vec_init pattern.  There is
172 ;; no other way to get a vector mode bitfield store currently.
173
174 (define_expand "vec_setv2sf"
175   [(match_operand:V2SF 0 "register_operand")
176    (match_operand:SF 1 "register_operand")
177    (match_operand 2 "const_0_or_1_operand")]
178   "TARGET_PAIRED_SINGLE_FLOAT"
179 {
180   rtx temp;
181
182   /* We don't have an insert instruction, so we duplicate the float, and
183      then use a PUL instruction.  */
184   temp = gen_reg_rtx (V2SFmode);
185   emit_insn (gen_mips_cvt_ps_s (temp, operands[1], operands[1]));
186   if (INTVAL (operands[2]) == !BYTES_BIG_ENDIAN)
187     emit_insn (gen_mips_pul_ps (operands[0], temp, operands[0]));
188   else
189     emit_insn (gen_mips_pul_ps (operands[0], operands[0], temp));
190   DONE;
191 })
192
193 ; cvt.ps.s - Floating Point Convert Pair to Paired Single
194 (define_expand "mips_cvt_ps_s"
195   [(match_operand:V2SF 0 "register_operand")
196    (match_operand:SF 1 "register_operand")
197    (match_operand:SF 2 "register_operand")]
198   "TARGET_PAIRED_SINGLE_FLOAT"
199 {
200   if (BYTES_BIG_ENDIAN)
201     emit_insn (gen_vec_initv2sf_internal (operands[0], operands[1],
202                operands[2]));
203   else
204     emit_insn (gen_vec_initv2sf_internal (operands[0], operands[2],
205                operands[1]));
206   DONE;
207 })
208
209 ; cvt.s.pl - Floating Point Convert Pair Lower to Single Floating Point
210 (define_expand "mips_cvt_s_pl"
211   [(set (match_operand:SF 0 "register_operand")
212         (vec_select:SF (match_operand:V2SF 1 "register_operand")
213                        (parallel [(match_dup 2)])))]
214   "TARGET_PAIRED_SINGLE_FLOAT"
215   { operands[2] = GEN_INT (BYTES_BIG_ENDIAN); })
216
217 ; cvt.s.pu - Floating Point Convert Pair Upper to Single Floating Point
218 (define_expand "mips_cvt_s_pu"
219   [(set (match_operand:SF 0 "register_operand")
220         (vec_select:SF (match_operand:V2SF 1 "register_operand")
221                        (parallel [(match_dup 2)])))]
222   "TARGET_PAIRED_SINGLE_FLOAT"
223   { operands[2] = GEN_INT (!BYTES_BIG_ENDIAN); })
224
225 ; alnv.ps - Floating Point Align Variable
226 (define_insn "mips_alnv_ps"
227   [(set (match_operand:V2SF 0 "register_operand" "=f")
228         (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")
229                       (match_operand:V2SF 2 "register_operand" "f")
230                       (match_operand:SI 3 "register_operand" "d")]
231                      UNSPEC_ALNV_PS))]
232   "TARGET_PAIRED_SINGLE_FLOAT"
233   "alnv.ps\t%0,%1,%2,%3"
234   [(set_attr "type" "fmove")
235    (set_attr "mode" "SF")])
236
237 ; addr.ps - Floating Point Reduction Add
238 (define_insn "mips_addr_ps"
239   [(set (match_operand:V2SF 0 "register_operand" "=f")
240         (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")
241                       (match_operand:V2SF 2 "register_operand" "f")]
242                      UNSPEC_ADDR_PS))]
243   "TARGET_MIPS3D"
244   "addr.ps\t%0,%1,%2"
245   [(set_attr "type" "fadd")
246    (set_attr "mode" "SF")])
247
248 ; cvt.pw.ps - Floating Point Convert Paired Single to Paired Word
249 (define_insn "mips_cvt_pw_ps"
250   [(set (match_operand:V2SF 0 "register_operand" "=f")
251         (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")]
252                      UNSPEC_CVT_PW_PS))]
253   "TARGET_MIPS3D"
254   "cvt.pw.ps\t%0,%1"
255   [(set_attr "type" "fcvt")
256    (set_attr "mode" "SF")])
257
258 ; cvt.ps.pw - Floating Point Convert Paired Word to Paired Single
259 (define_insn "mips_cvt_ps_pw"
260   [(set (match_operand:V2SF 0 "register_operand" "=f")
261         (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")]
262                      UNSPEC_CVT_PS_PW))]
263   "TARGET_MIPS3D"
264   "cvt.ps.pw\t%0,%1"
265   [(set_attr "type" "fcvt")
266    (set_attr "mode" "SF")])
267
268 ; mulr.ps - Floating Point Reduction Multiply
269 (define_insn "mips_mulr_ps"
270   [(set (match_operand:V2SF 0 "register_operand" "=f")
271         (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f")
272                       (match_operand:V2SF 2 "register_operand" "f")]
273                      UNSPEC_MULR_PS))]
274   "TARGET_MIPS3D"
275   "mulr.ps\t%0,%1,%2"
276   [(set_attr "type" "fmul")
277    (set_attr "mode" "SF")])
278
279 ;----------------------------------------------------------------------------
280 ; Floating Point Absolute Comparisions for Singles
281 ;----------------------------------------------------------------------------
282
283 (define_insn "mips_cabs_f_s"
284   [(set (match_operand:CC 0 "register_operand" "=z")
285         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
286                     (match_operand:SF 2 "register_operand" "f")]
287                    UNSPEC_CABS_F))]
288   "TARGET_MIPS3D"
289   "cabs.f.s\t%Q0,%1,%2"
290   [(set_attr "type" "fcmp")
291    (set_attr "mode" "FPSW")])
292
293 (define_insn "mips_cabs_un_s"
294   [(set (match_operand:CC 0 "register_operand" "=z")
295         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
296                     (match_operand:SF 2 "register_operand" "f")]
297                    UNSPEC_CABS_UN))]
298   "TARGET_MIPS3D"
299   "cabs.un.s\t%Q0,%1,%2"
300   [(set_attr "type" "fcmp")
301    (set_attr "mode" "FPSW")])
302
303 (define_insn "mips_cabs_eq_s"
304   [(set (match_operand:CC 0 "register_operand" "=z")
305         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
306                     (match_operand:SF 2 "register_operand" "f")]
307                    UNSPEC_CABS_EQ))]
308   "TARGET_MIPS3D"
309   "cabs.eq.s\t%Q0,%1,%2"
310   [(set_attr "type" "fcmp")
311    (set_attr "mode" "FPSW")])
312
313 (define_insn "mips_cabs_ueq_s"
314   [(set (match_operand:CC 0 "register_operand" "=z")
315         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
316                     (match_operand:SF 2 "register_operand" "f")]
317                    UNSPEC_CABS_UEQ))]
318   "TARGET_MIPS3D"
319   "cabs.ueq.s\t%Q0,%1,%2"
320   [(set_attr "type" "fcmp")
321    (set_attr "mode" "FPSW")])
322
323 (define_insn "mips_cabs_olt_s"
324   [(set (match_operand:CC 0 "register_operand" "=z")
325         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
326                     (match_operand:SF 2 "register_operand" "f")]
327                    UNSPEC_CABS_OLT))]
328   "TARGET_MIPS3D"
329   "cabs.olt.s\t%Q0,%1,%2"
330   [(set_attr "type" "fcmp")
331    (set_attr "mode" "FPSW")])
332
333 (define_insn "mips_cabs_ult_s"
334   [(set (match_operand:CC 0 "register_operand" "=z")
335         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
336                     (match_operand:SF 2 "register_operand" "f")]
337                    UNSPEC_CABS_ULT))]
338   "TARGET_MIPS3D"
339   "cabs.ult.s\t%Q0,%1,%2"
340   [(set_attr "type" "fcmp")
341    (set_attr "mode" "FPSW")])
342
343 (define_insn "mips_cabs_ole_s"
344   [(set (match_operand:CC 0 "register_operand" "=z")
345         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
346                     (match_operand:SF 2 "register_operand" "f")]
347                    UNSPEC_CABS_OLE))]
348   "TARGET_MIPS3D"
349   "cabs.ole.s\t%Q0,%1,%2"
350   [(set_attr "type" "fcmp")
351    (set_attr "mode" "FPSW")])
352
353 (define_insn "mips_cabs_ule_s"
354   [(set (match_operand:CC 0 "register_operand" "=z")
355         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
356                     (match_operand:SF 2 "register_operand" "f")]
357                    UNSPEC_CABS_ULE))]
358   "TARGET_MIPS3D"
359   "cabs.ule.s\t%Q0,%1,%2"
360   [(set_attr "type" "fcmp")
361    (set_attr "mode" "FPSW")])
362
363 (define_insn "mips_cabs_sf_s"
364   [(set (match_operand:CC 0 "register_operand" "=z")
365         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
366                     (match_operand:SF 2 "register_operand" "f")]
367                    UNSPEC_CABS_SF))]
368   "TARGET_MIPS3D"
369   "cabs.sf.s\t%Q0,%1,%2"
370   [(set_attr "type" "fcmp")
371    (set_attr "mode" "FPSW")])
372
373 (define_insn "mips_cabs_ngle_s"
374   [(set (match_operand:CC 0 "register_operand" "=z")
375         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
376                     (match_operand:SF 2 "register_operand" "f")]
377                    UNSPEC_CABS_NGLE))]
378   "TARGET_MIPS3D"
379   "cabs.ngle.s\t%Q0,%1,%2"
380   [(set_attr "type" "fcmp")
381    (set_attr "mode" "FPSW")])
382
383 (define_insn "mips_cabs_seq_s"
384   [(set (match_operand:CC 0 "register_operand" "=z")
385         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
386                     (match_operand:SF 2 "register_operand" "f")]
387                    UNSPEC_CABS_SEQ))]
388   "TARGET_MIPS3D"
389   "cabs.seq.s\t%Q0,%1,%2"
390   [(set_attr "type" "fcmp")
391    (set_attr "mode" "FPSW")])
392
393 (define_insn "mips_cabs_ngl_s"
394   [(set (match_operand:CC 0 "register_operand" "=z")
395         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
396                     (match_operand:SF 2 "register_operand" "f")]
397                    UNSPEC_CABS_NGL))]
398   "TARGET_MIPS3D"
399   "cabs.ngl.s\t%Q0,%1,%2"
400   [(set_attr "type" "fcmp")
401    (set_attr "mode" "FPSW")])
402
403 (define_insn "mips_cabs_lt_s"
404   [(set (match_operand:CC 0 "register_operand" "=z")
405         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
406                     (match_operand:SF 2 "register_operand" "f")]
407                    UNSPEC_CABS_LT))]
408   "TARGET_MIPS3D"
409   "cabs.lt.s\t%Q0,%1,%2"
410   [(set_attr "type" "fcmp")
411    (set_attr "mode" "FPSW")])
412
413 (define_insn "mips_cabs_nge_s"
414   [(set (match_operand:CC 0 "register_operand" "=z")
415         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
416                     (match_operand:SF 2 "register_operand" "f")]
417                    UNSPEC_CABS_NGE))]
418   "TARGET_MIPS3D"
419   "cabs.nge.s\t%Q0,%1,%2"
420   [(set_attr "type" "fcmp")
421    (set_attr "mode" "FPSW")])
422
423 (define_insn "mips_cabs_le_s"
424   [(set (match_operand:CC 0 "register_operand" "=z")
425         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
426                     (match_operand:SF 2 "register_operand" "f")]
427                    UNSPEC_CABS_LE))]
428   "TARGET_MIPS3D"
429   "cabs.le.s\t%Q0,%1,%2"
430   [(set_attr "type" "fcmp")
431    (set_attr "mode" "FPSW")])
432
433 (define_insn "mips_cabs_ngt_s"
434   [(set (match_operand:CC 0 "register_operand" "=z")
435         (unspec:CC [(match_operand:SF 1 "register_operand" "f")
436                     (match_operand:SF 2 "register_operand" "f")]
437                    UNSPEC_CABS_NGT))]
438   "TARGET_MIPS3D"
439   "cabs.ngt.s\t%Q0,%1,%2"
440   [(set_attr "type" "fcmp")
441    (set_attr "mode" "FPSW")])
442
443 ;----------------------------------------------------------------------------
444 ; Floating Point Absolute Comparisions for Doubles
445 ;----------------------------------------------------------------------------
446 (define_insn "mips_cabs_f_d"
447   [(set (match_operand:CC 0 "register_operand" "=z")
448         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
449                     (match_operand:DF 2 "register_operand" "f")]
450                    UNSPEC_CABS_F))]
451   "TARGET_MIPS3D"
452   "cabs.f.d\t%Q0,%1,%2"
453   [(set_attr "type" "fcmp")
454    (set_attr "mode" "FPSW")])
455
456 (define_insn "mips_cabs_un_d"
457   [(set (match_operand:CC 0 "register_operand" "=z")
458         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
459                     (match_operand:DF 2 "register_operand" "f")]
460                    UNSPEC_CABS_UN))]
461   "TARGET_MIPS3D"
462   "cabs.un.d\t%Q0,%1,%2"
463   [(set_attr "type" "fcmp")
464    (set_attr "mode" "FPSW")])
465
466 (define_insn "mips_cabs_eq_d"
467   [(set (match_operand:CC 0 "register_operand" "=z")
468         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
469                     (match_operand:DF 2 "register_operand" "f")]
470                    UNSPEC_CABS_EQ))]
471   "TARGET_MIPS3D"
472   "cabs.eq.d\t%Q0,%1,%2"
473   [(set_attr "type" "fcmp")
474    (set_attr "mode" "FPSW")])
475
476 (define_insn "mips_cabs_ueq_d"
477   [(set (match_operand:CC 0 "register_operand" "=z")
478         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
479                     (match_operand:DF 2 "register_operand" "f")]
480                    UNSPEC_CABS_UEQ))]
481   "TARGET_MIPS3D"
482   "cabs.ueq.d\t%Q0,%1,%2"
483   [(set_attr "type" "fcmp")
484    (set_attr "mode" "FPSW")])
485
486 (define_insn "mips_cabs_olt_d"
487   [(set (match_operand:CC 0 "register_operand" "=z")
488         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
489                     (match_operand:DF 2 "register_operand" "f")]
490                    UNSPEC_CABS_OLT))]
491   "TARGET_MIPS3D"
492   "cabs.olt.d\t%Q0,%1,%2"
493   [(set_attr "type" "fcmp")
494    (set_attr "mode" "FPSW")])
495
496 (define_insn "mips_cabs_ult_d"
497   [(set (match_operand:CC 0 "register_operand" "=z")
498         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
499                     (match_operand:DF 2 "register_operand" "f")]
500                    UNSPEC_CABS_ULT))]
501   "TARGET_MIPS3D"
502   "cabs.ult.d\t%Q0,%1,%2"
503   [(set_attr "type" "fcmp")
504    (set_attr "mode" "FPSW")])
505
506 (define_insn "mips_cabs_ole_d"
507   [(set (match_operand:CC 0 "register_operand" "=z")
508         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
509                     (match_operand:DF 2 "register_operand" "f")]
510                    UNSPEC_CABS_OLE))]
511   "TARGET_MIPS3D"
512   "cabs.ole.d\t%Q0,%1,%2"
513   [(set_attr "type" "fcmp")
514    (set_attr "mode" "FPSW")])
515
516 (define_insn "mips_cabs_ule_d"
517   [(set (match_operand:CC 0 "register_operand" "=z")
518         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
519                     (match_operand:DF 2 "register_operand" "f")]
520                    UNSPEC_CABS_ULE))]
521   "TARGET_MIPS3D"
522   "cabs.ule.d\t%Q0,%1,%2"
523   [(set_attr "type" "fcmp")
524    (set_attr "mode" "FPSW")])
525
526 (define_insn "mips_cabs_sf_d"
527   [(set (match_operand:CC 0 "register_operand" "=z")
528         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
529                     (match_operand:DF 2 "register_operand" "f")]
530                    UNSPEC_CABS_SF))]
531   "TARGET_MIPS3D"
532   "cabs.sf.d\t%Q0,%1,%2"
533   [(set_attr "type" "fcmp")
534    (set_attr "mode" "FPSW")])
535
536 (define_insn "mips_cabs_ngle_d"
537   [(set (match_operand:CC 0 "register_operand" "=z")
538         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
539                     (match_operand:DF 2 "register_operand" "f")]
540                    UNSPEC_CABS_NGLE))]
541   "TARGET_MIPS3D"
542   "cabs.ngle.d\t%Q0,%1,%2"
543   [(set_attr "type" "fcmp")
544    (set_attr "mode" "FPSW")])
545
546 (define_insn "mips_cabs_seq_d"
547   [(set (match_operand:CC 0 "register_operand" "=z")
548         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
549                     (match_operand:DF 2 "register_operand" "f")]
550                    UNSPEC_CABS_SEQ))]
551   "TARGET_MIPS3D"
552   "cabs.seq.d\t%Q0,%1,%2"
553   [(set_attr "type" "fcmp")
554    (set_attr "mode" "FPSW")])
555
556 (define_insn "mips_cabs_ngl_d"
557   [(set (match_operand:CC 0 "register_operand" "=z")
558         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
559                     (match_operand:DF 2 "register_operand" "f")]
560                    UNSPEC_CABS_NGL))]
561   "TARGET_MIPS3D"
562   "cabs.ngl.d\t%Q0,%1,%2"
563   [(set_attr "type" "fcmp")
564    (set_attr "mode" "FPSW")])
565
566 (define_insn "mips_cabs_lt_d"
567   [(set (match_operand:CC 0 "register_operand" "=z")
568         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
569                     (match_operand:DF 2 "register_operand" "f")]
570                    UNSPEC_CABS_LT))]
571   "TARGET_MIPS3D"
572   "cabs.lt.d\t%Q0,%1,%2"
573   [(set_attr "type" "fcmp")
574    (set_attr "mode" "FPSW")])
575
576 (define_insn "mips_cabs_nge_d"
577   [(set (match_operand:CC 0 "register_operand" "=z")
578         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
579                     (match_operand:DF 2 "register_operand" "f")]
580                    UNSPEC_CABS_NGE))]
581   "TARGET_MIPS3D"
582   "cabs.nge.d\t%Q0,%1,%2"
583   [(set_attr "type" "fcmp")
584    (set_attr "mode" "FPSW")])
585
586 (define_insn "mips_cabs_le_d"
587   [(set (match_operand:CC 0 "register_operand" "=z")
588         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
589                     (match_operand:DF 2 "register_operand" "f")]
590                    UNSPEC_CABS_LE))]
591   "TARGET_MIPS3D"
592   "cabs.le.d\t%Q0,%1,%2"
593   [(set_attr "type" "fcmp")
594    (set_attr "mode" "FPSW")])
595
596 (define_insn "mips_cabs_ngt_d"
597   [(set (match_operand:CC 0 "register_operand" "=z")
598         (unspec:CC [(match_operand:DF 1 "register_operand" "f")
599                     (match_operand:DF 2 "register_operand" "f")]
600                    UNSPEC_CABS_NGT))]
601   "TARGET_MIPS3D"
602   "cabs.ngt.d\t%Q0,%1,%2"
603   [(set_attr "type" "fcmp")
604    (set_attr "mode" "FPSW")])
605
606 ;----------------------------------------------------------------------------
607 ; Floating Point Comparisions for Four Singles
608 ;----------------------------------------------------------------------------
609
610 (define_insn "mips_c_f_4s"
611   [(set (match_operand:CCV4 0 "register_operand" "=z")
612         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
613                       (match_operand:V2SF 2 "register_operand" "f")
614                       (match_operand:V2SF 3 "register_operand" "f")
615                       (match_operand:V2SF 4 "register_operand" "f")]
616                      UNSPEC_C_F))]
617   "TARGET_PAIRED_SINGLE_FLOAT"
618   "c.f.ps\t%v0,%1,%2\n\tc.f.ps\t%V0,%3,%4"
619   [(set_attr "type" "fcmp")
620    (set_attr "length" "8")
621    (set_attr "mode" "FPSW")])
622
623 (define_insn "mips_c_un_4s"
624   [(set (match_operand:CCV4 0 "register_operand" "=z")
625         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
626                       (match_operand:V2SF 2 "register_operand" "f")
627                       (match_operand:V2SF 3 "register_operand" "f")
628                       (match_operand:V2SF 4 "register_operand" "f")]
629                      UNSPEC_C_UN))]
630   "TARGET_PAIRED_SINGLE_FLOAT"
631   "c.un.ps\t%v0,%1,%2\n\tc.un.ps\t%V0,%3,%4"
632   [(set_attr "type" "fcmp")
633    (set_attr "length" "8")
634    (set_attr "mode" "FPSW")])
635
636 (define_insn "mips_c_eq_4s"
637   [(set (match_operand:CCV4 0 "register_operand" "=z")
638         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
639                       (match_operand:V2SF 2 "register_operand" "f")
640                       (match_operand:V2SF 3 "register_operand" "f")
641                       (match_operand:V2SF 4 "register_operand" "f")]
642                      UNSPEC_C_EQ))]
643   "TARGET_PAIRED_SINGLE_FLOAT"
644   "c.eq.ps\t%v0,%1,%2\n\tc.eq.ps\t%V0,%3,%4"
645   [(set_attr "type" "fcmp")
646    (set_attr "length" "8")
647    (set_attr "mode" "FPSW")])
648
649 (define_insn "mips_c_ueq_4s"
650   [(set (match_operand:CCV4 0 "register_operand" "=z")
651         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
652                       (match_operand:V2SF 2 "register_operand" "f")
653                       (match_operand:V2SF 3 "register_operand" "f")
654                       (match_operand:V2SF 4 "register_operand" "f")]
655                      UNSPEC_C_UEQ))]
656   "TARGET_PAIRED_SINGLE_FLOAT"
657   "c.ueq.ps\t%v0,%1,%2\n\tc.ueq.ps\t%V0,%3,%4"
658   [(set_attr "type" "fcmp")
659    (set_attr "length" "8")
660    (set_attr "mode" "FPSW")])
661
662 (define_insn "mips_c_olt_4s"
663   [(set (match_operand:CCV4 0 "register_operand" "=z")
664         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
665                       (match_operand:V2SF 2 "register_operand" "f")
666                       (match_operand:V2SF 3 "register_operand" "f")
667                       (match_operand:V2SF 4 "register_operand" "f")]
668                      UNSPEC_C_OLT))]
669   "TARGET_PAIRED_SINGLE_FLOAT"
670   "c.olt.ps\t%v0,%1,%2\n\tc.olt.ps\t%V0,%3,%4"
671   [(set_attr "type" "fcmp")
672    (set_attr "length" "8")
673    (set_attr "mode" "FPSW")])
674
675 (define_insn "mips_c_ult_4s"
676   [(set (match_operand:CCV4 0 "register_operand" "=z")
677         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
678                       (match_operand:V2SF 2 "register_operand" "f")
679                       (match_operand:V2SF 3 "register_operand" "f")
680                       (match_operand:V2SF 4 "register_operand" "f")]
681                      UNSPEC_C_ULT))]
682   "TARGET_PAIRED_SINGLE_FLOAT"
683   "c.ult.ps\t%v0,%1,%2\n\tc.ult.ps\t%V0,%3,%4"
684   [(set_attr "type" "fcmp")
685    (set_attr "length" "8")
686    (set_attr "mode" "FPSW")])
687
688 (define_insn "mips_c_ole_4s"
689   [(set (match_operand:CCV4 0 "register_operand" "=z")
690         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
691                       (match_operand:V2SF 2 "register_operand" "f")
692                       (match_operand:V2SF 3 "register_operand" "f")
693                       (match_operand:V2SF 4 "register_operand" "f")]
694                      UNSPEC_C_OLE))]
695   "TARGET_PAIRED_SINGLE_FLOAT"
696   "c.ole.ps\t%v0,%1,%2\n\tc.ole.ps\t%V0,%3,%4"
697   [(set_attr "type" "fcmp")
698    (set_attr "length" "8")
699    (set_attr "mode" "FPSW")])
700
701 (define_insn "mips_c_ule_4s"
702   [(set (match_operand:CCV4 0 "register_operand" "=z")
703         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
704                       (match_operand:V2SF 2 "register_operand" "f")
705                       (match_operand:V2SF 3 "register_operand" "f")
706                       (match_operand:V2SF 4 "register_operand" "f")]
707                      UNSPEC_C_ULE))]
708   "TARGET_PAIRED_SINGLE_FLOAT"
709   "c.ule.ps\t%v0,%1,%2\n\tc.ule.ps\t%V0,%3,%4"
710   [(set_attr "type" "fcmp")
711    (set_attr "length" "8")
712    (set_attr "mode" "FPSW")])
713
714 (define_insn "mips_c_sf_4s"
715   [(set (match_operand:CCV4 0 "register_operand" "=z")
716         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
717                       (match_operand:V2SF 2 "register_operand" "f")
718                       (match_operand:V2SF 3 "register_operand" "f")
719                       (match_operand:V2SF 4 "register_operand" "f")]
720                      UNSPEC_C_SF))]
721   "TARGET_PAIRED_SINGLE_FLOAT"
722   "c.sf.ps\t%v0,%1,%2\n\tc.sf.ps\t%V0,%3,%4"
723   [(set_attr "type" "fcmp")
724    (set_attr "length" "8")
725    (set_attr "mode" "FPSW")])
726
727 (define_insn "mips_c_ngle_4s"
728   [(set (match_operand:CCV4 0 "register_operand" "=z")
729         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
730                       (match_operand:V2SF 2 "register_operand" "f")
731                       (match_operand:V2SF 3 "register_operand" "f")
732                       (match_operand:V2SF 4 "register_operand" "f")]
733                      UNSPEC_C_NGLE))]
734   "TARGET_PAIRED_SINGLE_FLOAT"
735   "c.ngle.ps\t%v0,%1,%2\n\tc.ngle.ps\t%V0,%3,%4"
736   [(set_attr "type" "fcmp")
737    (set_attr "length" "8")
738    (set_attr "mode" "FPSW")])
739
740 (define_insn "mips_c_seq_4s"
741   [(set (match_operand:CCV4 0 "register_operand" "=z")
742         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
743                       (match_operand:V2SF 2 "register_operand" "f")
744                       (match_operand:V2SF 3 "register_operand" "f")
745                       (match_operand:V2SF 4 "register_operand" "f")]
746                      UNSPEC_C_SEQ))]
747   "TARGET_PAIRED_SINGLE_FLOAT"
748   "c.seq.ps\t%v0,%1,%2\n\tc.seq.ps\t%V0,%3,%4"
749   [(set_attr "type" "fcmp")
750    (set_attr "length" "8")
751    (set_attr "mode" "FPSW")])
752
753 (define_insn "mips_c_ngl_4s"
754   [(set (match_operand:CCV4 0 "register_operand" "=z")
755         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
756                       (match_operand:V2SF 2 "register_operand" "f")
757                       (match_operand:V2SF 3 "register_operand" "f")
758                       (match_operand:V2SF 4 "register_operand" "f")]
759                      UNSPEC_C_NGL))]
760   "TARGET_PAIRED_SINGLE_FLOAT"
761   "c.ngl.ps\t%v0,%1,%2\n\tc.ngl.ps\t%V0,%3,%4"
762   [(set_attr "type" "fcmp")
763    (set_attr "length" "8")
764    (set_attr "mode" "FPSW")])
765
766 (define_insn "mips_c_lt_4s"
767   [(set (match_operand:CCV4 0 "register_operand" "=z")
768         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
769                       (match_operand:V2SF 2 "register_operand" "f")
770                       (match_operand:V2SF 3 "register_operand" "f")
771                       (match_operand:V2SF 4 "register_operand" "f")]
772                      UNSPEC_C_LT))]
773   "TARGET_PAIRED_SINGLE_FLOAT"
774   "c.lt.ps\t%v0,%1,%2\n\tc.lt.ps\t%V0,%3,%4"
775   [(set_attr "type" "fcmp")
776    (set_attr "length" "8")
777    (set_attr "mode" "FPSW")])
778
779 (define_insn "mips_c_nge_4s"
780   [(set (match_operand:CCV4 0 "register_operand" "=z")
781         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
782                       (match_operand:V2SF 2 "register_operand" "f")
783                       (match_operand:V2SF 3 "register_operand" "f")
784                       (match_operand:V2SF 4 "register_operand" "f")]
785                      UNSPEC_C_NGE))]
786   "TARGET_PAIRED_SINGLE_FLOAT"
787   "c.nge.ps\t%v0,%1,%2\n\tc.nge.ps\t%V0,%3,%4"
788   [(set_attr "type" "fcmp")
789    (set_attr "length" "8")
790    (set_attr "mode" "FPSW")])
791
792 (define_insn "mips_c_le_4s"
793   [(set (match_operand:CCV4 0 "register_operand" "=z")
794         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
795                       (match_operand:V2SF 2 "register_operand" "f")
796                       (match_operand:V2SF 3 "register_operand" "f")
797                       (match_operand:V2SF 4 "register_operand" "f")]
798                      UNSPEC_C_LE))]
799   "TARGET_PAIRED_SINGLE_FLOAT"
800   "c.le.ps\t%v0,%1,%2\n\tc.le.ps\t%V0,%3,%4"
801   [(set_attr "type" "fcmp")
802    (set_attr "length" "8")
803    (set_attr "mode" "FPSW")])
804
805 (define_insn "mips_c_ngt_4s"
806   [(set (match_operand:CCV4 0 "register_operand" "=z")
807         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
808                       (match_operand:V2SF 2 "register_operand" "f")
809                       (match_operand:V2SF 3 "register_operand" "f")
810                       (match_operand:V2SF 4 "register_operand" "f")]
811                      UNSPEC_C_NGT))]
812   "TARGET_PAIRED_SINGLE_FLOAT"
813   "c.ngt.ps\t%v0,%1,%2\n\tc.ngt.ps\t%V0,%3,%4"
814   [(set_attr "type" "fcmp")
815    (set_attr "length" "8")
816    (set_attr "mode" "FPSW")])
817
818 ;----------------------------------------------------------------------------
819 ; Floating Point Absolute Comparisions for Four Singles
820 ;----------------------------------------------------------------------------
821 (define_insn "mips_cabs_f_4s"
822   [(set (match_operand:CCV4 0 "register_operand" "=z")
823         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
824                       (match_operand:V2SF 2 "register_operand" "f")
825                       (match_operand:V2SF 3 "register_operand" "f")
826                       (match_operand:V2SF 4 "register_operand" "f")]
827                      UNSPEC_CABS_F))]
828   "TARGET_MIPS3D"
829   "cabs.f.ps\t%v0,%1,%2\n\tcabs.f.ps\t%V0,%3,%4"
830   [(set_attr "type" "fcmp")
831    (set_attr "length" "8")
832    (set_attr "mode" "FPSW")])
833
834 (define_insn "mips_cabs_un_4s"
835   [(set (match_operand:CCV4 0 "register_operand" "=z")
836         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
837                       (match_operand:V2SF 2 "register_operand" "f")
838                       (match_operand:V2SF 3 "register_operand" "f")
839                       (match_operand:V2SF 4 "register_operand" "f")]
840                      UNSPEC_CABS_UN))]
841   "TARGET_MIPS3D"
842   "cabs.un.ps\t%v0,%1,%2\n\tcabs.un.ps\t%V0,%3,%4"
843   [(set_attr "type" "fcmp")
844    (set_attr "length" "8")
845    (set_attr "mode" "FPSW")])
846
847 (define_insn "mips_cabs_eq_4s"
848   [(set (match_operand:CCV4 0 "register_operand" "=z")
849         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
850                       (match_operand:V2SF 2 "register_operand" "f")
851                       (match_operand:V2SF 3 "register_operand" "f")
852                       (match_operand:V2SF 4 "register_operand" "f")]
853                      UNSPEC_CABS_EQ))]
854   "TARGET_MIPS3D"
855   "cabs.eq.ps\t%v0,%1,%2\n\tcabs.eq.ps\t%V0,%3,%4"
856   [(set_attr "type" "fcmp")
857    (set_attr "length" "8")
858    (set_attr "mode" "FPSW")])
859
860 (define_insn "mips_cabs_ueq_4s"
861   [(set (match_operand:CCV4 0 "register_operand" "=z")
862         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
863                       (match_operand:V2SF 2 "register_operand" "f")
864                       (match_operand:V2SF 3 "register_operand" "f")
865                       (match_operand:V2SF 4 "register_operand" "f")]
866                      UNSPEC_CABS_UEQ))]
867   "TARGET_MIPS3D"
868   "cabs.ueq.ps\t%v0,%1,%2\n\tcabs.ueq.ps\t%V0,%3,%4"
869   [(set_attr "type" "fcmp")
870    (set_attr "length" "8")
871    (set_attr "mode" "FPSW")])
872
873 (define_insn "mips_cabs_olt_4s"
874   [(set (match_operand:CCV4 0 "register_operand" "=z")
875         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
876                       (match_operand:V2SF 2 "register_operand" "f")
877                       (match_operand:V2SF 3 "register_operand" "f")
878                       (match_operand:V2SF 4 "register_operand" "f")]
879                      UNSPEC_CABS_OLT))]
880   "TARGET_MIPS3D"
881   "cabs.olt.ps\t%v0,%1,%2\n\tcabs.olt.ps\t%V0,%3,%4"
882   [(set_attr "type" "fcmp")
883    (set_attr "length" "8")
884    (set_attr "mode" "FPSW")])
885
886 (define_insn "mips_cabs_ult_4s"
887   [(set (match_operand:CCV4 0 "register_operand" "=z")
888         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
889                       (match_operand:V2SF 2 "register_operand" "f")
890                       (match_operand:V2SF 3 "register_operand" "f")
891                       (match_operand:V2SF 4 "register_operand" "f")]
892                      UNSPEC_CABS_ULT))]
893   "TARGET_MIPS3D"
894   "cabs.ult.ps\t%v0,%1,%2\n\tcabs.ult.ps\t%V0,%3,%4"
895   [(set_attr "type" "fcmp")
896    (set_attr "length" "8")
897    (set_attr "mode" "FPSW")])
898
899 (define_insn "mips_cabs_ole_4s"
900   [(set (match_operand:CCV4 0 "register_operand" "=z")
901         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
902                       (match_operand:V2SF 2 "register_operand" "f")
903                       (match_operand:V2SF 3 "register_operand" "f")
904                       (match_operand:V2SF 4 "register_operand" "f")]
905                      UNSPEC_CABS_OLE))]
906   "TARGET_MIPS3D"
907   "cabs.ole.ps\t%v0,%1,%2\n\tcabs.ole.ps\t%V0,%3,%4"
908   [(set_attr "type" "fcmp")
909    (set_attr "length" "8")
910    (set_attr "mode" "FPSW")])
911
912 (define_insn "mips_cabs_ule_4s"
913   [(set (match_operand:CCV4 0 "register_operand" "=z")
914         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
915                       (match_operand:V2SF 2 "register_operand" "f")
916                       (match_operand:V2SF 3 "register_operand" "f")
917                       (match_operand:V2SF 4 "register_operand" "f")]
918                      UNSPEC_CABS_ULE))]
919   "TARGET_MIPS3D"
920   "cabs.ule.ps\t%v0,%1,%2\n\tcabs.ule.ps\t%V0,%3,%4"
921   [(set_attr "type" "fcmp")
922    (set_attr "length" "8")
923    (set_attr "mode" "FPSW")])
924
925 (define_insn "mips_cabs_sf_4s"
926   [(set (match_operand:CCV4 0 "register_operand" "=z")
927         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
928                       (match_operand:V2SF 2 "register_operand" "f")
929                       (match_operand:V2SF 3 "register_operand" "f")
930                       (match_operand:V2SF 4 "register_operand" "f")]
931                      UNSPEC_CABS_SF))]
932   "TARGET_MIPS3D"
933   "cabs.sf.ps\t%v0,%1,%2\n\tcabs.sf.ps\t%V0,%3,%4"
934   [(set_attr "type" "fcmp")
935    (set_attr "length" "8")
936    (set_attr "mode" "FPSW")])
937
938 (define_insn "mips_cabs_ngle_4s"
939   [(set (match_operand:CCV4 0 "register_operand" "=z")
940         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
941                       (match_operand:V2SF 2 "register_operand" "f")
942                       (match_operand:V2SF 3 "register_operand" "f")
943                       (match_operand:V2SF 4 "register_operand" "f")]
944                      UNSPEC_CABS_NGLE))]
945   "TARGET_MIPS3D"
946   "cabs.ngle.ps\t%v0,%1,%2\n\tcabs.ngle.ps\t%V0,%3,%4"
947   [(set_attr "type" "fcmp")
948    (set_attr "length" "8")
949    (set_attr "mode" "FPSW")])
950
951 (define_insn "mips_cabs_seq_4s"
952   [(set (match_operand:CCV4 0 "register_operand" "=z")
953         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
954                       (match_operand:V2SF 2 "register_operand" "f")
955                       (match_operand:V2SF 3 "register_operand" "f")
956                       (match_operand:V2SF 4 "register_operand" "f")]
957                      UNSPEC_CABS_SEQ))]
958   "TARGET_MIPS3D"
959   "cabs.seq.ps\t%v0,%1,%2\n\tcabs.seq.ps\t%V0,%3,%4"
960   [(set_attr "type" "fcmp")
961    (set_attr "length" "8")
962    (set_attr "mode" "FPSW")])
963
964 (define_insn "mips_cabs_ngl_4s"
965   [(set (match_operand:CCV4 0 "register_operand" "=z")
966         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
967                       (match_operand:V2SF 2 "register_operand" "f")
968                       (match_operand:V2SF 3 "register_operand" "f")
969                       (match_operand:V2SF 4 "register_operand" "f")]
970                      UNSPEC_CABS_NGL))]
971   "TARGET_MIPS3D"
972   "cabs.ngl.ps\t%v0,%1,%2\n\tcabs.ngl.ps\t%V0,%3,%4"
973   [(set_attr "type" "fcmp")
974    (set_attr "length" "8")
975    (set_attr "mode" "FPSW")])
976
977 (define_insn "mips_cabs_lt_4s"
978   [(set (match_operand:CCV4 0 "register_operand" "=z")
979         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
980                       (match_operand:V2SF 2 "register_operand" "f")
981                       (match_operand:V2SF 3 "register_operand" "f")
982                       (match_operand:V2SF 4 "register_operand" "f")]
983                      UNSPEC_CABS_LT))]
984   "TARGET_MIPS3D"
985   "cabs.lt.ps\t%v0,%1,%2\n\tcabs.lt.ps\t%V0,%3,%4"
986   [(set_attr "type" "fcmp")
987    (set_attr "length" "8")
988    (set_attr "mode" "FPSW")])
989
990 (define_insn "mips_cabs_nge_4s"
991   [(set (match_operand:CCV4 0 "register_operand" "=z")
992         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
993                       (match_operand:V2SF 2 "register_operand" "f")
994                       (match_operand:V2SF 3 "register_operand" "f")
995                       (match_operand:V2SF 4 "register_operand" "f")]
996                      UNSPEC_CABS_NGE))]
997   "TARGET_MIPS3D"
998   "cabs.nge.ps\t%v0,%1,%2\n\tcabs.nge.ps\t%V0,%3,%4"
999   [(set_attr "type" "fcmp")
1000    (set_attr "length" "8")
1001    (set_attr "mode" "FPSW")])
1002
1003 (define_insn "mips_cabs_le_4s"
1004   [(set (match_operand:CCV4 0 "register_operand" "=z")
1005         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
1006                       (match_operand:V2SF 2 "register_operand" "f")
1007                       (match_operand:V2SF 3 "register_operand" "f")
1008                       (match_operand:V2SF 4 "register_operand" "f")]
1009                      UNSPEC_CABS_LE))]
1010   "TARGET_MIPS3D"
1011   "cabs.le.ps\t%v0,%1,%2\n\tcabs.le.ps\t%V0,%3,%4"
1012   [(set_attr "type" "fcmp")
1013    (set_attr "length" "8")
1014    (set_attr "mode" "FPSW")])
1015
1016 (define_insn "mips_cabs_ngt_4s"
1017   [(set (match_operand:CCV4 0 "register_operand" "=z")
1018         (unspec:CCV4 [(match_operand:V2SF 1 "register_operand" "f")
1019                       (match_operand:V2SF 2 "register_operand" "f")
1020                       (match_operand:V2SF 3 "register_operand" "f")
1021                       (match_operand:V2SF 4 "register_operand" "f")]
1022                      UNSPEC_CABS_NGT))]
1023   "TARGET_MIPS3D"
1024   "cabs.ngt.ps\t%v0,%1,%2\n\tcabs.ngt.ps\t%V0,%3,%4"
1025   [(set_attr "type" "fcmp")
1026    (set_attr "length" "8")
1027    (set_attr "mode" "FPSW")])
1028
1029 ;----------------------------------------------------------------------------
1030 ; Floating Point Comparisions for Paired Singles
1031 ;----------------------------------------------------------------------------
1032 (define_insn "mips_c_f_ps"
1033   [(set (match_operand:CCV2 0 "register_operand" "=z")
1034         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1035                       (match_operand:V2SF 2 "register_operand" "f")] 
1036                      UNSPEC_C_F))]
1037   "TARGET_PAIRED_SINGLE_FLOAT"
1038   "c.f.ps\t%Z0%1,%2"
1039   [(set_attr "type" "fcmp")
1040    (set_attr "mode" "FPSW")])
1041
1042 (define_insn "mips_c_un_ps"
1043   [(set (match_operand:CCV2 0 "register_operand" "=z")
1044         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1045                       (match_operand:V2SF 2 "register_operand" "f")] 
1046                      UNSPEC_C_UN))]
1047   "TARGET_PAIRED_SINGLE_FLOAT"
1048   "c.un.ps\t%Z0%1,%2"
1049   [(set_attr "type" "fcmp")
1050    (set_attr "mode" "FPSW")])
1051
1052 (define_insn "mips_c_eq_ps"
1053   [(set (match_operand:CCV2 0 "register_operand" "=z")
1054         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1055                       (match_operand:V2SF 2 "register_operand" "f")] 
1056                      UNSPEC_C_EQ))]
1057   "TARGET_PAIRED_SINGLE_FLOAT"
1058   "c.eq.ps\t%Z0%1,%2"
1059   [(set_attr "type" "fcmp")
1060    (set_attr "mode" "FPSW")])
1061
1062 (define_insn "mips_c_ueq_ps"
1063   [(set (match_operand:CCV2 0 "register_operand" "=z")
1064         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1065                       (match_operand:V2SF 2 "register_operand" "f")] 
1066                      UNSPEC_C_UEQ))]
1067   "TARGET_PAIRED_SINGLE_FLOAT"
1068   "c.ueq.ps\t%Z0%1,%2"
1069   [(set_attr "type" "fcmp")
1070    (set_attr "mode" "FPSW")])
1071
1072 (define_insn "mips_c_olt_ps"
1073   [(set (match_operand:CCV2 0 "register_operand" "=z")
1074         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1075                       (match_operand:V2SF 2 "register_operand" "f")] 
1076                      UNSPEC_C_OLT))]
1077   "TARGET_PAIRED_SINGLE_FLOAT"
1078   "c.olt.ps\t%Z0%1,%2"
1079   [(set_attr "type" "fcmp")
1080    (set_attr "mode" "FPSW")])
1081
1082 (define_insn "mips_c_ult_ps"
1083   [(set (match_operand:CCV2 0 "register_operand" "=z")
1084         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1085                       (match_operand:V2SF 2 "register_operand" "f")] 
1086                      UNSPEC_C_ULT))]
1087   "TARGET_PAIRED_SINGLE_FLOAT"
1088   "c.ult.ps\t%Z0%1,%2"
1089   [(set_attr "type" "fcmp")
1090    (set_attr "mode" "FPSW")])
1091
1092 (define_insn "mips_c_ole_ps"
1093   [(set (match_operand:CCV2 0 "register_operand" "=z")
1094         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1095                       (match_operand:V2SF 2 "register_operand" "f")] 
1096                      UNSPEC_C_OLE))]
1097   "TARGET_PAIRED_SINGLE_FLOAT"
1098   "c.ole.ps\t%Z0%1,%2"
1099   [(set_attr "type" "fcmp")
1100    (set_attr "mode" "FPSW")])
1101
1102 (define_insn "mips_c_ule_ps"
1103   [(set (match_operand:CCV2 0 "register_operand" "=z")
1104         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1105                       (match_operand:V2SF 2 "register_operand" "f")] 
1106                      UNSPEC_C_ULE))]
1107   "TARGET_PAIRED_SINGLE_FLOAT"
1108   "c.ule.ps\t%Z0%1,%2"
1109   [(set_attr "type" "fcmp")
1110    (set_attr "mode" "FPSW")])
1111
1112 (define_insn "mips_c_sf_ps"
1113   [(set (match_operand:CCV2 0 "register_operand" "=z")
1114         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1115                       (match_operand:V2SF 2 "register_operand" "f")] 
1116                      UNSPEC_C_SF))]
1117   "TARGET_PAIRED_SINGLE_FLOAT"
1118   "c.sf.ps\t%Z0%1,%2"
1119   [(set_attr "type" "fcmp")
1120    (set_attr "mode" "FPSW")])
1121
1122 (define_insn "mips_c_ngle_ps"
1123   [(set (match_operand:CCV2 0 "register_operand" "=z")
1124         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1125                       (match_operand:V2SF 2 "register_operand" "f")] 
1126                      UNSPEC_C_NGLE))]
1127   "TARGET_PAIRED_SINGLE_FLOAT"
1128   "c.ngle.ps\t%Z0%1,%2"
1129   [(set_attr "type" "fcmp")
1130    (set_attr "mode" "FPSW")])
1131
1132 (define_insn "mips_c_seq_ps"
1133   [(set (match_operand:CCV2 0 "register_operand" "=z")
1134         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1135                       (match_operand:V2SF 2 "register_operand" "f")] 
1136                      UNSPEC_C_SEQ))]
1137   "TARGET_PAIRED_SINGLE_FLOAT"
1138   "c.seq.ps\t%Z0%1,%2"
1139   [(set_attr "type" "fcmp")
1140    (set_attr "mode" "FPSW")])
1141
1142 (define_insn "mips_c_ngl_ps"
1143   [(set (match_operand:CCV2 0 "register_operand" "=z")
1144         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1145                       (match_operand:V2SF 2 "register_operand" "f")] 
1146                      UNSPEC_C_NGL))]
1147   "TARGET_PAIRED_SINGLE_FLOAT"
1148   "c.ngl.ps\t%Z0%1,%2"
1149   [(set_attr "type" "fcmp")
1150    (set_attr "mode" "FPSW")])
1151
1152 (define_insn "mips_c_lt_ps"
1153   [(set (match_operand:CCV2 0 "register_operand" "=z")
1154         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1155                       (match_operand:V2SF 2 "register_operand" "f")] 
1156                      UNSPEC_C_LT))]
1157   "TARGET_PAIRED_SINGLE_FLOAT"
1158   "c.lt.ps\t%Z0%1,%2"
1159   [(set_attr "type" "fcmp")
1160    (set_attr "mode" "FPSW")])
1161
1162 (define_insn "mips_c_nge_ps"
1163   [(set (match_operand:CCV2 0 "register_operand" "=z")
1164         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1165                       (match_operand:V2SF 2 "register_operand" "f")] 
1166                      UNSPEC_C_NGE))]
1167   "TARGET_PAIRED_SINGLE_FLOAT"
1168   "c.nge.ps\t%Z0%1,%2"
1169   [(set_attr "type" "fcmp")
1170    (set_attr "mode" "FPSW")])
1171
1172 (define_insn "mips_c_le_ps"
1173   [(set (match_operand:CCV2 0 "register_operand" "=z")
1174         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1175                       (match_operand:V2SF 2 "register_operand" "f")] 
1176                      UNSPEC_C_LE))]
1177   "TARGET_PAIRED_SINGLE_FLOAT"
1178   "c.le.ps\t%Z0%1,%2"
1179   [(set_attr "type" "fcmp")
1180    (set_attr "mode" "FPSW")])
1181
1182 (define_insn "mips_c_ngt_ps"
1183   [(set (match_operand:CCV2 0 "register_operand" "=z")
1184         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1185                       (match_operand:V2SF 2 "register_operand" "f")] 
1186                      UNSPEC_C_NGT))]
1187   "TARGET_PAIRED_SINGLE_FLOAT"
1188   "c.ngt.ps\t%Z0%1,%2"
1189   [(set_attr "type" "fcmp")
1190    (set_attr "mode" "FPSW")])
1191
1192 ;----------------------------------------------------------------------------
1193 ; Floating Point Absolute Comparisions for Paired Singles
1194 ;----------------------------------------------------------------------------
1195 (define_insn "mips_cabs_f_ps"
1196   [(set (match_operand:CCV2 0 "register_operand" "=z")
1197         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1198                       (match_operand:V2SF 2 "register_operand" "f")] 
1199                      UNSPEC_CABS_F))]
1200   "TARGET_MIPS3D"
1201   "cabs.f.ps\t%Q0,%1,%2"
1202   [(set_attr "type" "fcmp")
1203    (set_attr "mode" "FPSW")])
1204
1205 (define_insn "mips_cabs_un_ps"
1206   [(set (match_operand:CCV2 0 "register_operand" "=z")
1207         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1208                       (match_operand:V2SF 2 "register_operand" "f")] 
1209                      UNSPEC_CABS_UN))]
1210   "TARGET_MIPS3D"
1211   "cabs.un.ps\t%Q0,%1,%2"
1212   [(set_attr "type" "fcmp")
1213    (set_attr "mode" "FPSW")])
1214
1215 (define_insn "mips_cabs_eq_ps"
1216   [(set (match_operand:CCV2 0 "register_operand" "=z")
1217         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1218                       (match_operand:V2SF 2 "register_operand" "f")] 
1219                      UNSPEC_CABS_EQ))]
1220   "TARGET_MIPS3D"
1221   "cabs.eq.ps\t%Q0,%1,%2"
1222   [(set_attr "type" "fcmp")
1223    (set_attr "mode" "FPSW")])
1224
1225 (define_insn "mips_cabs_ueq_ps"
1226   [(set (match_operand:CCV2 0 "register_operand" "=z")
1227         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1228                       (match_operand:V2SF 2 "register_operand" "f")] 
1229                      UNSPEC_CABS_UEQ))]
1230   "TARGET_MIPS3D"
1231   "cabs.ueq.ps\t%Q0,%1,%2"
1232   [(set_attr "type" "fcmp")
1233    (set_attr "mode" "FPSW")])
1234
1235 (define_insn "mips_cabs_olt_ps"
1236   [(set (match_operand:CCV2 0 "register_operand" "=z")
1237         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1238                       (match_operand:V2SF 2 "register_operand" "f")] 
1239                      UNSPEC_CABS_OLT))]
1240   "TARGET_MIPS3D"
1241   "cabs.olt.ps\t%Q0,%1,%2"
1242   [(set_attr "type" "fcmp")
1243    (set_attr "mode" "FPSW")])
1244
1245 (define_insn "mips_cabs_ult_ps"
1246   [(set (match_operand:CCV2 0 "register_operand" "=z")
1247         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1248                       (match_operand:V2SF 2 "register_operand" "f")] 
1249                      UNSPEC_CABS_ULT))]
1250   "TARGET_MIPS3D"
1251   "cabs.ult.ps\t%Q0,%1,%2"
1252   [(set_attr "type" "fcmp")
1253    (set_attr "mode" "FPSW")])
1254
1255 (define_insn "mips_cabs_ole_ps"
1256   [(set (match_operand:CCV2 0 "register_operand" "=z")
1257         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1258                       (match_operand:V2SF 2 "register_operand" "f")] 
1259                      UNSPEC_CABS_OLE))]
1260   "TARGET_MIPS3D"
1261   "cabs.ole.ps\t%Q0,%1,%2"
1262   [(set_attr "type" "fcmp")
1263    (set_attr "mode" "FPSW")])
1264
1265 (define_insn "mips_cabs_ule_ps"
1266   [(set (match_operand:CCV2 0 "register_operand" "=z")
1267         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1268                       (match_operand:V2SF 2 "register_operand" "f")] 
1269                      UNSPEC_CABS_ULE))]
1270   "TARGET_MIPS3D"
1271   "cabs.ule.ps\t%Q0,%1,%2"
1272   [(set_attr "type" "fcmp")
1273    (set_attr "mode" "FPSW")])
1274
1275 (define_insn "mips_cabs_sf_ps"
1276   [(set (match_operand:CCV2 0 "register_operand" "=z")
1277         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1278                       (match_operand:V2SF 2 "register_operand" "f")] 
1279                      UNSPEC_CABS_SF))]
1280   "TARGET_MIPS3D"
1281   "cabs.sf.ps\t%Q0,%1,%2"
1282   [(set_attr "type" "fcmp")
1283    (set_attr "mode" "FPSW")])
1284
1285 (define_insn "mips_cabs_ngle_ps"
1286   [(set (match_operand:CCV2 0 "register_operand" "=z")
1287         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1288                       (match_operand:V2SF 2 "register_operand" "f")] 
1289                      UNSPEC_CABS_NGLE))]
1290   "TARGET_MIPS3D"
1291   "cabs.ngle.ps\t%Q0,%1,%2"
1292   [(set_attr "type" "fcmp")
1293    (set_attr "mode" "FPSW")])
1294
1295 (define_insn "mips_cabs_seq_ps"
1296   [(set (match_operand:CCV2 0 "register_operand" "=z")
1297         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1298                       (match_operand:V2SF 2 "register_operand" "f")] 
1299                      UNSPEC_CABS_SEQ))]
1300   "TARGET_MIPS3D"
1301   "cabs.seq.ps\t%Q0,%1,%2"
1302   [(set_attr "type" "fcmp")
1303    (set_attr "mode" "FPSW")])
1304
1305 (define_insn "mips_cabs_ngl_ps"
1306   [(set (match_operand:CCV2 0 "register_operand" "=z")
1307         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1308                       (match_operand:V2SF 2 "register_operand" "f")] 
1309                      UNSPEC_CABS_NGL))]
1310   "TARGET_MIPS3D"
1311   "cabs.ngl.ps\t%Q0,%1,%2"
1312   [(set_attr "type" "fcmp")
1313    (set_attr "mode" "FPSW")])
1314
1315 (define_insn "mips_cabs_lt_ps"
1316   [(set (match_operand:CCV2 0 "register_operand" "=z")
1317         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1318                       (match_operand:V2SF 2 "register_operand" "f")] 
1319                      UNSPEC_CABS_LT))]
1320   "TARGET_MIPS3D"
1321   "cabs.lt.ps\t%Q0,%1,%2"
1322   [(set_attr "type" "fcmp")
1323    (set_attr "mode" "FPSW")])
1324
1325 (define_insn "mips_cabs_nge_ps"
1326   [(set (match_operand:CCV2 0 "register_operand" "=z")
1327         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1328                       (match_operand:V2SF 2 "register_operand" "f")] 
1329                      UNSPEC_CABS_NGE))]
1330   "TARGET_MIPS3D"
1331   "cabs.nge.ps\t%Q0,%1,%2"
1332   [(set_attr "type" "fcmp")
1333    (set_attr "mode" "FPSW")])
1334
1335 (define_insn "mips_cabs_le_ps"
1336   [(set (match_operand:CCV2 0 "register_operand" "=z")
1337         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1338                       (match_operand:V2SF 2 "register_operand" "f")] 
1339                      UNSPEC_CABS_LE))]
1340   "TARGET_MIPS3D"
1341   "cabs.le.ps\t%Q0,%1,%2"
1342   [(set_attr "type" "fcmp")
1343    (set_attr "mode" "FPSW")])
1344
1345 (define_insn "mips_cabs_ngt_ps"
1346   [(set (match_operand:CCV2 0 "register_operand" "=z")
1347         (unspec:CCV2 [(match_operand:V2SF 1 "register_operand" "f")
1348                       (match_operand:V2SF 2 "register_operand" "f")] 
1349                      UNSPEC_CABS_NGT))]
1350   "TARGET_MIPS3D"
1351   "cabs.ngt.ps\t%Q0,%1,%2"
1352   [(set_attr "type" "fcmp")
1353    (set_attr "mode" "FPSW")])
1354
1355 ;----------------------------------------------------------------------------
1356 ; Floating Point Branch Instructions.
1357 ;----------------------------------------------------------------------------
1358
1359 ; Branch on Any of Four Floating Point Condition Codes True
1360 (define_insn "bc1any4t"
1361   [(set (pc)
1362         (if_then_else (ne:CCV4 (match_operand:CCV4 0 "register_operand" "z")
1363                                (const_int 0))
1364                       (label_ref (match_operand 1 "" ""))
1365                       (pc)))]
1366   "TARGET_MIPS3D"
1367   "%*bc1any4t\t%Q0,%1%/"
1368   [(set_attr "type" "branch")
1369    (set_attr "mode" "none")])
1370
1371 ; Branch on Any of Four Floating Point Condition Codes False
1372 (define_insn "bc1any4f"
1373   [(set (pc)
1374         (if_then_else (ne:CCV4 (match_operand:CCV4 0 "register_operand" "z")
1375                                (const_int -1))
1376                       (label_ref (match_operand 1 "" ""))
1377                       (pc)))]
1378   "TARGET_MIPS3D"
1379   "%*bc1any4f\t%Q0,%1%/"
1380   [(set_attr "type" "branch")
1381    (set_attr "mode" "none")])
1382
1383 ; Branch on Any of Two Floating Point Condition Codes True
1384 (define_insn "bc1any2t"
1385   [(set (pc)
1386         (if_then_else (ne:CCV2 (match_operand:CCV2 0 "register_operand" "z")
1387                                (const_int 0))
1388                       (label_ref (match_operand 1 "" ""))
1389                       (pc)))]
1390   "TARGET_MIPS3D"
1391   "%*bc1any2t\t%Q0,%1%/"
1392   [(set_attr "type" "branch")
1393    (set_attr "mode" "none")])
1394
1395 ; Branch on Any of Two Floating Point Condition Codes False
1396 (define_insn "bc1any2f"
1397   [(set (pc)
1398         (if_then_else (ne:CCV2 (match_operand:CCV2 0 "register_operand" "z")
1399                                (const_int -1))
1400                       (label_ref (match_operand 1 "" ""))
1401                       (pc)))]
1402   "TARGET_MIPS3D"
1403   "%*bc1any2f\t%Q0,%1%/"
1404   [(set_attr "type" "branch")
1405    (set_attr "mode" "none")])
1406
1407 ;----------------------------------------------------------------------------
1408 ; Floating Point Reduced Precision Reciprocal Square Root Instructions.
1409 ;----------------------------------------------------------------------------
1410
1411 (define_insn "mips_rsqrt1_<fmt>"
1412   [(set (match_operand:ANYF 0 "register_operand" "=f")
1413         (unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
1414                      UNSPEC_RSQRT1))]
1415   "TARGET_MIPS3D"
1416   "rsqrt1.<fmt>\t%0,%1"
1417   [(set_attr "type" "frsqrt")
1418    (set_attr "mode" "<UNITMODE>")])
1419
1420 (define_insn "mips_rsqrt2_<fmt>"
1421   [(set (match_operand:ANYF 0 "register_operand" "=f")
1422         (unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
1423                       (match_operand:ANYF 2 "register_operand" "f")]
1424                      UNSPEC_RSQRT2))]
1425   "TARGET_MIPS3D"
1426   "rsqrt2.<fmt>\t%0,%1,%2"
1427   [(set_attr "type" "frsqrt")
1428    (set_attr "mode" "<UNITMODE>")])
1429
1430 (define_insn "mips_recip1_<fmt>"
1431   [(set (match_operand:ANYF 0 "register_operand" "=f")
1432         (unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
1433                      UNSPEC_RECIP1))]
1434   "TARGET_MIPS3D"
1435   "recip1.<fmt>\t%0,%1"
1436   [(set_attr "type" "frdiv")
1437    (set_attr "mode" "<UNITMODE>")])
1438
1439 (define_insn "mips_recip2_<fmt>"
1440   [(set (match_operand:ANYF 0 "register_operand" "=f")
1441         (unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
1442                       (match_operand:ANYF 2 "register_operand" "f")]
1443                      UNSPEC_RECIP2))]
1444   "TARGET_MIPS3D"
1445   "recip2.<fmt>\t%0,%1,%2"
1446   [(set_attr "type" "frdiv")
1447    (set_attr "mode" "<UNITMODE>")])