Commit 325a4c6e by Claudiu Zissulescu Committed by Claudiu Zissulescu

[ARC] Update ARCHS scheduling rules.

2017-07-16  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arcHS.md: Update ARCHS scheduling rules.

From-SVN: r262689
parent 43bb0fc2
2017-07-16 Claudiu Zissulescu <claziss@synopsys.com> 2017-07-16 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arcHS.md: Update ARCHS scheduling rules.
2017-07-16 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters
for ARCHS4x. for ARCHS4x.
* config/arc/arc-cpus.def (hs4x): New cpu. * config/arc/arc-cpus.def (hs4x): New cpu.
......
...@@ -35,12 +35,14 @@ ...@@ -35,12 +35,14 @@
(eq_attr "type" "store")) (eq_attr "type" "store"))
"hs_issue+hs_ld_st") "hs_issue+hs_ld_st")
(define_insn_reservation "hs_alu0" 2 ;; Advanced ALU
(define_insn_reservation "hs_alu0" 4
(and (match_test "TARGET_HS") (and (match_test "TARGET_HS")
(eq_attr "tune" "none") (eq_attr "tune" "none")
(eq_attr "type" "cc_arith, two_cycle_core, shift, lr, sr")) (eq_attr "type" "cc_arith, two_cycle_core, shift, lr, sr"))
"hs_issue+x1,x2") "hs_issue+x1,x2, nothing*2")
;; Basic ALU
(define_insn_reservation "hs_alu1" 4 (define_insn_reservation "hs_alu1" 4
(and (match_test "TARGET_HS") (and (match_test "TARGET_HS")
(eq_attr "tune" "none") (eq_attr "tune" "none")
...@@ -54,19 +56,26 @@ ...@@ -54,19 +56,26 @@
(eq_attr "type" "div_rem")) (eq_attr "type" "div_rem"))
"hs_issue+divrem_hs, (divrem_hs)*12") "hs_issue+divrem_hs, (divrem_hs)*12")
(define_insn_reservation "hs_mul" 3 (define_insn_reservation "hs_mul" 4
(and (match_test "TARGET_HS") (and (match_test "TARGET_HS")
(eq_attr "tune" "none") (eq_attr "tune" "none")
(eq_attr "type" "mul16_em, multi, umulti")) (eq_attr "type" "mul16_em, multi, umulti"))
"hs_issue+mul_hs, nothing*3") "hs_issue+mul_hs, nothing*3")
;; BYPASS EALU -> ;; BYPASS Advanced ALU ->
(define_bypass 1 "hs_alu0" "hs_divrem") (define_bypass 1 "hs_alu0" "hs_divrem")
(define_bypass 1 "hs_alu0" "hs_mul") (define_bypass 1 "hs_alu0" "hs_mul")
(define_bypass 2 "hs_alu0" "hs_alu0")
(define_bypass 1 "hs_alu0" "hs_alu1")
(define_bypass 1 "hs_alu0" "hs_data_load")
(define_bypass 1 "hs_alu0" "hs_data_store" "store_data_bypass_p")
(define_bypass 2 "hs_alu0" "hs_data_store")
;; BYPASS BALU -> ;; BYPASS Basic ALU ->
(define_bypass 1 "hs_alu1" "hs_alu1") (define_bypass 1 "hs_alu1" "hs_alu1")
(define_bypass 1 "hs_alu1" "hs_data_store" "store_data_bypass_p") (define_bypass 1 "hs_alu1" "hs_data_store" "store_data_bypass_p")
(define_bypass 3 "hs_alu1" "hs_mul")
(define_bypass 3 "hs_alu1" "hs_divrem")
;; BYPASS LD -> ;; BYPASS LD ->
(define_bypass 1 "hs_data_load" "hs_alu1") (define_bypass 1 "hs_data_load" "hs_alu1")
...@@ -76,7 +85,7 @@ ...@@ -76,7 +85,7 @@
(define_bypass 1 "hs_data_load" "hs_data_store" "store_data_bypass_p") (define_bypass 1 "hs_data_load" "hs_data_store" "store_data_bypass_p")
;; BYPASS MPY -> ;; BYPASS MPY ->
;;(define_bypass 3 "hs_mul" "hs_mul") (define_bypass 3 "hs_mul" "hs_mul")
(define_bypass 1 "hs_mul" "hs_alu1") (define_bypass 1 "hs_mul" "hs_alu1")
(define_bypass 3 "hs_mul" "hs_divrem") (define_bypass 3 "hs_mul" "hs_divrem")
(define_bypass 1 "hs_mul" "hs_data_store" "store_data_bypass_p") (define_bypass 1 "hs_mul" "hs_data_store" "store_data_bypass_p")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment