aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips/74k.md
diff options
context:
space:
mode:
authorDavid Ung <davidu@mips.com>2007-07-04 16:50:38 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2007-07-04 17:50:38 +0100
commitb1a14b78e650caaa2d1264ef9b72b46b35f97f9e (patch)
treec160ca119e481152ec935d2a712c621bc591611d /gcc/config/mips/74k.md
parent4fc669451b1d89a52bc12096eb38d7393c0b98ce (diff)
downloadgcc-b1a14b78e650caaa2d1264ef9b72b46b35f97f9e.zip
gcc-b1a14b78e650caaa2d1264ef9b72b46b35f97f9e.tar.gz
gcc-b1a14b78e650caaa2d1264ef9b72b46b35f97f9e.tar.bz2
mips.md (type): Add logical, signext and move.
2007-07-04 David Ung <davidu@mips.com> Joseph Myers <joseph@codesourcery.com> * config/mips/mips.md (type): Add logical, signext and move. (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3, *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16, *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend combinations", *zero_extend<SHORT:mode><GPR:mode>2, *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e, *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit, *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc, *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16, *movsf_hardfloat, *movsf_softfloat, *movsf_mips16, *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, movv2sf_hardfloat_64bit): Use the new types. (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16, *movdf_softfloat, *movdf_mips16): Use "multi". (extendqihi2): Replace with a define_expand. (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New. Based on extend<SHORT:mode><GPR:mode>2 patterns. * config/mips/74k.md (r74k_int_logical): New reservation and bypasses. (r74k_int_arith): Remove "slt". * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md, config/mips/5400.md, config/mips/5500.md, config/mips/5k.md, config/mips/7000.md, config/mips/9000.md, config/mips/generic.md, config/mips/sb1.md, config/mips/sr71k.md: Add new types to reservations for "arith". Co-Authored-By: Joseph Myers <joseph@codesourcery.com> From-SVN: r126327
Diffstat (limited to 'gcc/config/mips/74k.md')
-rw-r--r--gcc/config/mips/74k.md21
1 files changed, 16 insertions, 5 deletions
diff --git a/gcc/config/mips/74k.md b/gcc/config/mips/74k.md
index 1d3aaa4..e4d1e41 100644
--- a/gcc/config/mips/74k.md
+++ b/gcc/config/mips/74k.md
@@ -35,13 +35,18 @@
;; Producers
;; --------------------------------------------------------------
-;; Arithmetic: add, addi, addiu, addiupc, addu, and, andi, clo, clz,
-;; ext, ins, lui, movn, movz, nor, or, ori, rotr, rotrv, seb, seh, sll,
-;; sllv, slt, slti, sltiu, sltu, sra, srav, srl, srlv, sub, subu, wsbh,
-;; xor, xori
+;; ALU: Logicals/Arithmetics
+;; - Logicals, move (addu/addiu with rt = 0), Set less than,
+;; sign extend - 1 cycle
+(define_insn_reservation "r74k_int_logical" 1
+ (and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
+ (eq_attr "type" "logical,move,signext,slt"))
+ "r74k_alu")
+
+;; - Arithmetics - 2 cycles
(define_insn_reservation "r74k_int_arith" 2
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
- (eq_attr "type" "arith,const,shift,slt,clz"))
+ (eq_attr "type" "arith,const,shift,clz"))
"r74k_alu")
(define_insn_reservation "r74k_int_nop" 0
@@ -137,6 +142,12 @@
(define_bypass 4 "r74k_int_load" "r74k_int_load")
(define_bypass 4 "r74k_int_load" "r74k_int_store" "!store_data_bypass_p")
+;; logical/move/slt/signext->next use : 1 cycles (Default)
+;; logical/move/slt/signext->load base: 2 cycles
+;; logical/move/slt/signext->store base: 2 cycles
+(define_bypass 2 "r74k_int_logical" "r74k_int_load")
+(define_bypass 2 "r74k_int_logical" "r74k_int_store" "!store_data_bypass_p")
+
;; arith->next use : 2 cycles (Default)
;; arith->load base: 3 cycles
;; arith->store base: 3 cycles