On Thu, Mar 8, 2012 at 12:44 AM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
> Hi HJ,
> I am working on that. Here's some clarification from Jakub:
>> I meant that e.g. instead of:
>> foo (int *p, int oldv, int newv)
>> __atomic_compare_exchange_n (p, &oldv, newv, 0, __ATOMIC_ACQUIRE,
>> return oldv;
>> if you want to generate xacquire lock cmpxchgl instead of just lock cmpxchgl
>> you could write
>> __atomic_compare_exchange_n (p, &oldv, newv, 0, __ATOMIC_ACQUIRE |
>> __ATOMIC_HLE_XACQUIRE, __ATOMIC_ACQUIRE);
>> (dunno if we'd want the flag to be listed in both success and fail memmodel
>> variants, or just one, for most of other __atomic_* builtins there is just
>> __ATOMIC_HLE_XACQUIRE and __ATOMIC_HLE_XRELEASE would be just predefined
>> macros like __ATOMIC_ACQUIRE etc. is.
> I don't think, we need to change FE for that...
Please note that __ATOMIC_HLE_XACQUIRE has nothing to do with
__ATOMIC_ACQUIRE. You can have
__ATOMIC_ACQUIRE | __ATOMIC_HLE_XRELEASE
>> That sounds a good idea. Will it require front-end and middle-end changes?
>> I assume they will be no-op for other backends.