Skip to content

Commit 9db9dd7

Browse files
authored
Add missing cmpf predicate conversion (#193)
1 parent e452afa commit 9db9dd7

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ class CmpFOpConversion : public OpConversionPattern<arith::CmpFOp> {
125125
unordered = false;
126126
predicate = emitc::CmpPredicate::lt;
127127
break;
128+
case arith::CmpFPredicate::OLE:
129+
unordered = false;
130+
predicate = emitc::CmpPredicate::le;
131+
break;
128132
case arith::CmpFPredicate::ONE:
129133
unordered = false;
130134
predicate = emitc::CmpPredicate::ne;
@@ -179,9 +183,6 @@ class CmpFOpConversion : public OpConversionPattern<arith::CmpFOp> {
179183
rewriter.replaceOp(op, constant);
180184
return success();
181185
}
182-
default:
183-
return rewriter.notifyMatchFailure(op.getLoc(),
184-
"cannot match predicate ");
185186
}
186187

187188
// Compare the values naively

mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,21 @@ func.func @arith_cmpf_olt(%arg0: f32, %arg1: f32) -> i1 {
337337

338338
// -----
339339

340+
func.func @arith_cmpf_ole(%arg0: f32, %arg1: f32) -> i1 {
341+
// CHECK-LABEL: arith_cmpf_ole
342+
// CHECK-SAME: ([[Arg0:[^ ]*]]: f32, [[Arg1:[^ ]*]]: f32)
343+
// CHECK-DAG: [[LT:[^ ]*]] = emitc.cmp le, [[Arg0]], [[Arg1]] : (f32, f32) -> i1
344+
// CHECK-DAG: [[NaNArg0:[^ ]*]] = emitc.cmp eq, [[Arg0]], [[Arg0]] : (f32, f32) -> i1
345+
// CHECK-DAG: [[NaNArg1:[^ ]*]] = emitc.cmp eq, [[Arg1]], [[Arg1]] : (f32, f32) -> i1
346+
// CHECK-DAG: [[Ordered:[^ ]*]] = emitc.logical_and [[NaNArg0]], [[NaNArg1]] : i1, i1
347+
// CHECK-DAG: [[OLE:[^ ]*]] = emitc.logical_and [[Ordered]], [[LT]] : i1, i1
348+
%ole = arith.cmpf ole, %arg0, %arg1 : f32
349+
// CHECK: return [[OLE]]
350+
return %ole: i1
351+
}
352+
353+
// -----
354+
340355
func.func @arith_cmpf_one(%arg0: f32, %arg1: f32) -> i1 {
341356
// CHECK-LABEL: arith_cmpf_one
342357
// CHECK-SAME: ([[Arg0:[^ ]*]]: f32, [[Arg1:[^ ]*]]: f32)

0 commit comments

Comments
 (0)