[mlir][spirv] Add support for fptoui conversion in ArithToSPIRV
authorSteve Suzuki <shinsuke.suzuki@arm.com>
Thu, 12 Jan 2023 16:35:02 +0000 (16:35 +0000)
committerAndrzej Warzynski <andrzej.warzynski@arm.com>
Thu, 12 Jan 2023 16:35:50 +0000 (16:35 +0000)
To enable the conversion of arith.fptoui to SPIRV OpConvertFToU

Reviewed By: kuhar

Differential Revision: https://reviews.llvm.org/D141582

mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp
mlir/test/Conversion/ArithToSPIRV/arith-to-spirv.mlir

index d48cae3..be46a06 100644 (file)
@@ -1100,6 +1100,7 @@ void mlir::arith::populateArithToSPIRVPatterns(
     TypeCastingOpPattern<arith::TruncFOp, spirv::FConvertOp>,
     TypeCastingOpPattern<arith::UIToFPOp, spirv::ConvertUToFOp>, UIToFPI1Pattern,
     TypeCastingOpPattern<arith::SIToFPOp, spirv::ConvertSToFOp>,
+    TypeCastingOpPattern<arith::FPToUIOp, spirv::ConvertFToUOp>,
     TypeCastingOpPattern<arith::FPToSIOp, spirv::ConvertFToSOp>,
     TypeCastingOpPattern<arith::IndexCastOp, spirv::SConvertOp>,
     TypeCastingOpPattern<arith::IndexCastUIOp, spirv::UConvertOp>,
index 3b18295..4c32a86 100644 (file)
@@ -903,6 +903,20 @@ func.func @trunc_to_veci1(%arg0: vector<4xi32>) -> vector<4xi1> {
   return %0 : vector<4xi1>
 }
 
+// CHECK-LABEL: @fptoui1
+func.func @fptoui1(%arg0 : f32) -> i32 {
+  // CHECK: spirv.ConvertFToU %{{.*}} : f32 to i32
+  %0 = arith.fptoui %arg0 : f32 to i32
+  return %0 : i32
+}
+
+// CHECK-LABEL: @fptoui2
+func.func @fptoui2(%arg0 : f16) -> i16 {
+  // CHECK: spirv.ConvertFToU %{{.*}} : f16 to i16
+  %0 = arith.fptoui %arg0 : f16 to i16
+  return %0 : i16
+}
+
 // CHECK-LABEL: @fptosi1
 func.func @fptosi1(%arg0 : f32) -> i32 {
   // CHECK: spirv.ConvertFToS %{{.*}} : f32 to i32