[MLIR] expose applyCmpPredicate
authorStephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Wed, 27 May 2020 04:11:01 +0000 (21:11 -0700)
committerStephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Wed, 10 Jun 2020 05:25:03 +0000 (22:25 -0700)
This is useful for manipulating the standard dialect from transformations
outside of the standard dialect.

Differential Revision: https://reviews.llvm.org/D80609

mlir/include/mlir/Dialect/StandardOps/IR/Ops.h
mlir/lib/Dialect/StandardOps/IR/Ops.cpp

index 0ffc176..8005ecb 100644 (file)
@@ -339,6 +339,16 @@ raw_ostream &operator<<(raw_ostream &os, SubViewOp::Range &range);
 ///   consumer %0 ... : memref<?x16xf32, affine_map<(i, j)->(16 * i + j)>>
 /// ```
 bool canFoldIntoConsumerOp(MemRefCastOp castOp);
+
+/// Compute `lhs` `pred` `rhs`, where `pred` is one of the known integer
+/// comparison predicates.
+bool applyCmpPredicate(CmpIPredicate predicate, const APInt &lhs,
+                       const APInt &rhs);
+
+/// Compute `lhs` `pred` `rhs`, where `pred` is one of the known floating point
+/// comparison predicates.
+bool applyCmpPredicate(CmpFPredicate predicate, const APFloat &lhs,
+                       const APFloat &rhs);
 } // end namespace mlir
 
 #endif // MLIR_DIALECT_IR_STANDARDOPS_IR_OPS_H
index 4f72996..2738c2a 100644 (file)
@@ -784,8 +784,8 @@ static void buildCmpIOp(OpBuilder &build, OperationState &result,
 
 // Compute `lhs` `pred` `rhs`, where `pred` is one of the known integer
 // comparison predicates.
-static bool applyCmpPredicate(CmpIPredicate predicate, const APInt &lhs,
-                              const APInt &rhs) {
+bool mlir::applyCmpPredicate(CmpIPredicate predicate, const APInt &lhs,
+                             const APInt &rhs) {
   switch (predicate) {
   case CmpIPredicate::eq:
     return lhs.eq(rhs);
@@ -838,8 +838,8 @@ static void buildCmpFOp(OpBuilder &build, OperationState &result,
 
 /// Compute `lhs` `pred` `rhs`, where `pred` is one of the known floating point
 /// comparison predicates.
-static bool applyCmpPredicate(CmpFPredicate predicate, const APFloat &lhs,
-                              const APFloat &rhs) {
+bool mlir::applyCmpPredicate(CmpFPredicate predicate, const APFloat &lhs,
+                             const APFloat &rhs) {
   auto cmpResult = lhs.compare(rhs);
   switch (predicate) {
   case CmpFPredicate::AlwaysFalse: