Handle non-~0 lane masks on live-in registers in LivePhysRegs
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>
Fri, 28 Oct 2016 20:06:37 +0000 (20:06 +0000)
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>
Fri, 28 Oct 2016 20:06:37 +0000 (20:06 +0000)
commit2717175c99caab6313feb81e71b1f5e9928f92fe
tree1628c0ed39601e788f159a8b8756be6040bfaf56
parent931bc548e6b6f643370a32306d9d897d19884c37
Handle non-~0 lane masks on live-in registers in LivePhysRegs

When LivePhysRegs adds live-in registers, it recognizes ~0 as a special
lane mask indicating the entire register. If the lane mask is not ~0,
it will only add the subregisters that overlap the specified lane mask.

The problem is that if a live-in register does not have subregisters,
and the lane mask is not ~0, it will not be added to the live set.
(The given lane mask may simply be the lane mask of its register class.)

If a register does not have subregisters, add it to the live set if
the lane mask is non-zero.

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

llvm-svn: 285440
llvm/lib/CodeGen/LivePhysRegs.cpp
llvm/test/CodeGen/Hexagon/livephysregs-lane-masks2.mir [new file with mode: 0644]