summaryrefslogtreecommitdiff
path: root/gcc/config/arc
diff options
context:
space:
mode:
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-09 11:40:09 +0000
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-09 11:40:09 +0000
commit2935193bdf41cf3f2b2d83c9196324e62301eeea (patch)
tree5eb494de10d9e8ce1a27c84a7872de367ef17264 /gcc/config/arc
parent3f336cf6bfa9c34e15c09dbafe0c66f1a3a013a0 (diff)
downloadgcc-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')
-rw-r--r--gcc/config/arc/arc.c3
-rw-r--r--gcc/config/arc/arc.md19
2 files changed, 16 insertions, 6 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index 6c3da47438e..6f02cdaf006 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -145,6 +145,9 @@ static tree arc_gimplify_va_arg_expr (tree, tree, tree *, tree *);
#undef TARGET_GIMPLIFY_VA_ARG_EXPR
#define TARGET_GIMPLIFY_VA_ARG_EXPR arc_gimplify_va_arg_expr
+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE hook_int_void_1
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Called by OVERRIDE_OPTIONS to initialize various things. */
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.