aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-10-13 11:31:01 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-10-13 11:31:01 -0700
commitcab554610be863878e01ceacee6c8360c8e48d7b (patch)
tree2f74e0650dcf6fd12e08302d585773f606b12926
parentaad3ab2fc718aa5bb361507ebac04b2f474531ac (diff)
downloadgcc-cab554610be863878e01ceacee6c8360c8e48d7b.zip
gcc-cab554610be863878e01ceacee6c8360c8e48d7b.tar.gz
gcc-cab554610be863878e01ceacee6c8360c8e48d7b.tar.bz2
(in_branch_delay): Allow fpload and fpstore.
From-SVN: r2438
-rw-r--r--gcc/config/sparc/sparc.md9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 5139adb..6cf9eaa 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -93,9 +93,16 @@
;; branches. This would allow us to remove the nop always inserted before
;; a floating point branch.
+;; ??? It is OK for fill_simple_delay_slots to put load/store instructions
+;; in a delay slot, but it is not OK for fill_eager_delay_slots to do so.
+;; This is because doing so will add several pipeline stalls to the path
+;; that the load/store did not come from. Unfortunately, there is no way
+;; to prevent fill_eager_delay_slots from using load/store without completely
+;; disabling them. For the SPEC benchmark set, this is a serious lose,
+;; because it prevents us from moving back the final store of inner loops.
(define_attr "in_branch_delay" "false,true"
- (if_then_else (and (eq_attr "type" "!uncond_branch,branch,call,call_no_delay_slot,multi,fpload,fpstore")
+ (if_then_else (and (eq_attr "type" "!uncond_branch,branch,call,call_no_delay_slot,multi")
(eq_attr "length" "1"))
(const_string "true")
(const_string "false")))