TargetRegisterInfo: Make the concept of imprecise lane masks explicit
authorMatthias Braun <matze@braunis.de>
Tue, 16 Jun 2015 18:22:26 +0000 (18:22 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 16 Jun 2015 18:22:26 +0000 (18:22 +0000)
commitff881427ec2336a561d63d25498741e980b18358
tree42fa63e0af63d4a31236016c2454d7572cb6d2de
parent8e206c19f4b08e3b9e481b5f3ce608b3574f5228
TargetRegisterInfo: Make the concept of imprecise lane masks explicit

LaneMasks as given by getSubRegIndexLaneMask() have a limited number of
of bits, so for targets with more than 31 disjunct subregister there may
be cases where:

   getSubReg(Reg,A) does not overlap getSubReg(Reg,B)

but we still have

   (getSubRegIndexLaneMask(A) & getSubRegIndexLaneMask(B)) != 0.

I had hoped to keep this an implementation detail of the tablegen but as
my next commit shows we can avoid unnecessary imp-defs operands if we
know that the lane masks in use are precise.

This is in preparation to http://reviews.llvm.org/D10470.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239837 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetRegisterInfo.h
lib/CodeGen/RegisterCoalescer.cpp