gcc/e0bd6c2bee0614fc4112a0a86a8...

64 lines
1.7 KiB
Diff

From e0bd6c2bee0614fc4112a0a86a808edd0d550b6f Mon Sep 17 00:00:00 2001
From: Patrick O'Neill <patrick@rivosinc.com>
Date: Fri, 21 Apr 2023 13:11:35 -0700
Subject: [PATCH] RISC-V: Enforce subword atomic LR/SC SEQ_CST
Replace LR.aq/SC.rl pairs with the SEQ_CST LR.aqrl/SC.rl pairs
recommended by table A.6 of the ISA manual.
2023-04-27 Patrick O'Neill <patrick@rivosinc.com>
gcc/ChangeLog:
* config/riscv/sync.md: Change LR.aq/SC.rl pairs into
sequentially consistent LR.aqrl/SC.rl pairs.
Signed-off-by: Patrick O'Neill <patrick@rivosinc.com>
---
gcc/config/riscv/sync.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/gcc/config/riscv/sync.md b/gcc/config/riscv/sync.md
index 192745282626..0c83ef046070 100644
--- a/gcc/config/riscv/sync.md
+++ b/gcc/config/riscv/sync.md
@@ -109,7 +109,7 @@
"TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
{
return "1:\;"
- "lr.w.aq\t%0, %1\;"
+ "lr.w.aqrl\t%0, %1\;"
"<insn>\t%5, %0, %2\;"
"and\t%5, %5, %3\;"
"and\t%6, %0, %4\;"
@@ -173,7 +173,7 @@
"TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
{
return "1:\;"
- "lr.w.aq\t%0, %1\;"
+ "lr.w.aqrl\t%0, %1\;"
"and\t%5, %0, %2\;"
"not\t%5, %5\;"
"and\t%5, %5, %3\;"
@@ -278,7 +278,7 @@
"TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
{
return "1:\;"
- "lr.w.aq\t%0, %1\;"
+ "lr.w.aqrl\t%0, %1\;"
"and\t%4, %0, %3\;"
"or\t%4, %4, %2\;"
"sc.w.rl\t%4, %4, %1\;"
@@ -443,7 +443,7 @@
"TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
{
return "1:\;"
- "lr.w.aq\t%0, %1\;"
+ "lr.w.aqrl\t%0, %1\;"
"and\t%6, %0, %4\;"
"bne\t%6, %z2, 1f\;"
"and\t%6, %0, %5\;"
--
2.39.3