This is the mail archive of the 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, i386] RTM support

On 02/20/2012 01:51 PM, Uros Bizjak wrote:
On Mon, Feb 20, 2012 at 7:43 PM, Richard Henderson<> wrote:

IIUC the documentation, the fallback label is a parameter to xbegin
insn, but the insn itself doesn't jump anywhere - it just records the
parameter as a fallback address. However, there is no guarantee that
the fallback code is exactly at (pc)+6, so we have to use asm labels

6 bytes is the length of the xbegin instruction, so xbegin .+6 says that it has the fallback address at the immediately next insn after xbegin. Which is the _xbegin () semantics.

No! From 319433-012a.pdf, page 523, it says that

tempRIP = RIP + SignExtend (IMM),

where RIP is instruction following XBEGIN instruction.

So? .+N is generic assembler syntax, not specifying IMM=6. With "xbegin .+6" the assembler will of course encode IMM=0, because it knows that the xbegin insn is 6 bytes.

Is the "fallback code" the insn just after the xbegin insn?

In the current implementation, yes. It tests the rax value to know if it should execute the fallback or not.

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