construct SiteMasks based on OperationMasks

This commit is contained in:
Joshua Warner 2013-02-15 22:04:32 -07:00 committed by Joshua Warner
parent 4462b87f10
commit 49bfda3932
2 changed files with 23 additions and 23 deletions

View File

@ -340,7 +340,7 @@ maybeMove(Context* c, Read* read, bool intersectRead, bool includeNextWord,
(size, src, tmp, (size, src, tmp,
OperandMask(dstMask.typeMask, dstMask.registerMask)); OperandMask(dstMask.typeMask, dstMask.registerMask));
SiteMask srcMask(src.typeMask, src.registerMask, AnyFrameIndex); SiteMask srcMask = SiteMask::lowPart(src);
for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) { for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) {
Site* s = it.next(); Site* s = it.next();
if (s->match(c, srcMask) or s->match(c, dstMask)) { if (s->match(c, srcMask) or s->match(c, dstMask)) {
@ -365,7 +365,7 @@ maybeMove(Context* c, Read* read, bool intersectRead, bool includeNextWord,
(size, src, tmp, (size, src, tmp,
OperandMask(1 << dstSite->type(c), dstSite->registerMask(c))); OperandMask(1 << dstSite->type(c), dstSite->registerMask(c)));
SiteMask srcMask(src.typeMask, src.registerMask, AnyFrameIndex); SiteMask srcMask = SiteMask::lowPart(src);
unsigned cost = 0xFFFFFFFF; unsigned cost = 0xFFFFFFFF;
Site* srcSite = 0; Site* srcSite = 0;
for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) { for (SiteIterator it(c, value, true, includeNextWord); it.hasMore();) {
@ -403,7 +403,7 @@ maybeMove(Context* c, Read* read, bool intersectRead, bool includeNextWord,
srcSite->freeze(c, value); srcSite->freeze(c, value);
dstSite->freeze(c, value); dstSite->freeze(c, value);
SiteMask tmpMask(tmp.typeMask, tmp.registerMask, AnyFrameIndex); SiteMask tmpMask = SiteMask::lowPart(tmp);
SingleRead tmpRead(tmpMask, 0); SingleRead tmpRead(tmpMask, 0);
tmpRead.value = value; tmpRead.value = value;
tmpRead.successor_ = value; tmpRead.successor_ = value;

View File

@ -580,8 +580,8 @@ class MoveEvent: public Event {
| static_cast<uint64_t>(srcValue->source->registerMask(c))), | static_cast<uint64_t>(srcValue->source->registerMask(c))),
dstSize, dst); dstSize, dst);
SiteMask dstLowMask(dst.typeMask, dst.registerMask, AnyFrameIndex); SiteMask dstLowMask = SiteMask::lowPart(dst);
SiteMask dstHighMask(dst.typeMask, dst.registerMask >> 32, AnyFrameIndex); SiteMask dstHighMask = SiteMask::highPart(dst);
if (srcSelectSize >= vm::TargetBytesPerWord if (srcSelectSize >= vm::TargetBytesPerWord
and dstSize >= vm::TargetBytesPerWord and dstSize >= vm::TargetBytesPerWord
@ -710,8 +710,8 @@ appendMove(Context* c, lir::BinaryOperation type, unsigned srcSize,
append(c, new(c->zone) append(c, new(c->zone)
MoveEvent MoveEvent
(c, type, srcSize, srcSelectSize, srcValue, dstSize, dstValue, (c, type, srcSize, srcSelectSize, srcValue, dstSize, dstValue,
SiteMask(src.typeMask, src.registerMask, AnyFrameIndex), SiteMask::lowPart(src),
SiteMask(src.typeMask, src.registerMask >> 32, AnyFrameIndex))); SiteMask::highPart(src)));
} }
@ -846,8 +846,8 @@ class CombineEvent: public Event {
resultSize, resultSize,
cMask); cMask);
SiteMask resultLowMask(cMask.typeMask, cMask.registerMask, AnyFrameIndex); SiteMask resultLowMask = SiteMask::lowPart(cMask);
SiteMask resultHighMask(cMask.typeMask, cMask.registerMask >> 32, AnyFrameIndex); SiteMask resultHighMask = SiteMask::highPart(cMask);
Site* low = getTarget(c, secondValue, resultValue, resultLowMask); Site* low = getTarget(c, secondValue, resultValue, resultLowMask);
unsigned lowSize = low->registerSize(c); unsigned lowSize = low->registerSize(c);
@ -943,10 +943,10 @@ appendCombine(Context* c, lir::TernaryOperation type,
firstSize, firstValue, firstSize, firstValue,
secondSize, secondValue, secondSize, secondValue,
resultSize, resultValue, resultSize, resultValue,
SiteMask(firstMask.typeMask, firstMask.registerMask, AnyFrameIndex), SiteMask::lowPart(firstMask),
SiteMask(firstMask.typeMask, firstMask.registerMask >> 32, AnyFrameIndex), SiteMask::highPart(firstMask),
SiteMask(secondMask.typeMask, secondMask.registerMask, AnyFrameIndex), SiteMask::lowPart(secondMask),
SiteMask(secondMask.typeMask, secondMask.registerMask >> 32, AnyFrameIndex))); SiteMask::highPart(secondMask)));
} }
} }
@ -988,8 +988,8 @@ class TranslateEvent: public Event {
resultSize, resultSize,
bMask); bMask);
SiteMask resultLowMask(bMask.typeMask, bMask.registerMask, AnyFrameIndex); SiteMask resultLowMask = SiteMask::lowPart(bMask);
SiteMask resultHighMask(bMask.typeMask, bMask.registerMask >> 32, AnyFrameIndex); SiteMask resultHighMask = SiteMask::highPart(bMask);
Site* low = getTarget(c, value, resultValue, resultLowMask); Site* low = getTarget(c, value, resultValue, resultLowMask);
unsigned lowSize = low->registerSize(c); unsigned lowSize = low->registerSize(c);
@ -1056,8 +1056,8 @@ appendTranslate(Context* c, lir::BinaryOperation type, unsigned firstSize,
append(c, new(c->zone) append(c, new(c->zone)
TranslateEvent TranslateEvent
(c, type, firstSize, firstValue, resultSize, resultValue, (c, type, firstSize, firstValue, resultSize, resultValue,
SiteMask(first.typeMask, first.registerMask, AnyFrameIndex), SiteMask::lowPart(first),
SiteMask(first.typeMask, first.registerMask >> 32, AnyFrameIndex))); SiteMask::highPart(first)));
} }
} }
@ -1317,7 +1317,7 @@ class BranchEvent: public Event {
size, OperandMask(0, 0), size, OperandMask(0, 0),
vm::TargetBytesPerWord, dstMask); vm::TargetBytesPerWord, dstMask);
this->addRead(c, addressValue, SiteMask(dstMask.typeMask, dstMask.registerMask, AnyFrameIndex)); this->addRead(c, addressValue, SiteMask::lowPart(dstMask));
} }
virtual const char* name() { virtual const char* name() {
@ -1418,10 +1418,10 @@ appendBranch(Context* c, lir::TernaryOperation type, unsigned size, Value* first
(c, new(c->zone) (c, new(c->zone)
BranchEvent BranchEvent
(c, type, size, firstValue, secondValue, addressValue, (c, type, size, firstValue, secondValue, addressValue,
SiteMask(firstMask.typeMask, firstMask.registerMask, AnyFrameIndex), SiteMask::lowPart(firstMask),
SiteMask(firstMask.typeMask, firstMask.registerMask >> 32, AnyFrameIndex), SiteMask::highPart(firstMask),
SiteMask(secondMask.typeMask, secondMask.registerMask, AnyFrameIndex), SiteMask::lowPart(secondMask),
SiteMask(secondMask.typeMask, secondMask.registerMask >> 32, AnyFrameIndex))); SiteMask::highPart(secondMask)));
} }
} }
@ -1474,7 +1474,7 @@ class JumpEvent: public Event {
assert(c, not thunk); assert(c, not thunk);
this->addRead(c, address, SiteMask(mask.typeMask, mask.registerMask, AnyFrameIndex)); this->addRead(c, address, SiteMask::lowPart(mask));
} }
virtual const char* name() { virtual const char* name() {