> @@ -54,8 +54,13 @@ (define_insn "atomic_load_ztso<mode>"
>      if (model == MEMMODEL_SEQ_CST)
>        return "fence\trw,rw\;"
>            "<load>\t%0,%1";
> -    else
> -      return "<load>\t%0,%1";
> +
> +    /* Ignoring RCsc atomic load-acquire on MEMMODEL_SEQ_CST due to
> +       Note 3 abi break.  */
> +    if (TARGET_ZALASR && model == MEMMODEL_ACQUIRE)
> +      return "<load>.aq\t%0,%1";

Unless I'm confused now, Table 2 (Ztso mappings) of the PSABI is
actually suggesting

 +    if (TARGET_ZALASR && model == MEMMODEL_ACQUIRE)   (*)
 +      return "<load>\t%0,%1";

(i.e., without the .aq annotation).

If I read the current code right, a MEMMODEL_ACQUIRE atomic load
is currently mapped to (a "plain") <load>\t under Ztso.


> @@ -74,11 +79,15 @@ (define_insn "atomic_store_ztso<mode>"
>      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
>      model = memmodel_base (model);
>  
> +    if (TARGET_ZALASR
> +     && (model == MEMMODEL_SEQ_CST || model == MEMMODEL_RELEASE))
> +      return "<store>.rl\t%z1,%0";

In the (sub)case

 +    if (TARGET_ZALASR && model == MEMMODEL_RELEASE)

Table 2 seems to says "just"

 +      return "<store>\t%z1,%0";

(i.e., without the .rl annotation); IIUC, the latter matches the
current mapping of MEMMODEL_RELEASE atomic stores in Ztso.

(Same considerations would apply to the testsuite, or) what am I
missing?

  Andrea

Reply via email to