On Mon, Mar 03, 2008 at 11:08:24PM -0500, Robert Dewar wrote:
> Segher Boessenkool wrote:
> >>>The Linux kernel, and probably some user-space applications and 
> >>>libraries
> >>>as well, depend on GCC guaranteeing (a variant of) the following:
> >>>   "any access to a naturally aligned scalar object in memory
> >>>   that is not a bit-field will be performed by a single machine
> >>>   instruction whenever possible"
> >>>and it seems the current compiler actually does work like this.
> >>Seems a pity to have the bit-field exception here, why is it there?
> >
> >Bit-fields will generally require a read-modify-write instruction,
> >and I don't think we actually guarantee to generate one right now.
> 
> Well if they do require more than one instruction, the rule has
> no effect ("whenever possible"). If they can be done in one
> instruction  (as on the x86), then why not require this, why
> make a special case?

Because for the consumers whether the operation is done using
a single machine instruction is uninteresting.  What matters is
if that instruction is atomic.  x86 read-modify-write instructions
aren't atomic, unless lock prefix is used (and we definitely don't
want to use lock prefix on all bitfield accesses) - it actually
means there are separate read, modify and write uops.

        Jakub

Reply via email to