> @@ -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