replace boolT with plain old bool in a few places
This commit is contained in:
54
src/liveness_set.cpp
Normal file
54
src/liveness_set.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
#include "BasicBlock.h"
|
||||
#include "machine_x86.h"
|
||||
|
||||
/* DU bit definitions for each reg value - including index registers */
|
||||
LivenessSet duReg[] = { {},
|
||||
//AH AL . . AX, BH
|
||||
{rAH,rAL,rAX},{rCH,rCL,rCX},{rDH,rDL,rDX},{rBH,rBL,rBX},
|
||||
/* uint16_t regs */
|
||||
{rSP},{rBP},{rSI},{rDI},
|
||||
/* seg regs */
|
||||
{rES},{rCS},{rSS},{rDS},
|
||||
/* uint8_t regs */
|
||||
{rAL},{rCL},{rDL},{rBL},
|
||||
{rAH},{rCH},{rDH},{rBH},
|
||||
/* tmp reg */
|
||||
{rTMP},{rTMP2},
|
||||
/* index regs */
|
||||
{rBX,rSI},{rBX,rDI},{rBP,rSI},{rBP,rDI},
|
||||
{rSI},{rDI},{rBP},{rBX}
|
||||
};
|
||||
|
||||
LivenessSet &LivenessSet::setReg(int r)
|
||||
{
|
||||
this->reset();
|
||||
*this |= duReg[r];
|
||||
return *this;
|
||||
}
|
||||
LivenessSet &LivenessSet::clrReg(int r)
|
||||
{
|
||||
return *this -= duReg[r];
|
||||
}
|
||||
|
||||
LivenessSet &LivenessSet::addReg(int r)
|
||||
{
|
||||
*this |= duReg[r];
|
||||
// postProcessCompositeRegs();
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool LivenessSet::testRegAndSubregs(int r) const
|
||||
{
|
||||
return (*this & duReg[r]).any();
|
||||
}
|
||||
void LivenessSet::postProcessCompositeRegs()
|
||||
{
|
||||
if(testReg(rAL) and testReg(rAH))
|
||||
registers.insert(rAX);
|
||||
if(testReg(rCL) and testReg(rCH))
|
||||
registers.insert(rCX);
|
||||
if(testReg(rDL) and testReg(rDH))
|
||||
registers.insert(rDX);
|
||||
if(testReg(rBL) and testReg(rBH))
|
||||
registers.insert(rBX);
|
||||
}
|
||||
Reference in New Issue
Block a user