[llvm-commits] [llvm] r155618 - in /llvm/trunk/lib/Target/X86: X86.td X86Subtarget.cpp

Pete Cooper pete.cooper at gmail.com
Sat Apr 28 15:38:18 PDT 2012


I tracked down the difference in llc and lli which leads to a crash in one
but not the other with these changes applied.  The llvm_unreachable i
removed here from X86BaseInfo.h fires in lli because of a MOV32r0
instruction.

The JIT passes this instruction all the way through to emission.  llc
instead calls LowerUnaryToTwoAddr(OutMI, X86::XOR32rr); which stops any
MOV32r0 instructions from ever getting to MC emission and triggering the
llvm_unreachable.

Anyone got any advice on this?  We could have the JIT also make the
LowerUnaryToTwoAddr call but without refactoring this is getting to be a
mess of copied and pasted code.  Not that I helped that at all with this
patch :)

Pete

On Sat, Apr 28, 2012 at 12:03 AM, Pete Cooper <pete.cooper at gmail.com> wrote:

> Hi Craig
>
> With gratuitous copy and paste I've got the x86 JIT working on AVX.  This
> passes make check for me.
>
> I did this in a rush so please have a good look at the patch to see if you
> want to commit it.  I think it also needs some whitespace removal.
>
> The only change I really wasn't happy with is the one in X86BaseInfo.h.  I
> hit that llvm_unreachable on most of the tests after my changes.  I'm
> confused as my code is mostly copied from the X86MCCodeEmitter so i don't
> know why it doesn't fire from there.
>
> Thanks,
> Pete
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120428/3384577b/attachment.html>


More information about the llvm-commits mailing list