Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
85e02264
Commit
85e02264
authored
Oct 10, 2012
by
Ganesh Gopalasubramanian
Committed by
Venkataramanan Kumar
Oct 10, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix for PR51109
From-SVN: r192296
parent
d8cfe707
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
13 deletions
+25
-13
gcc/ChangeLog
+6
-0
gcc/config/i386/bdver1.md
+19
-13
No files found.
gcc/ChangeLog
View file @
85e02264
2012-10-10 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
PR target/51109
* gcc/config/i386/bdver1.md (bdver1_int): Automaton has been
split to reduce state transitions.
2012-10-10 Richard Biener <rguenther@suse.de>
2012-10-10 Richard Biener <rguenther@suse.de>
PR middle-end/54876
PR middle-end/54876
...
...
gcc/config/i386/bdver1.md
View file @
85e02264
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
(define_attr "bdver1_decode" "direct,vector,double"
(define_attr "bdver1_decode" "direct,vector,double"
(const_string "direct"))
(const_string "direct"))
(define_automaton "bdver1,bdver1_i
nt,bdver1_load,bdver1_mult,bdver1_fp
")
(define_automaton "bdver1,bdver1_i
eu,bdver1_load,bdver1_fp,bdver1_agu
")
(define_cpu_unit "bdver1-decode0" "bdver1")
(define_cpu_unit "bdver1-decode0" "bdver1")
(define_cpu_unit "bdver1-decode1" "bdver1")
(define_cpu_unit "bdver1-decode1" "bdver1")
...
@@ -71,12 +71,12 @@
...
@@ -71,12 +71,12 @@
| (nothing,(bdver1-decode1 + bdver1-decode2)))")
| (nothing,(bdver1-decode1 + bdver1-decode2)))")
(define_cpu_unit "bdver1-ieu0" "bdver1_i
nt
")
(define_cpu_unit "bdver1-ieu0" "bdver1_i
eu
")
(define_cpu_unit "bdver1-ieu1" "bdver1_i
nt
")
(define_cpu_unit "bdver1-ieu1" "bdver1_i
eu
")
(define_reservation "bdver1-ieu" "(bdver1-ieu0 | bdver1-ieu1)")
(define_reservation "bdver1-ieu" "(bdver1-ieu0 | bdver1-ieu1)")
(define_cpu_unit "bdver1-agu0" "bdver1_
int
")
(define_cpu_unit "bdver1-agu0" "bdver1_
agu
")
(define_cpu_unit "bdver1-agu1" "bdver1_
int
")
(define_cpu_unit "bdver1-agu1" "bdver1_
agu
")
(define_reservation "bdver1-agu" "(bdver1-agu0 | bdver1-agu1)")
(define_reservation "bdver1-agu" "(bdver1-agu0 | bdver1-agu1)")
(define_cpu_unit "bdver1-mult" "bdver1_mult")
(define_cpu_unit "bdver1-mult" "bdver1_mult")
...
@@ -93,6 +93,12 @@
...
@@ -93,6 +93,12 @@
;; 128bit SSE instructions issue two stores at once.
;; 128bit SSE instructions issue two stores at once.
(define_reservation "bdver1-store2" "(bdver1-load0 + bdver1-load1)")
(define_reservation "bdver1-store2" "(bdver1-load0 + bdver1-load1)")
;; vectorpath (microcoded) instructions are single issue instructions.
;; So, they occupy all the integer units.
(define_reservation "bdver1-ivector" "bdver1-ieu0+bdver1-ieu1+
bdver1-agu0+bdver1-agu1+
bdver1-load0+bdver1-load1")
;; The FP operations start to execute at stage 12 in the pipeline, while
;; The FP operations start to execute at stage 12 in the pipeline, while
;; integer operations start to execute at stage 9 for athlon and 11 for K8
;; integer operations start to execute at stage 9 for athlon and 11 for K8
;; Compensate the difference for athlon because it results in significantly
;; Compensate the difference for athlon because it results in significantly
...
@@ -125,7 +131,7 @@
...
@@ -125,7 +131,7 @@
(define_insn_reservation "bdver1_call" 0
(define_insn_reservation "bdver1_call" 0
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(eq_attr "type" "call,callv"))
(eq_attr "type" "call,callv"))
"bdver1-double,bdver1-agu
,bdver1-ieu
")
"bdver1-double,bdver1-agu")
;; PUSH mem is double path.
;; PUSH mem is double path.
(define_insn_reservation "bdver1_push" 1
(define_insn_reservation "bdver1_push" 1
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
...
@@ -135,17 +141,17 @@
...
@@ -135,17 +141,17 @@
(define_insn_reservation "bdver1_pop" 1
(define_insn_reservation "bdver1_pop" 1
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(eq_attr "type" "pop"))
(eq_attr "type" "pop"))
"bdver1-direct,
(bdver1-ieu+bdver1-load)
")
"bdver1-direct,
bdver1-ivector
")
;; LEAVE no latency info so far, assume same with amdfam10.
;; LEAVE no latency info so far, assume same with amdfam10.
(define_insn_reservation "bdver1_leave" 3
(define_insn_reservation "bdver1_leave" 3
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(eq_attr "type" "leave"))
(eq_attr "type" "leave"))
"bdver1-vector,
(bdver1-ieu+bdver1-load)
")
"bdver1-vector,
bdver1-ivector
")
;; LEA executes in AGU unit with 1 cycle latency on BDVER1.
;; LEA executes in AGU unit with 1 cycle latency on BDVER1.
(define_insn_reservation "bdver1_lea" 1
(define_insn_reservation "bdver1_lea" 1
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(eq_attr "type" "lea"))
(eq_attr "type" "lea"))
"bdver1-direct,bdver1-agu
,nothing
")
"bdver1-direct,bdver1-agu")
;; MUL executes in special multiplier unit attached to IEU1.
;; MUL executes in special multiplier unit attached to IEU1.
(define_insn_reservation "bdver1_imul_DI" 6
(define_insn_reservation "bdver1_imul_DI" 6
...
@@ -153,23 +159,23 @@
...
@@ -153,23 +159,23 @@
(and (eq_attr "type" "imul")
(and (eq_attr "type" "imul")
(and (eq_attr "mode" "DI")
(and (eq_attr "mode" "DI")
(eq_attr "memory" "none,unknown"))))
(eq_attr "memory" "none,unknown"))))
"bdver1-direct1,bdver1-ieu1
,bdver1-mult,nothing,bdver1-ieu1
")
"bdver1-direct1,bdver1-ieu1")
(define_insn_reservation "bdver1_imul" 4
(define_insn_reservation "bdver1_imul" 4
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "type" "imul")
(and (eq_attr "type" "imul")
(eq_attr "memory" "none,unknown")))
(eq_attr "memory" "none,unknown")))
"bdver1-direct1,bdver1-ieu1
,bdver1-mult,bdver1-ieu1
")
"bdver1-direct1,bdver1-ieu1")
(define_insn_reservation "bdver1_imul_mem_DI" 10
(define_insn_reservation "bdver1_imul_mem_DI" 10
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "type" "imul")
(and (eq_attr "type" "imul")
(and (eq_attr "mode" "DI")
(and (eq_attr "mode" "DI")
(eq_attr "memory" "load,both"))))
(eq_attr "memory" "load,both"))))
"bdver1-direct1,bdver1-load,bdver1-ieu,bdver1-mult,nothing,bdver1-ieu
")
"bdver1-direct1,bdver1-load,bdver1-ieu1
")
(define_insn_reservation "bdver1_imul_mem" 8
(define_insn_reservation "bdver1_imul_mem" 8
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "cpu" "bdver1,bdver2")
(and (eq_attr "type" "imul")
(and (eq_attr "type" "imul")
(eq_attr "memory" "load,both")))
(eq_attr "memory" "load,both")))
"bdver1-direct1,bdver1-load,bdver1-ieu
,bdver1-mult,bdver1-ieu
")
"bdver1-direct1,bdver1-load,bdver1-ieu
1
")
;; IDIV cannot execute in parallel with other instructions. Dealing with it
;; IDIV cannot execute in parallel with other instructions. Dealing with it
;; as with short latency vector instruction is good approximation avoiding
;; as with short latency vector instruction is good approximation avoiding
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment