diff --git a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp index 50384d9a08e5d..ccbc1669b7a92 100644 --- a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp +++ b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp @@ -674,7 +674,7 @@ class FtoICastOpConversion : public OpConversionPattern { Type actualResultType = dstType; if (isa(castOp)) { actualResultType = - rewriter.getIntegerType(operandType.getIntOrFloatBitWidth(), + rewriter.getIntegerType(dstType.getIntOrFloatBitWidth(), /*isSigned=*/false); } diff --git a/mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir b/mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir index afd1198ede0f7..1728c3a2557e0 100644 --- a/mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir +++ b/mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir @@ -587,6 +587,10 @@ func.func @arith_float_to_int_cast_ops(%arg0: f32, %arg1: f64) { // CHECK: emitc.cast %[[CAST0]] : ui32 to i32 %4 = arith.fptoui %arg0 : f32 to i32 + // CHECK: %[[CAST0:.*]] = emitc.cast %arg0 : f32 to ui16 + // CHECK: emitc.cast %[[CAST0]] : ui16 to i16 + %5 = arith.fptoui %arg0 : f32 to i16 + return }