[llvm-dev] Memory scope proposal
Tom Stellard via llvm-dev
llvm-dev at lists.llvm.org
Wed Jun 22 13:50:44 PDT 2016
+ Brian and Konstantin
On Wed, May 18, 2016 at 11:18:53AM +0300, Pekka Jääskeläinen wrote:
> Hi all,
>
> On 02.05.2016 17:46, Tom Stellard via llvm-dev wrote:
> >>Why not going with a metadata attachment directly and kill the "singlethread" keyword? Something like:
> >>>Something like:
> >>>
> >>> cmpxchg i32* %addr, i32 42, i32 0 monotonic monotonic, 3, !memory.scope{!42}
> >>> cmpxchg i32* %addr, i32 42, i32 0 monotonic monotonic, 3, !memory.scope{!43}
> >>>
> >>>...
> >>>
> >>>!42 = !{"singlethread"}
> >>>!43 = !{"L2"}
> >>>
> >>>
> >>>I also avoids manipulating/pruning the global map, and target won't depend on integer to keep bitcode compatibility.
> >>>
> >>>
> >This seems like it will work assuming that promoting something like "L2" to the
> >most conservative memory scope is legal (this is what would have to happen
> >if the metadata was dropped). Are there any targets where this type of'
> >promotion would be illegal?
>
> +1
>
> Sorry to enter this discussion so late, but in my opinion this
> is a very good non-intrusive starting point solution.
>
> Implementing it as a MD with the assumption of there being a safe
> conservative memory scope to fall back to (in case the MD gets
> stripped off for some reason) converts it to a mere
> optimization hint without the need to touch LLVM IR instruction semantics.
>
> Also, as it's only a MD, if we encounter a need to extend it later towards a
> more integrated solution (or a mechanism to support
> targets where this scheme is not feasible), we can more easily do so.
>
> BR,
> --
> Pekka
More information about the llvm-dev
mailing list