summaryrefslogtreecommitdiff
path: root/gcc/config/i386/bdver3.md
diff options
context:
space:
mode:
authorGanesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>2013-11-06 05:38:09 +0000
committerGanesh Gopalasubramanian <gganesh@gcc.gnu.org>2013-11-06 05:38:09 +0000
commit4a1db8e16460fddf419fa96e64d0e41d2d19e3de (patch)
tree72c1866db7362c2294af57b73f110258ae449b60 /gcc/config/i386/bdver3.md
parent3118d595a64f3673786c8c06642f92d95bf6b27c (diff)
downloadgcc-4a1db8e16460fddf419fa96e64d0e41d2d19e3de.tar.gz
scheduler improvements for BD architectures
From-SVN: r204442
Diffstat (limited to 'gcc/config/i386/bdver3.md')
-rw-r--r--gcc/config/i386/bdver3.md18
1 files changed, 10 insertions, 8 deletions
diff --git a/gcc/config/i386/bdver3.md b/gcc/config/i386/bdver3.md
index 52418b5e5c9..421a3d1b30e 100644
--- a/gcc/config/i386/bdver3.md
+++ b/gcc/config/i386/bdver3.md
@@ -34,20 +34,22 @@
(define_cpu_unit "bdver3-decode0" "bdver3")
(define_cpu_unit "bdver3-decode1" "bdver3")
-(define_cpu_unit "bdver3-decodev" "bdver3")
+(define_cpu_unit "bdver3-decode2" "bdver3")
+(define_cpu_unit "bdver3-decode3" "bdver3")
;; Double decoded instructions take two cycles whereas
;; direct instructions take one cycle.
-;; Therefore four direct instructions can be decoded by
-;; two decoders in two cycles.
;; Vectorpath instructions are single issue instructions.
-;; So, we have separate unit for vector instructions.
-(exclusion_set "bdver3-decodev" "bdver3-decode0,bdver3-decode1")
+;; So, we engage all units vector instructions.
+(define_reservation "bdver3-vector" "bdver3-decode0+bdver3-decode1+bdver3-decode2+bdver3-decode3")
+
+;; Direct instructions can be issued to any of the four decoders
+(define_reservation "bdver3-direct" "(bdver3-decode0|bdver3-decode1|bdver3-decode2|bdver3-decode3)")
-(define_reservation "bdver3-vector" "bdver3-decodev")
-(define_reservation "bdver3-direct" "(bdver3-decode0|bdver3-decode1)")
;; Double instructions take two cycles to decode.
-(define_reservation "bdver3-double" "(bdver3-decode0|bdver3-decode1)*2")
+(define_reservation "bdver3-double" "(bdver3-decode0,bdver3-decode0)|
+ (bdver3-decode1,bdver3-decode1)| (bdver3-decode2,bdver3-decode2)|
+ (bdver3-decode3,bdver3-decode3)")
(define_cpu_unit "bdver3-ieu0" "bdver3_ieu")
(define_cpu_unit "bdver3-ieu1" "bdver3_ieu")