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)
commitf63c807809a4f4432f14204fef16f8d814fee188
treeea891b930586109f887dd9d916d9d635c8eec248
parent1c140bda696ccdddf19619c1f1ef697ae7a6ca09
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.

llvm-svn: 239837
llvm/include/llvm/Target/TargetRegisterInfo.h
llvm/lib/CodeGen/RegisterCoalescer.cpp