[LLVMdev] VEX prefixes for JIT in llvm 3.5

Matt Godbolt matt at godbolt.org
Wed Sep 17 11:44:36 PDT 2014


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



More information about the llvm-dev mailing list