* config/xtensa/xtensa.c
authorSteven Bosscher <stevenb@suse.de>
Fri, 18 Jun 2004 19:38:27 +0000 (19:38 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Fri, 18 Jun 2004 19:38:27 +0000 (19:38 +0000)
(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define.
* xtensa.md: Replace the old pipeline description with a DFA model.

From-SVN: r83358

gcc/ChangeLog
gcc/config/xtensa/xtensa.c
gcc/config/xtensa/xtensa.md

index 82865ebb72b2822b64bbd60764a912f2d2e56480..014cb1cae8f474b297b730a8b6c45398b0e85f86 100644 (file)
@@ -1,3 +1,9 @@
+2004-06-18  Steven Bosscher  <stevenb@suse.de>
+
+       * config/xtensa/xtensa.c
+       (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define.
+       * xtensa.md: Replace the old pipeline description with a DFA model.
+
 2004-06-18  Steven Bosscher  <stevenb@suse.de>
            Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
 
index 89d8c9ddf3de98d56c2d7ba9867d930edf46110c..e062fd9c2224103f4d5e758c77d5dc4a31707c69 100644 (file)
@@ -259,6 +259,9 @@ static const int reg_nonleaf_alloc_order[FIRST_PSEUDO_REGISTER] =
 #undef TARGET_RETURN_IN_MSB
 #define TARGET_RETURN_IN_MSB xtensa_return_in_msb
 
+#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
 
index 0b557c12e8c312058e2d427d6cd694436059e876..2bb2672861f986d544d134f9f75855d55662b6aa 100644 (file)
   [(set_attr "type" "multi")])
 
 \f
-;; Functional units.
+;; Pipeline model.
 
-(define_function_unit "memory" 1 0 (eq_attr "type" "load,fload") 2 0)
+;; The Xtensa basically has simple 5-stage RISC pipeline.
+;; Most instructions complete in 1 cycle, and it is OK to assume that
+;; everything is fully pipelined.  The exceptions have special insn
+;; reservations in the pipeline description below.  The Xtensa can
+;; issue one instruction per cycle, so defining CPU units is unnecessary.
 
-(define_function_unit "sreg" 1 1 (eq_attr "type" "rsr") 2 0)
+(define_insn_reservation "xtensa_any_insn" 1
+                        (eq_attr "type" "!load,fload,rsr,mul16,mul32,fmadd,fconv")
+                        "nothing")
 
-(define_function_unit "mul16" 1 0 (eq_attr "type" "mul16") 2 0)
+(define_insn_reservation "xtensa_memory" 2
+                        (eq_attr "type" "load,fload")
+                        "nothing")
 
-(define_function_unit "mul32" 1 0 (eq_attr "type" "mul32") 2 0)
+(define_insn_reservation "xtensa_sreg" 2
+                        (eq_attr "type" "rsr")
+                        "nothing")
 
-(define_function_unit "fpmadd" 1 0 (eq_attr "type" "fmadd") 4 0)
+(define_insn_reservation "xtensa_mul16" 2
+                        (eq_attr "type" "mul16")
+                        "nothing")
 
-(define_function_unit "fpconv" 1 0 (eq_attr "type" "fconv") 2 0)
+(define_insn_reservation "xtensa_mul32" 2
+                        (eq_attr "type" "mul32")
+                        "nothing")
 
+(define_insn_reservation "xtensa_fmadd" 4
+                        (eq_attr "type" "fmadd")
+                        "nothing")
+
+(define_insn_reservation "xtensa_fconv" 2
+                        (eq_attr "type" "fconv")
+                        "nothing")
 \f
 ;; Addition.