[mlir][tosa] Add TOSA f64 type support for cast op
authorAmosLewis <Amos_Lewsi@foxmail.com>
Fri, 10 Feb 2023 20:12:50 +0000 (12:12 -0800)
committerJacques Pienaar <jpienaar@google.com>
Fri, 10 Feb 2023 20:12:51 +0000 (12:12 -0800)
Add TOSA f64 type support for cast op

Reviewed By: eric-k256

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

mlir/include/mlir/Dialect/Tosa/IR/TosaOps.td
mlir/include/mlir/Dialect/Tosa/IR/TosaTypesBase.td
mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp

index f9221662b1d7eed487b1108a6d69c19d3d467163..fc4cf7d82174c950b83ce21d238a807d0e0ffb09 100644 (file)
@@ -1705,14 +1705,16 @@ def Tosa_CastOp: Tosa_Op<"cast", [Pure,
         float to signed 16      float   int16
         signed 8 to float       int8    float
         signed 16 to float      int16   float
+        float 32 to float 64    float32 float64
+        float 64 to float 32    float64 float32
   }];
 
   let arguments = (ins
-    Tosa_Tensor:$input
+    Tosa_Tensor_Cast:$input
   );
 
   let results = (outs
-    Tosa_Tensor:$output
+    Tosa_Tensor_Cast:$output
   );
 
   let hasFolder = 1;
index 3c9094e6aaef75e63b1461c60165a79cacf8168e..d3eeac92a4ee2aa20093e87514a576395bf2aa66 100644 (file)
@@ -95,6 +95,9 @@ def Tosa_Float : AnyTypeOf<[
 //===----------------------------------------------------------------------===//
 def Tosa_AnyNumber : AnyTypeOf<[Tosa_Int, Tosa_QuantizedInt, Tosa_Float],
                                "number">;
+// Add F64 type support for just for tosa::CastOp
+def Tosa_AnyNumber_Cast : AnyTypeOf<[Tosa_Int, Tosa_QuantizedInt, Tosa_Float, F64],
+                               "number_cast">;
 
 //===----------------------------------------------------------------------===//
 // Tensor types
@@ -105,6 +108,7 @@ def Tosa_Int32Or64Tensor : TensorOf<[Tosa_Int32Or64]>;
 
 // Either ranked or unranked tensor of TOSA supported element types.
 def Tosa_Tensor : TensorOf<[Tosa_AnyNumber]>;
+def Tosa_Tensor_Cast : TensorOf<[Tosa_AnyNumber_Cast]>;
 // Must be ranked but no further constraints
 def Tosa_RankedTensor : RankedTensorOf<[Tosa_AnyNumber]>;
 
index 9517cbf8703cb0f2a8b97e4bd2574972bcfae0e2..896f81e75daabbb75a1eb3f98d9275963cc9be83 100644 (file)
@@ -58,6 +58,9 @@ void TosaValidation::runOnOperation() {
           getElementTypeOrSelf(operand).isa<FloatType>()) {
         return signalPassFailure();
       }
+      if (getElementTypeOrSelf(operand).isF64()) {
+        return signalPassFailure();
+      }
     }
   });
 }