This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Add pause intrinsic


On Wed, May 25, 2011 at 7:36 AM, Andrew Haley <aph@redhat.com> wrote:
> On 05/25/2011 01:34 PM, H.J. Lu wrote:
>> On Wed, May 25, 2011 at 3:26 AM, Andrew Haley <aph@redhat.com> wrote:
>>> On 05/24/2011 07:28 PM, H.J. Lu wrote:
>>>
>>>> This patch implements pause intrinsic suggested by Andi. ?OK
>>>> for trunk?
>>>
>>> What does "full memory barrier" here mean?
>>>
>>> +@table @code
>>> +@item void __builtin_ia32_pause (void)
>>> +Generates the @code{pause} machine instruction with full memory barrier.
>>> +@end table
>>>
>>> There a memory clobber, but no barrier instruction AFAICS. ?The
>>> doc needs to explain it a bit better.
>>
>> There are read/load memory barrier, write/store memory barrier and full/general
>> memory barrier. ?You can find them at
>>
>> http://www.kernel.org/doc/Documentation/memory-barriers.txt
>>
>> Should I include a pointer to it?
>
> No. ?I know perfectly well what memory barriers are. ?I'm not asking
> what "full memory barrier" means.
>
> What barrier instruction(s) does __builtin_ia32_pause() generate?
> All I see in the patch is "rep; nop". ?Is that really a full memory
> barrier?
>

It is a full memory barrier in the sense that compiler won't move
load/store across it.  It is intended for kernel.

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]