[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