Skip to content

Commit ca21499

Browse files
rwalkrrsuderman
authored andcommitted
[mlir][tosa] Fix floating point offset for tosa.resize
Offset is a signed value, so use `arith.sitofp` See also #59585 Reviewed By: NatashaKnk, jpienaar Differential Revision: https://reviews.llvm.org/D140958
1 parent 91fefaa commit ca21499

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1614,7 +1614,7 @@ class GenericResizeConverter : public OpRewritePattern<tosa::ResizeOp> {
16141614
Value val = b.create<arith::UIToFPOp>(b.getF32Type(), in);
16151615
scaleN = b.create<arith::UIToFPOp>(b.getF32Type(), scaleN);
16161616
scaleD = b.create<arith::UIToFPOp>(b.getF32Type(), scaleD);
1617-
offset = b.create<arith::UIToFPOp>(b.getF32Type(), offset);
1617+
offset = b.create<arith::SIToFPOp>(b.getF32Type(), offset);
16181618
val = b.create<arith::MulFOp>(val, scaleD);
16191619
val = b.create<arith::AddFOp>(val, offset);
16201620
val = b.create<arith::DivFOp>(val, scaleN);

mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-resize.mlir

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ func.func @resize_nearest_fp(%input: tensor<1x50x48x1xf32>) -> () {
310310
// CHECK: %[[Y0:.+]] = arith.uitofp %[[Y]]
311311
// CHECK: %[[SCALE_Y_N:.*]] = arith.uitofp %[[ISCALE_Y_N]]
312312
// CHECK: %[[SCALE_Y_D:.*]] = arith.uitofp %[[ISCALE_Y_D]]
313-
// CHECK: %[[OFFSET_Y:.*]] = arith.uitofp %[[IOFFSET_Y]]
313+
// CHECK: %[[OFFSET_Y:.*]] = arith.sitofp %[[IOFFSET_Y]]
314314
// CHECK: %[[VAL_29:.*]] = arith.mulf %[[Y0]], %[[SCALE_Y_D]]
315315
// CHECK: %[[VAL_31:.*]] = arith.addf %[[VAL_29]], %[[OFFSET_Y]]
316316
// CHECK: %[[VAL_33:.*]] = arith.divf %[[VAL_31]], %[[SCALE_Y_N]]
@@ -321,7 +321,7 @@ func.func @resize_nearest_fp(%input: tensor<1x50x48x1xf32>) -> () {
321321
// CHECK: %[[X0:.+]] = arith.uitofp %[[X]]
322322
// CHECK: %[[SCALE_X_N:.*]] = arith.uitofp %[[ISCALE_X_N]]
323323
// CHECK: %[[SCALE_X_D:.*]] = arith.uitofp %[[ISCALE_X_D]]
324-
// CHECK: %[[OFFSET_X:.*]] = arith.uitofp %[[IOFFSET_X]]
324+
// CHECK: %[[OFFSET_X:.*]] = arith.sitofp %[[IOFFSET_X]]
325325
// CHECK: %[[VAL_30:.*]] = arith.mulf %[[X0]], %[[SCALE_X_D]]
326326
// CHECK: %[[VAL_32:.*]] = arith.addf %[[VAL_30]], %[[OFFSET_X]]
327327
// CHECK: %[[VAL_34:.*]] = arith.divf %[[VAL_32]], %[[SCALE_X_N]]
@@ -384,7 +384,7 @@ func.func @resize_bilinear_fp(%input: tensor<1x23x24x1xf32>) -> () {
384384
// CHECK: %[[Y0:.+]] = arith.uitofp %[[Y]]
385385
// CHECK: %[[SCALE_Y_N:.*]] = arith.uitofp %[[ISCALE_Y_N]]
386386
// CHECK: %[[SCALE_Y_D:.*]] = arith.uitofp %[[ISCALE_Y_D]]
387-
// CHECK: %[[OFFSET_Y:.*]] = arith.uitofp %[[IOFFSET_Y]]
387+
// CHECK: %[[OFFSET_Y:.*]] = arith.sitofp %[[IOFFSET_Y]]
388388
// CHECK: %[[VAL_29:.*]] = arith.mulf %[[Y0]], %[[SCALE_Y_D]]
389389
// CHECK: %[[VAL_31:.*]] = arith.addf %[[VAL_29]], %[[OFFSET_Y]]
390390
// CHECK: %[[VAL_33:.*]] = arith.divf %[[VAL_31]], %[[SCALE_Y_N]]
@@ -395,7 +395,7 @@ func.func @resize_bilinear_fp(%input: tensor<1x23x24x1xf32>) -> () {
395395
// CHECK: %[[X0:.+]] = arith.uitofp %[[X]]
396396
// CHECK: %[[SCALE_X_N:.*]] = arith.uitofp %[[ISCALE_X_N]]
397397
// CHECK: %[[SCALE_X_D:.*]] = arith.uitofp %[[ISCALE_X_D]]
398-
// CHECK: %[[OFFSET_X:.*]] = arith.uitofp %[[IOFFSET_X]]
398+
// CHECK: %[[OFFSET_X:.*]] = arith.sitofp %[[IOFFSET_X]]
399399
// CHECK: %[[VAL_30:.*]] = arith.mulf %[[X0]], %[[SCALE_X_D]]
400400
// CHECK: %[[VAL_32:.*]] = arith.addf %[[VAL_30]], %[[OFFSET_X]]
401401
// CHECK: %[[VAL_34:.*]] = arith.divf %[[VAL_32]], %[[SCALE_X_N]]

0 commit comments

Comments
 (0)