mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-05 22:59:16 +00:00
Fixed a bug: outputting name of variable instead of its value.
Also, placed DEBUG() guards around debug information so that the generated file is much smaller and hence should be faster to preprocess/compile. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7180 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7eac4766b1
commit
f6e5217b54
@ -1,3 +1,4 @@
|
|||||||
|
#include "Support/Statistic.h"
|
||||||
#include "Record.h"
|
#include "Record.h"
|
||||||
#include "CodeEmitterGen.h"
|
#include "CodeEmitterGen.h"
|
||||||
|
|
||||||
@ -39,19 +40,19 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
unsigned Value = 0;
|
unsigned Value = 0;
|
||||||
const std::vector<RecordVal> &Vals = R->getValues();
|
const std::vector<RecordVal> &Vals = R->getValues();
|
||||||
|
|
||||||
o << " // prefilling: ";
|
DEBUG(o << " // prefilling: ");
|
||||||
// Start by filling in fixed values...
|
// Start by filling in fixed values...
|
||||||
for (unsigned i = 0, e = BI->getNumBits(); i != e; ++i) {
|
for (unsigned i = 0, e = BI->getNumBits(); i != e; ++i) {
|
||||||
if (BitInit *B = dynamic_cast<BitInit*>(BI->getBit(e-i-1))) {
|
if (BitInit *B = dynamic_cast<BitInit*>(BI->getBit(e-i-1))) {
|
||||||
Value |= B->getValue() << (e-i-1);
|
Value |= B->getValue() << (e-i-1);
|
||||||
o << B->getValue();
|
DEBUG(o << B->getValue());
|
||||||
} else {
|
} else {
|
||||||
o << "0";
|
DEBUG(o << "0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
o << "\n";
|
DEBUG(o << "\n");
|
||||||
|
|
||||||
o << " // " << *InstVal << "\n";
|
DEBUG(o << " // " << *InstVal << "\n");
|
||||||
o << " Value = " << Value << "U;\n\n";
|
o << " Value = " << Value << "U;\n\n";
|
||||||
|
|
||||||
// Loop over all of the fields in the instruction adding in any
|
// Loop over all of the fields in the instruction adding in any
|
||||||
@ -129,6 +130,11 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEBUG(o << " // Var: begin = " << beginBitInVar
|
||||||
|
<< ", end = " << endBitInVar
|
||||||
|
<< "; Inst: begin = " << beginBitInInst
|
||||||
|
<< ", end = " << endBitInInst << "\n");
|
||||||
|
|
||||||
if (continuous) {
|
if (continuous) {
|
||||||
o << " // continuous: op" << OpOrder[Vals[i].getName()] << "\n";
|
o << " // continuous: op" << OpOrder[Vals[i].getName()] << "\n";
|
||||||
|
|
||||||
@ -136,7 +142,7 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
// Low mask (ie. shift, if necessary)
|
// Low mask (ie. shift, if necessary)
|
||||||
if (endBitInVar != 0) {
|
if (endBitInVar != 0) {
|
||||||
o << " op" << OpOrder[Vals[i].getName()]
|
o << " op" << OpOrder[Vals[i].getName()]
|
||||||
<< " >>= endBitInVar;\n";
|
<< " >>= " << endBitInVar << ";\n";
|
||||||
beginBitInVar -= endBitInVar;
|
beginBitInVar -= endBitInVar;
|
||||||
endBitInVar = 0;
|
endBitInVar = 0;
|
||||||
}
|
}
|
||||||
@ -168,10 +174,10 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
for (int i = FieldInitializer->getNumBits()-1; i >= 0; --i) {
|
for (int i = FieldInitializer->getNumBits()-1; i >= 0; --i) {
|
||||||
if (BitInit *BI=dynamic_cast<BitInit*>(FieldInitializer->getBit(i)))
|
if (BitInit *BI=dynamic_cast<BitInit*>(FieldInitializer->getBit(i)))
|
||||||
{
|
{
|
||||||
o << " // bit init: f: " << f << ", i: " << i << "\n";
|
DEBUG(o << " // bit init: f: " << f << ", i: " << i << "\n");
|
||||||
} else if (UnsetInit *UI =
|
} else if (UnsetInit *UI =
|
||||||
dynamic_cast<UnsetInit*>(FieldInitializer->getBit(i))) {
|
dynamic_cast<UnsetInit*>(FieldInitializer->getBit(i))) {
|
||||||
o << " // unset init: f: " << f << ", i: " << i << "\n";
|
DEBUG(o << " // unset init: f: " << f << ", i: " << i << "\n");
|
||||||
} else if (VarBitInit *VBI =
|
} else if (VarBitInit *VBI =
|
||||||
dynamic_cast<VarBitInit*>(FieldInitializer->getBit(i))) {
|
dynamic_cast<VarBitInit*>(FieldInitializer->getBit(i))) {
|
||||||
TypedInit *TI = VBI->getVariable();
|
TypedInit *TI = VBI->getVariable();
|
||||||
@ -184,9 +190,9 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
// need to individually OR in the bits
|
// need to individually OR in the bits
|
||||||
|
|
||||||
// for debugging, output the regular version anyway, commented
|
// for debugging, output the regular version anyway, commented
|
||||||
o << " // Value |= getValueBit(op"
|
DEBUG(o << " // Value |= getValueBit(op"
|
||||||
<< OpOrder[VI->getName()] << ", " << VBI->getBitNum()
|
<< OpOrder[VI->getName()] << ", " << VBI->getBitNum()
|
||||||
<< ")" << " << " << i << ";\n";
|
<< ")" << " << " << i << ";\n");
|
||||||
} else {
|
} else {
|
||||||
o << " Value |= getValueBit(op" << OpOrder[VI->getName()]
|
o << " Value |= getValueBit(op" << OpOrder[VI->getName()]
|
||||||
<< ", " << VBI->getBitNum()
|
<< ", " << VBI->getBitNum()
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include "Support/Statistic.h"
|
||||||
#include "Record.h"
|
#include "Record.h"
|
||||||
#include "CodeEmitterGen.h"
|
#include "CodeEmitterGen.h"
|
||||||
|
|
||||||
@ -39,19 +40,19 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
unsigned Value = 0;
|
unsigned Value = 0;
|
||||||
const std::vector<RecordVal> &Vals = R->getValues();
|
const std::vector<RecordVal> &Vals = R->getValues();
|
||||||
|
|
||||||
o << " // prefilling: ";
|
DEBUG(o << " // prefilling: ");
|
||||||
// Start by filling in fixed values...
|
// Start by filling in fixed values...
|
||||||
for (unsigned i = 0, e = BI->getNumBits(); i != e; ++i) {
|
for (unsigned i = 0, e = BI->getNumBits(); i != e; ++i) {
|
||||||
if (BitInit *B = dynamic_cast<BitInit*>(BI->getBit(e-i-1))) {
|
if (BitInit *B = dynamic_cast<BitInit*>(BI->getBit(e-i-1))) {
|
||||||
Value |= B->getValue() << (e-i-1);
|
Value |= B->getValue() << (e-i-1);
|
||||||
o << B->getValue();
|
DEBUG(o << B->getValue());
|
||||||
} else {
|
} else {
|
||||||
o << "0";
|
DEBUG(o << "0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
o << "\n";
|
DEBUG(o << "\n");
|
||||||
|
|
||||||
o << " // " << *InstVal << "\n";
|
DEBUG(o << " // " << *InstVal << "\n");
|
||||||
o << " Value = " << Value << "U;\n\n";
|
o << " Value = " << Value << "U;\n\n";
|
||||||
|
|
||||||
// Loop over all of the fields in the instruction adding in any
|
// Loop over all of the fields in the instruction adding in any
|
||||||
@ -129,6 +130,11 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEBUG(o << " // Var: begin = " << beginBitInVar
|
||||||
|
<< ", end = " << endBitInVar
|
||||||
|
<< "; Inst: begin = " << beginBitInInst
|
||||||
|
<< ", end = " << endBitInInst << "\n");
|
||||||
|
|
||||||
if (continuous) {
|
if (continuous) {
|
||||||
o << " // continuous: op" << OpOrder[Vals[i].getName()] << "\n";
|
o << " // continuous: op" << OpOrder[Vals[i].getName()] << "\n";
|
||||||
|
|
||||||
@ -136,7 +142,7 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
// Low mask (ie. shift, if necessary)
|
// Low mask (ie. shift, if necessary)
|
||||||
if (endBitInVar != 0) {
|
if (endBitInVar != 0) {
|
||||||
o << " op" << OpOrder[Vals[i].getName()]
|
o << " op" << OpOrder[Vals[i].getName()]
|
||||||
<< " >>= endBitInVar;\n";
|
<< " >>= " << endBitInVar << ";\n";
|
||||||
beginBitInVar -= endBitInVar;
|
beginBitInVar -= endBitInVar;
|
||||||
endBitInVar = 0;
|
endBitInVar = 0;
|
||||||
}
|
}
|
||||||
@ -168,10 +174,10 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
for (int i = FieldInitializer->getNumBits()-1; i >= 0; --i) {
|
for (int i = FieldInitializer->getNumBits()-1; i >= 0; --i) {
|
||||||
if (BitInit *BI=dynamic_cast<BitInit*>(FieldInitializer->getBit(i)))
|
if (BitInit *BI=dynamic_cast<BitInit*>(FieldInitializer->getBit(i)))
|
||||||
{
|
{
|
||||||
o << " // bit init: f: " << f << ", i: " << i << "\n";
|
DEBUG(o << " // bit init: f: " << f << ", i: " << i << "\n");
|
||||||
} else if (UnsetInit *UI =
|
} else if (UnsetInit *UI =
|
||||||
dynamic_cast<UnsetInit*>(FieldInitializer->getBit(i))) {
|
dynamic_cast<UnsetInit*>(FieldInitializer->getBit(i))) {
|
||||||
o << " // unset init: f: " << f << ", i: " << i << "\n";
|
DEBUG(o << " // unset init: f: " << f << ", i: " << i << "\n");
|
||||||
} else if (VarBitInit *VBI =
|
} else if (VarBitInit *VBI =
|
||||||
dynamic_cast<VarBitInit*>(FieldInitializer->getBit(i))) {
|
dynamic_cast<VarBitInit*>(FieldInitializer->getBit(i))) {
|
||||||
TypedInit *TI = VBI->getVariable();
|
TypedInit *TI = VBI->getVariable();
|
||||||
@ -184,9 +190,9 @@ void CodeEmitterGen::createEmitter(std::ostream &o) {
|
|||||||
// need to individually OR in the bits
|
// need to individually OR in the bits
|
||||||
|
|
||||||
// for debugging, output the regular version anyway, commented
|
// for debugging, output the regular version anyway, commented
|
||||||
o << " // Value |= getValueBit(op"
|
DEBUG(o << " // Value |= getValueBit(op"
|
||||||
<< OpOrder[VI->getName()] << ", " << VBI->getBitNum()
|
<< OpOrder[VI->getName()] << ", " << VBI->getBitNum()
|
||||||
<< ")" << " << " << i << ";\n";
|
<< ")" << " << " << i << ";\n");
|
||||||
} else {
|
} else {
|
||||||
o << " Value |= getValueBit(op" << OpOrder[VI->getName()]
|
o << " Value |= getValueBit(op" << OpOrder[VI->getName()]
|
||||||
<< ", " << VBI->getBitNum()
|
<< ", " << VBI->getBitNum()
|
||||||
|
Loading…
Reference in New Issue
Block a user