Assume lane masks are always precise
Allowing imprecise lane masks in case of more than 32 sub register lanes lead to some tricky corner cases, and I need another bugfix for another one. Instead I rather declare lane masks as precise and let tablegen abort if we do not have enough bits. This does not affect any in-tree target, even AMDGPU only needs 16 lanes at the moment. If the 32 lanes turn out to be a problem in the future, then we can easily change the LaneBitmask typedef to uint64_t. Differential Revision: http://reviews.llvm.org/D14557 llvm-svn: 253279
This commit is contained in:
@@ -400,14 +400,6 @@ void VirtRegRewriter::rewrite() {
|
||||
MO.setIsUndef(true);
|
||||
} else if (!MO.isDead()) {
|
||||
assert(MO.isDef());
|
||||
// Things get tricky when we ran out of lane mask bits and
|
||||
// merged multiple lanes into the overflow bit: In this case
|
||||
// our subregister liveness tracking isn't precise and we can't
|
||||
// know what subregister parts are undefined, fall back to the
|
||||
// implicit super-register def then.
|
||||
LaneBitmask LaneMask = TRI->getSubRegIndexLaneMask(SubReg);
|
||||
if (TargetRegisterInfo::isImpreciseLaneMask(LaneMask))
|
||||
SuperDefs.push_back(PhysReg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user