Add an MO_Undef MachineOperandType, intended for INSERT_SUBREG. Next up MO_Undead.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 14 Mar 2008 01:47:49 +0000 (01:47 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 14 Mar 2008 01:47:49 +0000 (01:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48353 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineInstrBuilder.h
include/llvm/CodeGen/MachineOperand.h

index 51900603ac941bb1806b0d2b559742388170382d..06f5bf06d9e439941df07dcffa88d3a9ebc17d4d 100644 (file)
@@ -84,6 +84,11 @@ public:
     return *this;
   }
 
+  const MachineInstrBuilder &addUndef() const {
+    MI->addOperand(MachineOperand::CreateUndef());
+    return *this;
+  }
+
   /// addMemOperand - Add a memory operand to the machine instruction.
   const MachineInstrBuilder &addMemOperand(const MemOperand &MO) const {
     MI->addMemOperand(MO);
index d62c8f8b4749d2372bd32ac1cc1a58db2cb4f92b..b4601e18fa7cc52192d2692d38bf0cc4df5c24ab 100644 (file)
@@ -33,15 +33,16 @@ class MachineRegisterInfo;
 class MachineOperand {
 public:
   enum MachineOperandType {
-    MO_Register,                // Register operand.
-    MO_Immediate,               // Immediate Operand
-    MO_FPImmediate,
+    MO_Register,                // Register operand
+    MO_Immediate,               // Immediate operand
+    MO_FPImmediate,             // FP immediate operand
     MO_MachineBasicBlock,       // MachineBasicBlock reference
     MO_FrameIndex,              // Abstract Stack Frame Index
     MO_ConstantPoolIndex,       // Address of indexed Constant in Constant Pool
     MO_JumpTableIndex,          // Address of indexed Jump Table for switch
     MO_ExternalSymbol,          // Name of external global symbol
-    MO_GlobalAddress            // Address of a global value
+    MO_GlobalAddress,           // Address of a global value
+    MO_Undef                    // Undef
   };
 
 private:
@@ -130,6 +131,7 @@ public:
   bool isJumpTableIndex() const { return OpKind == MO_JumpTableIndex; }
   bool isGlobalAddress() const { return OpKind == MO_GlobalAddress; }
   bool isExternalSymbol() const { return OpKind == MO_ExternalSymbol; }
+  bool isUndef() const { return OpKind == MO_Undef; }
 
   bool isReg() const { return OpKind == MO_Register; }
   bool isImm() const { return OpKind == MO_Immediate; }
@@ -375,6 +377,11 @@ public:
     Op.setOffset(Offset);
     return Op;
   }
+  static MachineOperand CreateUndef() {
+    MachineOperand Op(MachineOperand::MO_Undef);
+    return Op;
+  }
+
   const MachineOperand &operator=(const MachineOperand &MO) {
     OpKind   = MO.OpKind;
     IsDef    = MO.IsDef;