aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips/mips.md
diff options
context:
space:
mode:
authorJames E Wilson <wilson@specifixinc.com>2004-08-18 23:45:32 +0000
committerJim Wilson <wilson@gcc.gnu.org>2004-08-18 16:45:32 -0700
commit9ff6992e3d912f5feaf2a6ed8df75481c54dbb1b (patch)
tree1f6566489105d66d92f705b13e99bb8e83be78ed /gcc/config/mips/mips.md
parentc16eb90063b5d6e1a74bcf2a1572741183d20871 (diff)
downloadgcc-9ff6992e3d912f5feaf2a6ed8df75481c54dbb1b.zip
gcc-9ff6992e3d912f5feaf2a6ed8df75481c54dbb1b.tar.gz
gcc-9ff6992e3d912f5feaf2a6ed8df75481c54dbb1b.tar.bz2
Add support for scheduling recip.fmt instructions.
* config/mips/mips.md (type): Add frdiv. (divsf3+1, divsf3+2): Change type to frdiv. * config/mips/sb1.md (ir_sb1_recipsf_2pipes, ir_sb1_recipsf_1pipe, ir_sb1_recipdf_2pipes, ir_sb1_recipdf_1pipe): New. * config/mips/3000.md (r3k_fdiv_single, r3k_fdiv_double): Add frdiv. * config/mips/4300.md (r4300_fdiv_single, r4300_fdiv_double): Likewise. * config/mips/4600.md (r4600_fdiv_single, f4600_fdiv_double): Likewise. * config/mips/5000.md (r5k_fdiv_single): Likewise. * config/mips/5400.md (ir_vr54_fdiv_sf, ir_vr54_fdiv_df): Likewise. * config/mips/5500.md (ir_vr55_fdiv_sf, ir_vr55_fdiv_df): Likewise. * config/mips/6000.md (r6k_fdiv_single, r6k_fdiv_double): Likewise. * config/mips/7000.md (rm7_fp_divsqrt_df, rm7_fp_divsqrt_sf): Likewise. * config/mips/9000.md (rm8k_fdivs, rm9k_fdivd): Likewise. * config/mips/generic.md (generic_fdiv_single, generic_fdiv_double): Likewise. * config/mips/sr71k.md (ir_sr70_fdiv_sf, ir_sr70_fdiv_df): Likewise. From-SVN: r86216
Diffstat (limited to 'gcc/config/mips/mips.md')
-rw-r--r--gcc/config/mips/mips.md7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 8a6440e..603a6b9 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -113,6 +113,7 @@
;; fmul floating point multiply
;; fmadd floating point multiply-add
;; fdiv floating point divide
+;; frdiv floating point reciprocal divide
;; fabs floating point absolute value
;; fneg floating point negation
;; fcmp floating point compare
@@ -122,7 +123,7 @@
;; multi multiword sequence (or user asm statements)
;; nop no operation
(define_attr "type"
- "unknown,branch,jump,call,load,fpload,fpidxload,store,fpstore,fpidxstore,prefetch,prefetchx,condmove,xfer,mthilo,mfhilo,const,arith,shift,slt,clz,trap,imul,imadd,idiv,fmove,fadd,fmul,fmadd,fdiv,fabs,fneg,fcmp,fcvt,fsqrt,frsqrt,multi,nop"
+ "unknown,branch,jump,call,load,fpload,fpidxload,store,fpstore,fpidxstore,prefetch,prefetchx,condmove,xfer,mthilo,mfhilo,const,arith,shift,slt,clz,trap,imul,imadd,idiv,fmove,fadd,fmul,fmadd,fdiv,frdiv,fabs,fneg,fcmp,fcvt,fsqrt,frsqrt,multi,nop"
(cond [(eq_attr "jal" "!unset") (const_string "call")
(eq_attr "got" "load") (const_string "load")]
(const_string "unknown")))
@@ -2092,7 +2093,7 @@
else
return "recip.d\t%0,%2";
}
- [(set_attr "type" "fdiv")
+ [(set_attr "type" "frdiv")
(set_attr "mode" "DF")
(set (attr "length")
(if_then_else (ne (symbol_ref "TARGET_FIX_SB1") (const_int 0))
@@ -2112,7 +2113,7 @@
else
return "recip.s\t%0,%2";
}
- [(set_attr "type" "fdiv")
+ [(set_attr "type" "frdiv")
(set_attr "mode" "SF")
(set (attr "length")
(if_then_else (ne (symbol_ref "TARGET_FIX_SB1") (const_int 0))