X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FCodeGenInstruction.h;h=f4afd5e45ba3ead9e5d63dbfe338a1dd9b4808e1;hb=d24479730a8790d82c4859dc477bc2416d7a6bda;hp=c209b1342f6894d9a617ac362df04afc37ae2e06;hpb=3dd298fb62e74b1e7a05547c0d403dac980d128f;p=oota-llvm.git diff --git a/utils/TableGen/CodeGenInstruction.h b/utils/TableGen/CodeGenInstruction.h index c209b1342f6..f4afd5e45ba 100644 --- a/utils/TableGen/CodeGenInstruction.h +++ b/utils/TableGen/CodeGenInstruction.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -26,13 +26,12 @@ namespace llvm { 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; - + /// OperandInfo - The information we keep track of for each operand in the /// operand list for a tablegen instruction. struct OperandInfo { @@ -90,9 +89,8 @@ namespace llvm { bool isIndirectBranch; bool isBarrier; bool isCall; - bool isLoad; - bool isStore; - bool isImplicitDef; + bool canFoldAsLoad; + bool mayLoad, mayStore; bool isPredicable; bool isConvertibleToThreeAddress; bool isCommutable; @@ -100,10 +98,14 @@ namespace llvm { 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.