diff options
Diffstat (limited to 'llvm/include/llvm/IR/PatternMatch.h')
| -rw-r--r-- | llvm/include/llvm/IR/PatternMatch.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/include/llvm/IR/PatternMatch.h b/llvm/include/llvm/IR/PatternMatch.h index 9d51bcd5d71..2a9c3dd8c20 100644 --- a/llvm/include/llvm/IR/PatternMatch.h +++ b/llvm/include/llvm/IR/PatternMatch.h @@ -1003,6 +1003,12 @@ struct is_idiv_op { } }; +struct is_irem_op { + bool isOpType(unsigned Opcode) { + return Opcode == Instruction::SRem || Opcode == Instruction::URem; + } +}; + /// Matches shift operations. template <typename LHS, typename RHS> inline BinOpPred_match<LHS, RHS, is_shift_op> m_Shift(const LHS &L, @@ -1038,6 +1044,13 @@ inline BinOpPred_match<LHS, RHS, is_idiv_op> m_IDiv(const LHS &L, return BinOpPred_match<LHS, RHS, is_idiv_op>(L, R); } +/// Matches integer remainder operations. +template <typename LHS, typename RHS> +inline BinOpPred_match<LHS, RHS, is_irem_op> m_IRem(const LHS &L, + const RHS &R) { + return BinOpPred_match<LHS, RHS, is_irem_op>(L, R); +} + //===----------------------------------------------------------------------===// // Class that matches exact binary ops. // |

