diff options
Diffstat (limited to 'gcc/config/mips/4600.md')
-rw-r--r-- | gcc/config/mips/4600.md | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/gcc/config/mips/4600.md b/gcc/config/mips/4600.md index c645cbc5d82..fcdbf00d261 100644 --- a/gcc/config/mips/4600.md +++ b/gcc/config/mips/4600.md @@ -1,5 +1,5 @@ ;; R4600 and R4650 pipeline description. -;; Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +;; Copyright (C) 2004, 2005, 2007, 2012 Free Software Foundation, Inc. ;; ;; This file is part of GCC. @@ -24,16 +24,30 @@ ;; We handle the R4600 and R4650 in much the same way. The only difference ;; is in the integer multiplication and division costs. -(define_insn_reservation "r4600_imul" 10 +(define_insn_reservation "r4600_imul_si" 10 (and (eq_attr "cpu" "r4600") - (eq_attr "type" "imul,imul3,imadd")) + (eq_attr "type" "imul,imul3,imadd") + (eq_attr "mode" "SI")) "imuldiv*10") -(define_insn_reservation "r4600_idiv" 42 +(define_insn_reservation "r4600_imul_di" 12 (and (eq_attr "cpu" "r4600") - (eq_attr "type" "idiv")) + (eq_attr "type" "imul,imul3,imadd") + (eq_attr "mode" "DI")) + "imuldiv*12") + +(define_insn_reservation "r4600_idiv_si" 42 + (and (eq_attr "cpu" "r4600") + (eq_attr "type" "idiv") + (eq_attr "mode" "SI")) "imuldiv*42") +(define_insn_reservation "r4600_idiv_di" 74 + (and (eq_attr "cpu" "r4600") + (eq_attr "type" "idiv") + (eq_attr "mode" "DI")) + "imuldiv*74") + (define_insn_reservation "r4650_imul" 4 (and (eq_attr "cpu" "r4650") |