[globalisel][tablegen] Implement unindexed load, non-extending load, and MemVT checks
authorDaniel Sanders <daniel_l_sanders@apple.com>
Mon, 16 Oct 2017 00:56:30 +0000 (00:56 +0000)
committerDaniel Sanders <daniel_l_sanders@apple.com>
Mon, 16 Oct 2017 00:56:30 +0000 (00:56 +0000)
commita71f45476563d0c12cd97bee86836372b05bda73
tree79cb83a650cfe636d36b37ca109dcdc22894be4d
parent746711914995ca2b66b0a814e69277f3851cda99
[globalisel][tablegen] Implement unindexed load, non-extending load, and MemVT checks

Summary:
This includes some context-sensitivity in the MVT to LLT conversion so that
pointer types are tested correctly.
FIXME: I'm not happy with the way this is done since everything is a
       special-case. I've yet to find a reasonable way to implement it.

select-load.mir fails because <1 x s64> loads in tablegen get priority over s64
loads. This is fixed in the next patch and as such they should be committed
together, I've posted them separately to help with the review.

Depends on D37456

Reviewers: ab, qcolombet, t.p.northover, rovka, aditya_nandakumar

Subscribers: kristof.beyls, javed.absar, llvm-commits, igorb

Differential Revision: https://reviews.llvm.org/D37457

llvm-svn: 315884
llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
llvm/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
llvm/test/CodeGen/AArch64/GlobalISel/select-load.mir
llvm/test/TableGen/GlobalISelEmitter.td
llvm/utils/TableGen/GlobalISelEmitter.cpp