[LLVMdev] MFENCE encoding

Evan Cheng evan.cheng at apple.com
Fri Oct 17 09:51:07 PDT 2008


Hmm. mfence and lfence needs special handling. I'll take a look.

Evan

On Oct 16, 2008, at 10:46 PM, Mon Ping Wang wrote:

> Hi,
>
> I have a problem with creating a MFENCE on X86 with SSE
>
> In X86InstrSSE.td, a MFENCE is
> def MFENCE : I<0xAE, MRM6m, (outs), (ins),
>               "mfence", [(int_x86_sse2_mfence)]>, TB, Requires<
> [HasSSE2]>;
>
> In X86CodeEmitter.cpp in emitInstruction
>
>  case X86II::MRM6m: case X86II::MRM7m: {
>    intptr_t PCAdj = (CurOp+4 != NumOps) ?
>      (MI.getOperand(CurOp+4).isImm() ? X86InstrInfo::sizeOfImm
> (Desc) : 4) : 0;
>    ...
>
> If I'm reading the code correctly, the NumOps is 0 and CurOp is 0 so
> we to get the 4th operand from the MFENCE operation which has no
> operands so we get an error.  I'm not sure what this code is trying to
> do.  Should the condition be < NumOps?
>
> Thanks,
>  -- Mon Ping
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list