diff mbox

[SPARC] Avoid b2bst errata when using -mfix-ut699

Message ID 20170711090006.5724-1-cederman@gaisler.com
State New
Headers show

Commit Message

Daniel Cederman July 11, 2017, 9 a.m. UTC
The errata fix for the UT699 fdivd and fsqrtd might cause a sequence
that can trigger the b2bst errata. Adding a NOP prevents this.

gcc/ChangeLog:

2017-07-11  Daniel Cederman  <cederman@gaisler.com>

	* config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
	to back store errata sensitive sequence from being generated.
	(sqrtdf2_fix): Likewise.
---
 gcc/config/sparc/sparc.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Eric Botcazou July 16, 2017, 10:44 a.m. UTC | #1
> 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
> 
> 	* config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
> 	to back store errata sensitive sequence from being generated.
> 	(sqrtdf2_fix): Likewise.

Thanks, applied to mainline and 7 branch.
diff mbox

Patch

diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index afdc7d1..b154003 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -6171,10 +6171,10 @@  visl")
 	(div:DF (match_operand:DF 1 "register_operand" "e")
 		(match_operand:DF 2 "register_operand" "e")))]
   "TARGET_FPU && sparc_fix_ut699"
-  "fdivd\t%1, %2, %0\n\tstd\t%0, [%%sp-8]"
+  "fdivd\t%1, %2, %0\n\tstd\t%0, [%%sp-8]\n\tnop"
   [(set_attr "type" "fpdivd")
    (set_attr "fptype" "double")
-   (set_attr "length" "2")])
+   (set_attr "length" "3")])
 
 (define_insn "divsf3"
   [(set (match_operand:SF 0 "register_operand" "=f")
@@ -6423,10 +6423,10 @@  visl")
   [(set (match_operand:DF 0 "register_operand" "=e")
 	(sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
   "TARGET_FPU && sparc_fix_ut699"
-  "fsqrtd\t%1, %0\n\tstd\t%0, [%%sp-8]"
+  "fsqrtd\t%1, %0\n\tstd\t%0, [%%sp-8]\n\tnop"
   [(set_attr "type" "fpsqrtd")
    (set_attr "fptype" "double")
-   (set_attr "length" "2")])
+   (set_attr "length" "3")])
 
 (define_insn "sqrtsf2"
   [(set (match_operand:SF 0 "register_operand" "=f")