arc.md: Switch to DFA-based scheduler description.
authorPaolo Bonzini <bonzini@gnu.org>
Fri, 9 Jul 2004 11:40:09 +0000 (11:40 +0000)
committerPaolo Bonzini <bonzini@gcc.gnu.org>
Fri, 9 Jul 2004 11:40:09 +0000 (11:40 +0000)
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.

From-SVN: r84363

gcc/ChangeLog
gcc/config/arc/arc.c
gcc/config/arc/arc.md

index a1d1b06a6cdce5018669b2acf6b4e26edece7068..c4c785e8d9f0da4d4165ef514b36b96e4081d2e7 100644 (file)
@@ -1,3 +1,8 @@
+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.
+
 2004-07-09  Richard Earnshaw  <rearnsha@arm.com>
 
        * arm/unknown-elf.h (TARGET_DEFAULT): Don't require an APCS frame
index 6c3da47438e11ed8684f415979d02ad557b9e7e5..6f02cdaf006f35806bd311c329e621efbf33c6d9 100644 (file)
@@ -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;
 \f
 /* Called by OVERRIDE_OPTIONS to initialize various things.  */
index 2e7e98a42440ea48c8d1a072c2e74c2967dacf04..2b3f43fffda9e20f5cdde2a1baa3af564ee07327 100644 (file)
    (eq_attr "in_delay_slot" "true")
    (eq_attr "in_delay_slot" "true")])
 \f   
-;; 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")
 \f
 ;; Move instructions.