class CodeGenInstruction {
public:
Record *TheDef; // The actual record defining this instruction.
- std::string Name; // Contents of the 'Name' field.
std::string Namespace; // The namespace the instruction is in.
/// AsmString - The format string used to emit a .s file for the
/// instruction.
std::string AsmString;
- /// getName - Return the contents of the instruction Name field if set,
- /// otherwise return the name of the def.
- std::string getName() const;
-
/// OperandInfo - The information we keep track of for each operand in the
/// operand list for a tablegen instruction.
struct OperandInfo {
bool isIndirectBranch;
bool isBarrier;
bool isCall;
- bool isLoad;
- bool mayStore;
- bool isImplicitDef;
+ bool canFoldAsLoad;
+ bool mayLoad, mayStore;
bool isPredicable;
bool isConvertibleToThreeAddress;
bool isCommutable;
bool isReMaterializable;
bool hasDelaySlot;
bool usesCustomDAGSchedInserter;
- bool hasVariableNumberOfOperands;
+ bool isVariadic;
bool hasCtrlDep;
bool isNotDuplicable;
bool hasOptionalDef;
+ bool hasSideEffects;
bool mayHaveSideEffects;
bool neverHasSideEffects;
+ bool isAsCheapAsAMove;
/// ParseOperandName - Parse an operand name like "$foo" or "$foo.bar",
/// where $foo is a whole operand and $foo.bar refers to a suboperand.