From: Jim Wilson Date: Tue, 13 Oct 1992 18:31:01 +0000 (-0700) Subject: (in_branch_delay): Allow fpload and fpstore. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cab554610be863878e01ceacee6c8360c8e48d7b;p=gcc.git (in_branch_delay): Allow fpload and fpstore. From-SVN: r2438 --- diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 5139adb4268..6cf9eaa42f3 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")))