diff options
author | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-09 11:40:09 +0000 |
---|---|---|
committer | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-09 11:40:09 +0000 |
commit | 2935193bdf41cf3f2b2d83c9196324e62301eeea (patch) | |
tree | 5eb494de10d9e8ce1a27c84a7872de367ef17264 /gcc/config/arc/arc.md | |
parent | 3f336cf6bfa9c34e15c09dbafe0c66f1a3a013a0 (diff) | |
download | gcc-2935193bdf41cf3f2b2d83c9196324e62301eeea.tar.gz |
2004-07-09 Paolo Bonzini <bonzini@gnu.org>
* config/arc/arc.md: Switch to DFA-based scheduler description.
* config/arc/arc.c: Switch to DFA-based scheduler description.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84363 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arc/arc.md')
-rw-r--r-- | gcc/config/arc/arc.md | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md index 2e7e98a4244..2b3f43fffda 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -115,23 +115,30 @@ (eq_attr "in_delay_slot" "true") (eq_attr "in_delay_slot" "true")]) -;; Function units of the ARC +;; Scheduling description for the ARC -;; (define_function_unit {name} {num-units} {n-users} {test} -;; {ready-delay} {issue-delay} [{conflict-list}]) +(define_cpu_unit "branch") + +(define_insn_reservation "any_insn" 1 (eq_attr "type" "!load,compare,branch") + "nothing") ;; 1) A conditional jump cannot immediately follow the insn setting the flags. ;; This isn't a complete solution as it doesn't come with guarantees. That ;; is done in the branch patterns and in arc_print_operand. This exists to ;; avoid inserting a nop when we can. -(define_function_unit "compare" 1 0 (eq_attr "type" "compare") 2 2 [(eq_attr "type" "branch")]) + +(define_insn_reservation "compare" 1 (eq_attr "type" "compare") + "nothing,branch") + +(define_insn_reservation "branch" 1 (eq_attr "type" "branch") + "branch") ;; 2) References to loaded registers should wait a cycle. ;; Memory with load-delay of 1 (i.e., 2 cycle load). -(define_function_unit "memory" 1 1 (eq_attr "type" "load") 2 0) -;; Units that take one cycle do not need to be specified. +(define_insn_reservation "memory" 2 (eq_attr "type" "load") + "nothing") ;; Move instructions. |