[LLVMdev] VEX prefixes for JIT in llvm 3.5
Jim Grosbach
grosbach at apple.com
Wed Sep 17 12:16:47 PDT 2014
Hi Matt,
I suspect you need to specify the target CPU when you create the JIT. It’s just a method on the builder (e.g., builder.setMCPU(MCPU)). If you want auto-detection based on the host CPU, sys::getHostCPUName() returns a value suitable to be passed directly into the builder.
-Jim
> On Sep 17, 2014, at 11:44 AM, Matt Godbolt <matt at godbolt.org> wrote:
>
> Hi guys,
>
> I just upgraded our JIT system to use llvm 3.5 and noticed one big
> change in our generated code: we don't see any non-destructive VEX
> prefix instructions being emitted any more (vmulsd xmm0, xmm1, blah)
> etc.
>
> It's long been on my list of things to investigate anyway as I noticed
> llvm didn't emit VZEROUPPER calls either, so I supposed it might not
> be a bad thing to disable vex.
>
> That being said, try as I might I can't force avx on
> (builder.setMCPU("core-avx-i") and/or
> builder.setMAttrs(vector<string>{"+avx"});). We're still using the old
> JIT but I just spiked out a move to MCJIT and I still don't see the
> VEX instructions.
>
> Was there a deliberate change on the llvm-side to discourage VEX
> instructions unless they make a big enough difference (and/or is
> VZEROUPPER now emitted?).
>
> If not, how might I go about digging further into this?
>
> Many thanks in advance, Matt
>
> --
> Matt
> _______________________________________________
> 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