diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp --- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp +++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp @@ -471,11 +471,6 @@ } if (arith::FPToSIOp::areCastCompatible(srcTy, dstTy)) { - auto zero = rewriter.create( - loc, rewriter.getF32FloatAttr(0.0f)); - auto half = rewriter.create( - loc, rewriter.getF32FloatAttr(0.5f)); - auto intMin = rewriter.create( loc, rewriter.getF32FloatAttr( APInt::getSignedMinValue(dstTy.getIntOrFloatBitWidth()) @@ -486,12 +481,7 @@ APInt::getSignedMaxValue(dstTy.getIntOrFloatBitWidth()) .getSExtValue())); - auto added = rewriter.create(loc, args[0], half); - auto subbed = rewriter.create(loc, args[0], half); - auto negative = rewriter.create( - loc, arith::CmpFPredicate::OLT, args[0], zero); - auto rounded = - rewriter.create(loc, negative, subbed, added); + auto rounded = rewriter.create(loc, args[0]); auto clamped = clampFloatHelper(loc, rounded, intMin, intMax, rewriter); diff --git a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir --- a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir +++ b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg.mlir @@ -237,14 +237,9 @@ %19 = "tosa.sigmoid"(%0) : (tensor<1xf32>) -> tensor<1xf32> // CHECK: linalg.generic - // CHECK: arith.constant 0.000000e+00 - // CHECK: arith.constant 5.000000e-01 // CHECK: arith.constant -2.14748365E+9 // CHECK: arith.constant 2.14748365E+9 - // CHECK: arith.addf - // CHECK: arith.subf - // CHECK: arith.cmpf olt - // CHECK: select + // CHECK: math.roundeven // CHECK: arith.minf // CHECK: arith.maxf // CHECK: arith.fptosi