diff mbox

[PATCH-v3] Generate more efficient memory barriers for LEON3

Message ID 1405074316-1000-1-git-send-email-cederman@gaisler.com
State New
Headers show

Commit Message

Daniel Cederman July 11, 2014, 10:25 a.m. UTC
ChangeLog:

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

gcc/config/sparc/
    * sync.md: Generate more efficient memory barriers for LEON3 

---
 gcc/config/sparc/sync.md |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Comments

Eric Botcazou July 19, 2014, 10:42 a.m. UTC | #1
[Sorry for the delay]

> 2014-07-11  Daniel Cederman  <cederman@gaisler.com>
> 
> gcc/config/sparc/
>     * sync.md: Generate more efficient memory barriers for LEON3

Thanks, applied to all active branches with the following ChangeLog:


	* config/sparc/sync.md (*membar_storeload_leon3): New insn.
	(*membar_storeload): Disable for LEON3.
diff mbox

Patch

diff --git a/gcc/config/sparc/sync.md b/gcc/config/sparc/sync.md
index e6e237f..98ac0d3 100644
--- a/gcc/config/sparc/sync.md
+++ b/gcc/config/sparc/sync.md
@@ -64,11 +64,19 @@ 
   "stbar"
   [(set_attr "type" "multi")])
 
+;; For LEON3, STB has the effect of membar #StoreLoad.
+(define_insn "*membar_storeload_leon3"
+  [(set (match_operand:BLK 0 "" "")
+	(unspec:BLK [(match_dup 0) (const_int 2)] UNSPEC_MEMBAR))]
+  "TARGET_LEON3"
+  "stb\t%%g0, [%%sp-1]"
+  [(set_attr "type" "store")])
+
 ;; For V8, LDSTUB has the effect of membar #StoreLoad.
 (define_insn "*membar_storeload"
   [(set (match_operand:BLK 0 "" "")
 	(unspec:BLK [(match_dup 0) (const_int 2)] UNSPEC_MEMBAR))]
-  "TARGET_V8"
+  "TARGET_V8 && !TARGET_LEON3"
   "ldstub\t[%%sp-1], %%g0"
   [(set_attr "type" "multi")])