1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

Fixed some indentation in the AsmWriterInst

implementation.  Also changed the constructor
so that it does not require a Record, making it
usable by the EDEmitter.

llvm-svn: 95715
This commit is contained in:
Sean Callanan 2010-02-09 23:06:35 +00:00
parent 1f609fe5fd
commit c1249e600e
4 changed files with 22 additions and 14 deletions

View File

@ -256,7 +256,11 @@ void AsmWriterEmitter::EmitPrintInstruction(raw_ostream &O) {
E = Target.inst_end(); I != E; ++I) E = Target.inst_end(); I != E; ++I)
if (!I->second.AsmString.empty() && if (!I->second.AsmString.empty() &&
I->second.TheDef->getName() != "PHI") I->second.TheDef->getName() != "PHI")
Instructions.push_back(AsmWriterInst(I->second, AsmWriter)); Instructions.push_back(
AsmWriterInst(I->second,
AsmWriter->getValueAsInt("Variant"),
AsmWriter->getValueAsInt("FirstOperandColumn"),
AsmWriter->getValueAsInt("OperandSpacing")));
// Get the instruction numbering. // Get the instruction numbering.
Target.getInstructionsByEnumValue(NumberedInstructions); Target.getInstructionsByEnumValue(NumberedInstructions);

View File

@ -46,13 +46,12 @@ std::string AsmWriterOperand::getCode() const {
/// ParseAsmString - Parse the specified Instruction's AsmString into this /// ParseAsmString - Parse the specified Instruction's AsmString into this
/// AsmWriterInst. /// AsmWriterInst.
/// ///
AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, Record *AsmWriter) { AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI,
unsigned Variant,
int FirstOperandColumn,
int OperandSpacing) {
this->CGI = &CGI; this->CGI = &CGI;
unsigned Variant = AsmWriter->getValueAsInt("Variant");
int FirstOperandColumn = AsmWriter->getValueAsInt("FirstOperandColumn");
int OperandSpacing = AsmWriter->getValueAsInt("OperandSpacing");
unsigned CurVariant = ~0U; // ~0 if we are outside a {.|.|.} region, other #. unsigned CurVariant = ~0U; // ~0 if we are outside a {.|.|.} region, other #.
// This is the number of tabs we've seen if we're doing columnar layout. // This is the number of tabs we've seen if we're doing columnar layout.
@ -88,9 +87,10 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, Record *AsmWriter) {
unsigned DestColumn = FirstOperandColumn + unsigned DestColumn = FirstOperandColumn +
CurColumn++ * OperandSpacing; CurColumn++ * OperandSpacing;
Operands.push_back( Operands.push_back(
AsmWriterOperand("O.PadToColumn(" + AsmWriterOperand(
utostr(DestColumn) + ");\n", "O.PadToColumn(" +
AsmWriterOperand::isLiteralStatementOperand)); utostr(DestColumn) + ");\n",
AsmWriterOperand::isLiteralStatementOperand));
} }
break; break;
case '"': case '"':
@ -123,8 +123,8 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, Record *AsmWriter) {
unsigned DestColumn = FirstOperandColumn + unsigned DestColumn = FirstOperandColumn +
CurColumn++ * OperandSpacing; CurColumn++ * OperandSpacing;
Operands.push_back( Operands.push_back(
AsmWriterOperand("O.PadToColumn(" + utostr(DestColumn) + ");\n", AsmWriterOperand("O.PadToColumn(" + utostr(DestColumn) + ");\n",
AsmWriterOperand::isLiteralStatementOperand)); AsmWriterOperand::isLiteralStatementOperand));
break; break;
} else if (std::string("${|}\\").find(AsmString[DollarPos+1]) } else if (std::string("${|}\\").find(AsmString[DollarPos+1])
!= std::string::npos) { != std::string::npos) {
@ -236,7 +236,7 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, Record *AsmWriter) {
} }
Operands.push_back(AsmWriterOperand("return;", Operands.push_back(AsmWriterOperand("return;",
AsmWriterOperand::isLiteralStatementOperand)); AsmWriterOperand::isLiteralStatementOperand));
} }
/// MatchesAllButOneOp - If this instruction is exactly identical to the /// MatchesAllButOneOp - If this instruction is exactly identical to the
@ -256,4 +256,4 @@ unsigned AsmWriterInst::MatchesAllButOneOp(const AsmWriterInst &Other)const{
} }
} }
return MismatchOperand; return MismatchOperand;
} }

View File

@ -81,7 +81,10 @@ namespace llvm {
std::vector<AsmWriterOperand> Operands; std::vector<AsmWriterOperand> Operands;
const CodeGenInstruction *CGI; const CodeGenInstruction *CGI;
AsmWriterInst(const CodeGenInstruction &CGI, Record *AsmWriter); AsmWriterInst(const CodeGenInstruction &CGI,
unsigned Variant,
int FirstOperandColumn,
int OperandSpacing);
/// MatchesAllButOneOp - If this instruction is exactly identical to the /// MatchesAllButOneOp - If this instruction is exactly identical to the
/// specified instruction except for one differing operand, return the /// specified instruction except for one differing operand, return the

View File

@ -15,6 +15,7 @@
#include "EDEmitter.h" #include "EDEmitter.h"
#include "AsmWriterInst.h"
#include "CodeGenTarget.h" #include "CodeGenTarget.h"
#include "Record.h" #include "Record.h"