diff options
Diffstat (limited to 'include/llvm/CodeGen/MachineInstr.h')
| -rw-r--r-- | include/llvm/CodeGen/MachineInstr.h | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h index e57257c76bc70..edda03fe36852 100644 --- a/include/llvm/CodeGen/MachineInstr.h +++ b/include/llvm/CodeGen/MachineInstr.h @@ -331,6 +331,11 @@ public:          operands_begin() + getDesc().getNumDefs(), operands_end());    } +  /// Returns the number of the operand iterator \p I points to. +  unsigned getOperandNo(const_mop_iterator I) const { +    return I - operands_begin(); +  } +    /// Access to memory operands of the instruction    mmo_iterator memoperands_begin() const { return MemRefs; }    mmo_iterator memoperands_end() const { return MemRefs + NumMemRefs; } @@ -483,6 +488,13 @@ public:      return hasProperty(MCID::NotDuplicable, Type);    } +  /// Return true if this instruction is convergent. +  /// Convergent instructions can only be moved to locations that are +  /// control-equivalent to their initial position. +  bool isConvergent(QueryType Type = AnyInBundle) const { +    return hasProperty(MCID::Convergent, Type); +  } +    /// Returns true if the specified instruction has a delay slot    /// which must be filled by the code generator.    bool hasDelaySlot(QueryType Type = AnyInBundle) const { @@ -924,7 +936,7 @@ public:    /// For normal instructions, this is derived from the MCInstrDesc.    /// For inline assembly it is derived from the flag words.    /// -  /// Returns NULL if the static register classs constraint cannot be +  /// Returns NULL if the static register class constraint cannot be    /// determined.    ///    const TargetRegisterClass* @@ -936,10 +948,10 @@ public:    /// the given \p CurRC.    /// If \p ExploreBundle is set and MI is part of a bundle, all the    /// instructions inside the bundle will be taken into account. In other words, -  /// this method accumulates all the constrains of the operand of this MI and +  /// this method accumulates all the constraints of the operand of this MI and    /// the related bundle if MI is a bundle or inside a bundle.    /// -  /// Returns the register class that statisfies both \p CurRC and the +  /// Returns the register class that satisfies both \p CurRC and the    /// constraints set by MI. Returns NULL if such a register class does not    /// exist.    /// @@ -952,7 +964,7 @@ public:    /// \brief Applies the constraints (def/use) implied by the \p OpIdx operand    /// to the given \p CurRC.    /// -  /// Returns the register class that statisfies both \p CurRC and the +  /// Returns the register class that satisfies both \p CurRC and the    /// constraints set by \p OpIdx MI. Returns NULL if such a register class    /// does not exist.    ///  | 
