@@ -3341,24 +3341,26 @@ riscv_print_operand_reloc (FILE *file, rtx op, bool hi_reloc)
fputc (')', file);
}
-/* Return true if the .AQ suffix should be added to an AMO to implement the
- acquire portion of memory model MODEL. */
+/* Print the memory ordering suffix for AMOs. */
-static bool
-riscv_memmodel_needs_amo_acquire (const enum memmodel model)
+static void
+riscv_print_amo_memory_ordering_suffix (FILE *file, const enum memmodel model)
{
switch (model)
{
- case MEMMODEL_ACQ_REL:
- case MEMMODEL_SEQ_CST:
- case MEMMODEL_ACQUIRE:
+ case MEMMODEL_RELAXED:
+ break;
case MEMMODEL_CONSUME:
- return true;
-
+ case MEMMODEL_ACQUIRE:
+ fputs (".aq", file);
+ break;
case MEMMODEL_RELEASE:
- case MEMMODEL_RELAXED:
- return false;
-
+ fputs (".rl", file);
+ break;
+ case MEMMODEL_ACQ_REL:
+ case MEMMODEL_SEQ_CST:
+ fputs (".aqrl", file);
+ break;
default:
gcc_unreachable ();
}
@@ -3423,8 +3425,7 @@ riscv_print_operand (FILE *file, rtx op, int letter)
break;
case 'A':
- if (riscv_memmodel_needs_amo_acquire (model))
- fputs (".aq", file);
+ riscv_print_amo_memory_ordering_suffix (file, model);
break;
case 'F':