[LLVMdev] VEX prefixes for JIT in llvm 3.5

Yaron Keren yaron.keren at gmail.com
Wed Sep 17 12:35:10 PDT 2014


Hi,

You need to call llvm::sys::getHostCPUName() and pass the result
to createTargetMachine() passed to the JIT. This patch should be applied:

 http://llvm.org/bugs/show_bug.cgi?id=17422

Anyhow, the JIT was removed from current code and will not be in next LLVM
release.

Yaron


2014-09-17 22:27 GMT+03:00 Matt Godbolt <matt at godbolt.org>:

> Hi Jim,
>
> Thanks for a very quick reply! That indeed does the trick!
>
> Presumably the default has changed in 3.5 to be a "generic" CPU
> instead of the native one? If that's the case I wonder why: especially
> when JITting it really only makes sense to target the actual CPU -
> unless I'm missing something? :)
>
> Thanks again,
>
> Matt
>
> On Wed, Sep 17, 2014 at 2:16 PM, Jim Grosbach <grosbach at apple.com> wrote:
> > 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
> >
>
>
>
> --
> Matt
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140917/79fa26f7/attachment.html>


More information about the llvm-dev mailing list