From da7060884ae43f24b34076fbfba3557000f0c879 Mon Sep 17 00:00:00 2001 From: Matthias Gehre Date: Fri, 29 Nov 2024 16:24:22 +0100 Subject: [PATCH] arith-to-emitc: Fix lowering of fptoui `arith.fptoui %arg0 : f32 to i16` was lowered to ``` %0 = emitc.cast %arg0 : f32 to ui32 emitc.cast %0 : ui32 to i16 ``` and is now lowered to ``` %0 = emitc.cast %arg0 : f32 to ui16 emitc.cast %0 : ui16 to i16 ``` --- mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp | 2 +- mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp index 129b60af5735a9..89060ac37bca4a 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 6b08e571b77cb5..d2ecbaf0baa58b 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 }