v850.c (v850_use_dfa_pipeline_interface): New.
authorSteven Bosscher <stevenb@suse.de>
Sat, 5 Jun 2004 16:35:55 +0000 (16:35 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Sat, 5 Jun 2004 16:35:55 +0000 (16:35 +0000)
* config/v850/v850.c (v850_use_dfa_pipeline_interface): New.
* config/v850/v850.md: Convert to DFA scheduler description.

From-SVN: r82653

gcc/ChangeLog
gcc/config/v850/v850.c
gcc/config/v850/v850.md

index 94c4dea557efc70f1272c12c715edec0c78edb70..9fb018e1737fed73495e419950b4a6f1dbdc5052 100644 (file)
@@ -1,3 +1,8 @@
+2004-06-05  Steven Bosscher  <stevenb@suse.de>
+
+       * config/v850/v850.c (v850_use_dfa_pipeline_interface): New.
+       * config/v850/v850.md: Convert to DFA scheduler description.
+
 2004-06-05  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/15478
index f9e54cc2df982c32229552e5e45db59380d54022..5bd8ce455b0b263c0cdd9fb4e128d0a964fc7292 100644 (file)
@@ -64,6 +64,7 @@ static void v850_insert_attributes   (tree, tree *);
 static void v850_select_section (tree, int, unsigned HOST_WIDE_INT);
 static void v850_encode_data_area    (tree, rtx);
 static void v850_encode_section_info (tree, rtx, int);
+static int  v850_use_dfa_pipeline_interface (void);
 static bool v850_return_in_memory    (tree, tree);
 static void v850_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
                                         tree, int *, int);
@@ -113,9 +114,13 @@ static int v850_interrupt_p = FALSE;
 
 #undef TARGET_RTX_COSTS
 #define TARGET_RTX_COSTS v850_rtx_costs
+
 #undef TARGET_ADDRESS_COST
 #define TARGET_ADDRESS_COST hook_int_rtx_0
 
+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE v850_use_dfa_pipeline_interface
+
 #undef TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG v850_reorg
 
@@ -2340,6 +2345,12 @@ v850_encode_section_info (tree decl, rtx rtl, int first)
     v850_encode_data_area (decl, XEXP (rtl, 0));
 }
 
+static int
+v850_use_dfa_pipeline_interface (void)
+{
+  return 1;
+}
+
 /* Return true if the given RTX is a register which can be restored
    by a function epilogue.  */
 int
index 44ca8a962717b866eccb7c0d5794d42c828d49f9..503f1fe675800e2f04168c23f11368b14c88fc9d 100644 (file)
 ;; Function units for the V850.  As best as I can tell, there's
 ;; a traditional memory load/use stall as well as a stall if
 ;; the result of a multiply is used too early.
-;;
-(define_function_unit "memory" 1 0 (eq_attr "type" "load") 2 0)
-(define_function_unit "mult"   1 0 (eq_attr "type" "mult") 2 0)
 
+(define_insn_reservation "v850_other" 1
+                        (eq_attr "type" "other")
+                        "nothing")
+(define_insn_reservation "v850_mult" 2
+                        (eq_attr "type" "mult")
+                        "nothing")
+(define_insn_reservation "v850_memory" 2
+                        (eq_attr "type" "load")
+                        "nothing")
 \f
 ;; ----------------------------------------------------------------------
 ;; MOVE INSTRUCTIONS