Add TRI::getSubRegIndexLaneMask().
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 11 Sep 2012 16:34:08 +0000 (16:34 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 11 Sep 2012 16:34:08 +0000 (16:34 +0000)
commita6035773d8d29827a124e65c258adbf0dcbb1a5a
tree7e96180d5cc189add9ff33b5753122d491968fd2
parentde0250728b1a9e69ca593168f1ea2ecef8e9bf95
Add TRI::getSubRegIndexLaneMask().

Sub-register lane masks are bitmasks that can be used to determine if
two sub-registers of a virtual register will overlap. For example, ARM's
ssub0 and ssub1 sub-register indices don't overlap each other, but both
overlap dsub0 and qsub0.

The lane masks will be accurate on most targets, but on targets that use
sub-register indexes in an irregular way, the masks may conservatively
report that two sub-register indices overlap when the eventually
allocated physregs don't.

Irregular register banks also mean that the bits in a lane mask can't be
mapped onto register units, but the concept is similar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163630 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetRegisterInfo.h
lib/Target/TargetRegisterInfo.cpp
utils/TableGen/CodeGenRegisters.cpp
utils/TableGen/CodeGenRegisters.h
utils/TableGen/RegisterInfoEmitter.cpp