Use dmb ishld and dmb ishst for a release fence since this is less
restrictive than dmb ish.
Passes regress, OK for commit?
gcc:
* config/aarch64/atomics.md (*dmb): Expand release fence into dmb ishld
and dmb ishst.
---
diff --git a/gcc/config/aarch64/atomics.md b/gcc/config/aarch64/atomics.md
index
ea4a9367fc880ed449870f80aecd571bf1d61d7b..d4b4afb5815db50bc4344c885eb03e95cc153f61
100644
--- a/gcc/config/aarch64/atomics.md
+++ b/gcc/config/aarch64/atomics.md
@@ -870,7 +870,13 @@ (define_insn "*dmb"
enum memmodel model = memmodel_from_int (INTVAL (operands[1]));
if (is_mm_acquire (model))
return "dmb\\tishld";
+ else if (is_mm_release (model))
+ return "dmb\\tishld\;dmb\\tishst";
else
return "dmb\\tish";
}
+ [(set (attr "length")
+ (if_then_else
+ (match_test "is_mm_release (memmodel_from_int (INTVAL (operands[1])))")
+ (const_int 8) (const_int 4)))]
)