diff options
author | David Ung <davidu@mips.com> | 2007-07-04 16:50:38 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2007-07-04 17:50:38 +0100 |
commit | b1a14b78e650caaa2d1264ef9b72b46b35f97f9e (patch) | |
tree | c160ca119e481152ec935d2a712c621bc591611d /gcc/config/mips/74k.md | |
parent | 4fc669451b1d89a52bc12096eb38d7393c0b98ce (diff) | |
download | gcc-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.md | 21 |
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 |