|
1 | 1 | // RUN: mlir-opt -split-input-file -convert-func-to-spirv %s -o - | FileCheck %s |
2 | 2 | // RUN: mlir-opt -split-input-file -convert-func-to-spirv="emulate-lt-32-bit-scalar-types=false" %s | \ |
3 | 3 | // RUN: FileCheck %s --check-prefix=NOEMU |
| 4 | +// RUN: mlir-opt -split-input-file -convert-func-to-spirv="emulate-unsupported-float-types=false" %s | \ |
| 5 | +// RUN: FileCheck %s --check-prefix=UNSUPPORTED_FLOAT |
4 | 6 |
|
5 | 7 | //===----------------------------------------------------------------------===// |
6 | 8 | // Integer types |
@@ -944,3 +946,55 @@ func.func @unranked_tensor(%arg0: tensor<*xi32>) { return } |
944 | 946 | func.func @dynamic_dim_tensor(%arg0: tensor<8x?xi32>) { return } |
945 | 947 |
|
946 | 948 | } // end module |
| 949 | + |
| 950 | + |
| 951 | +// ----- |
| 952 | + |
| 953 | +// Check that 8-bit float types are emulated as i8. |
| 954 | +module attributes { |
| 955 | + spirv.target_env = #spirv.target_env<#spirv.vce<v1.0, [Int8], []>, #spirv.resource_limits<>> |
| 956 | +} { |
| 957 | + |
| 958 | + // CHECK: spirv.func @float8_to_integer8 |
| 959 | + // CHECK-SAME: (%arg0: i8 |
| 960 | + // CHECK-SAME: %arg1: i8 |
| 961 | + // CHECK-SAME: %arg2: i8 |
| 962 | + // CHECK-SAME: %arg3: i8 |
| 963 | + // CHECK-SAME: %arg4: i8 |
| 964 | + // CHECK-SAME: %arg5: i8 |
| 965 | + // CHECK-SAME: %arg6: i8 |
| 966 | + // CHECK-SAME: %arg7: i8 |
| 967 | + // CHECK-SAME: %arg8: vector<4xi8> |
| 968 | + // CHECK-SAME: %arg9: !spirv.ptr<!spirv.struct<(!spirv.array<8 x i8, stride=1> [0])>, StorageBuffer> |
| 969 | + // CHECK-SAME: %arg10: !spirv.array<4 x i8> |
| 970 | + // UNSUPPORTED_FLOAT-LABEL: func.func @float8_to_integer8 |
| 971 | + // UNSUPPORTED_FLOAT-SAME: (%arg0: f8E5M2 |
| 972 | + // UNSUPPORTED_FLOAT-SAME: %arg1: f8E4M3 |
| 973 | + // UNSUPPORTED_FLOAT-SAME: %arg2: f8E4M3FN |
| 974 | + // UNSUPPORTED_FLOAT-SAME: %arg3: f8E5M2FNUZ |
| 975 | + // UNSUPPORTED_FLOAT-SAME: %arg4: f8E4M3FNUZ |
| 976 | + // UNSUPPORTED_FLOAT-SAME: %arg5: f8E4M3B11FNUZ |
| 977 | + // UNSUPPORTED_FLOAT-SAME: %arg6: f8E3M4 |
| 978 | + // UNSUPPORTED_FLOAT-SAME: %arg7: f8E8M0FNU |
| 979 | + // UNSUPPORTED_FLOAT-SAME: %arg8: vector<4xf8E4M3B11FNUZ> |
| 980 | + // UNSUPPORTED_FLOAT-SAME: %arg9: memref<8xf8E4M3, #spirv.storage_class<StorageBuffer>> |
| 981 | + // UNSUPPORTED_FLOAT-SAME: %arg10: tensor<4xf8E5M2> |
| 982 | + // UNSUPPORTED_FLOAT-SAME: ) { |
| 983 | + |
| 984 | + func.func @float8_to_integer8( |
| 985 | + %arg0: f8E5M2, // CHECK-NOT: f8E5M2 |
| 986 | + %arg1: f8E4M3, // CHECK-NOT: f8E4M3 |
| 987 | + %arg2: f8E4M3FN, // CHECK-NOT: f8E4M3FN |
| 988 | + %arg3: f8E5M2FNUZ, // CHECK-NOT: f8E5M2FNUZ |
| 989 | + %arg4: f8E4M3FNUZ, // CHECK-NOT: f8E4M3FNUZ |
| 990 | + %arg5: f8E4M3B11FNUZ, // CHECK-NOT: f8E4M3B11FNUZ |
| 991 | + %arg6: f8E3M4, // CHECK-NOT: f8E3M4 |
| 992 | + %arg7: f8E8M0FNU, // CHECK-NOT: f8E8M0FNU |
| 993 | + %arg8: vector<4xf8E4M3B11FNUZ>, // CHECK-NOT: vector<4xf8E4M3B11FNUZ> |
| 994 | + %arg9: memref<8xf8E4M3, #spirv.storage_class<StorageBuffer>>, // CHECK-NOT: memref |
| 995 | + %arg10: tensor<4xf8E5M2> // CHECK-NOT: tensor |
| 996 | + ) { |
| 997 | + // CHECK: spirv.Return |
| 998 | + return |
| 999 | + } |
| 1000 | +} |
0 commit comments