define a new CodeGenInstAlias. It has an asmstring and operand list for now,

todo: the result field.

llvm-svn: 117894
This commit is contained in:
Chris Lattner 2010-11-01 04:05:41 +00:00
parent d8adec70f3
commit 488c201bb7
3 changed files with 37 additions and 1 deletions

View File

@ -946,6 +946,15 @@ void AsmMatcherInfo::BuildInfo() {
Instructions.push_back(II.take());
}
// Parse all of the InstAlias definitions.
std::vector<Record*> AllInstAliases =
Records.getAllDerivedDefinitions("InstAlias");
for (unsigned i = 0, e = AllInstAliases.size(); i != e; ++i) {
CodeGenInstAlias *Alias = new CodeGenInstAlias(AllInstAliases[i]);
(void)Alias;
}
// Build info for the register classes.
BuildRegisterClasses(SingletonRegisters);

View File

@ -382,3 +382,13 @@ FlattenAsmStringVariants(StringRef Cur, unsigned Variant) {
return Res;
}
//===----------------------------------------------------------------------===//
/// CodeGenInstAlias Implementation
//===----------------------------------------------------------------------===//
CodeGenInstAlias::CodeGenInstAlias(Record *R) : TheDef(R), Operands(R) {
AsmString = R->getValueAsString("AsmString");
}

View File

@ -235,6 +235,23 @@ namespace llvm {
static std::string FlattenAsmStringVariants(StringRef AsmString,
unsigned Variant);
};
}
/// CodeGenInstAlias - This represents an InstAlias definition.
class CodeGenInstAlias {
public:
Record *TheDef; // The actual record defining this InstAlias.
/// AsmString - The format string used to emit a .s file for the
/// instruction.
std::string AsmString;
/// Operands - This is information about the (ins) and (outs) list specified
/// to the alias.
CGIOperandList Operands;
CodeGenInstAlias(Record *R);
};
}
#endif