diff --git a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp --- a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp +++ b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp @@ -2304,6 +2304,11 @@ using Super::Super; }; +struct FPToSILowering + : public OneToOneConvertToLLVMPattern { + using Super::Super; +}; + struct FPTruncLowering : public OneToOneConvertToLLVMPattern { using Super::Super; @@ -2975,6 +2980,7 @@ Log10OpLowering, Log2OpLowering, FPExtLowering, + FPToSILowering, FPTruncLowering, ImOpLowering, IndexCastOpLowering, diff --git a/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir b/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir --- a/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir +++ b/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir @@ -618,6 +618,20 @@ return } +// Checking conversion of floating point to integer types. +// CHECK-LABEL: @fptosi +func @fptosi(%arg0 : f32, %arg1 : f64) { +// CHECK-NEXT: = llvm.fptosi {{.*}} : !llvm.float to !llvm.i32 + %0 = fptosi %arg0: f32 to i32 +// CHECK-NEXT: = llvm.fptosi {{.*}} : !llvm.float to !llvm.i64 + %1 = fptosi %arg0: f32 to i64 +// CHECK-NEXT: = llvm.fptosi {{.*}} : !llvm.double to !llvm.i32 + %2 = fptosi %arg1: f64 to i32 +// CHECK-NEXT: = llvm.fptosi {{.*}} : !llvm.double to !llvm.i64 + %3 = fptosi %arg1: f64 to i64 + return +} + // Checking conversion of integer types to floating point. // CHECK-LABEL: @fptrunc func @fptrunc(%arg0 : f32, %arg1 : f64) {