diff --git a/llvm/include/llvm/IR/Instructions.h b/llvm/include/llvm/IR/Instructions.h index bc29a4801e4ff..8eea659a00caf 100644 --- a/llvm/include/llvm/IR/Instructions.h +++ b/llvm/include/llvm/IR/Instructions.h @@ -1248,9 +1248,13 @@ class ICmpInst: public CmpInst { return isEquality(getPredicate()); } + /// @returns true if the predicate is commutative + /// Determine if this relation is commutative. + static bool isCommutative(Predicate P) { return isEquality(P); } + /// @returns true if the predicate of this ICmpInst is commutative /// Determine if this relation is commutative. - bool isCommutative() const { return isEquality(); } + bool isCommutative() const { return isCommutative(getPredicate()); } /// Return true if the predicate is relational (not EQ or NE). /// @@ -1369,7 +1373,7 @@ class FCmpInst: public CmpInst { AssertOK(); } - /// @returns true if the predicate of this instruction is EQ or NE. + /// @returns true if the predicate is EQ or NE. /// Determine if this is an equality predicate. static bool isEquality(Predicate Pred) { return Pred == FCMP_OEQ || Pred == FCMP_ONE || Pred == FCMP_UEQ || @@ -1380,16 +1384,17 @@ class FCmpInst: public CmpInst { /// Determine if this is an equality predicate. bool isEquality() const { return isEquality(getPredicate()); } - /// @returns true if the predicate of this instruction is commutative. + /// @returns true if the predicate is commutative. /// Determine if this is a commutative predicate. - bool isCommutative() const { - return isEquality() || - getPredicate() == FCMP_FALSE || - getPredicate() == FCMP_TRUE || - getPredicate() == FCMP_ORD || - getPredicate() == FCMP_UNO; + static bool isCommutative(Predicate Pred) { + return isEquality(Pred) || Pred == FCMP_FALSE || Pred == FCMP_TRUE || + Pred == FCMP_ORD || Pred == FCMP_UNO; } + /// @returns true if the predicate of this instruction is commutative. + /// Determine if this is a commutative predicate. + bool isCommutative() const { return isCommutative(getPredicate()); } + /// @returns true if the predicate is relational (not EQ or NE). /// Determine if this a relational predicate. bool isRelational() const { return !isEquality(); }