@@ -2033,6 +2033,44 @@ func.func @reduce_max_nan_propagate(%arg0: tensor<5x4xf32>, %arg1: tensor<5x4xf3
2033
2033
2034
2034
// -----
2035
2035
2036
+ // CHECK-LABEL: @reduce_min_nan_ignore_int
2037
+ func.func @reduce_min_nan_ignore_int (%arg0: tensor <5 x4 xi8 >, %arg1: tensor <5 x4 xi8 >) -> () {
2038
+ // CHECK: linalg.reduce
2039
+ // CHECK: arith.minsi
2040
+ // CHECK-NOT: arith.cmpf uno
2041
+ // CHECK-NOT: arith.select
2042
+ // CHECK: linalg.yield
2043
+ // CHECK-NOT: arith.constant 0x7FC00000
2044
+ // CHECK-NOT: tensor.empty()
2045
+ // CHECK-NOT: linalg.fill
2046
+ // CHECK-NOT: tensor.empty()
2047
+ // CHECK-NOT: select
2048
+ // CHECK: return
2049
+ %5 = tosa.reduce_min %arg0 {axis = 0 : i32 , nan_mode = " IGNORE" } : (tensor <5 x4 xi8 >) -> tensor <1 x4 xi8 >
2050
+ return
2051
+ }
2052
+
2053
+ // -----
2054
+
2055
+ // CHECK-LABEL: @reduce_max_nan_ignore_int
2056
+ func.func @reduce_max_nan_ignore_int (%arg0: tensor <5 x4 xi8 >, %arg1: tensor <5 x4 xi8 >) -> () {
2057
+ // CHECK: linalg.reduce
2058
+ // CHECK: arith.maxsi
2059
+ // CHECK-NOT: arith.cmpf uno
2060
+ // CHECK-NOT: arith.select
2061
+ // CHECK: linalg.yield
2062
+ // CHECK-NOT: arith.constant 0x7FC00000
2063
+ // CHECK-NOT: tensor.empty()
2064
+ // CHECK-NOT: linalg.fill
2065
+ // CHECK-NOT: tensor.empty()
2066
+ // CHECK-NOT: select
2067
+ // CHECK: return
2068
+ %6 = tosa.reduce_max %arg0 {axis = 0 : i32 , nan_mode = " IGNORE" } : (tensor <5 x4 xi8 >) -> tensor <1 x4 xi8 >
2069
+ return
2070
+ }
2071
+
2072
+ // -----
2073
+
2036
2074
// CHECK-LABEL: @reduce_min_nan_ignore
2037
2075
func.func @reduce_min_nan_ignore (%arg0: tensor <5 x4 xf32 >, %arg1: tensor <5 x4 xf32 >) -> () {
2038
2076
// CHECK: linalg.reduce
@@ -2095,6 +2133,32 @@ func.func @maximum_nan_propagate(%arg0: tensor<5x4xf32>, %arg1: tensor<5x4xf32>)
2095
2133
2096
2134
// -----
2097
2135
2136
+ // CHECK-LABEL: @minimum_nan_ignore_int
2137
+ func.func @minimum_nan_ignore_int (%arg0: tensor <5 x4 xi8 >, %arg1: tensor <5 x4 xi8 >) -> () {
2138
+ // CHECK: linalg.generic
2139
+ // CHECK: arith.minsi
2140
+ // CHECK-NOT: arith.cmpf uno
2141
+ // CHECK-NOT: arith.select
2142
+ // CHECK: linalg.yield
2143
+ %9 = tosa.minimum %arg0 , %arg1 {nan_mode = " IGNORE" } : (tensor <5 x4 xi8 >, tensor <5 x4 xi8 >) -> tensor <5 x4 xi8 >
2144
+ return
2145
+ }
2146
+
2147
+ // -----
2148
+
2149
+ // CHECK-LABEL: @maximum_nan_ignore_int
2150
+ func.func @maximum_nan_ignore_int (%arg0: tensor <5 x4 xi8 >, %arg1: tensor <5 x4 xi8 >) -> () {
2151
+ // CHECK: linalg.generic
2152
+ // CHECK: arith.maxsi
2153
+ // CHECK-NOT: arith.cmpf uno
2154
+ // CHECK-NOT: arith.select
2155
+ // CHECK: linalg.yield
2156
+ %10 = tosa.maximum %arg0 , %arg1 {nan_mode = " IGNORE" } : (tensor <5 x4 xi8 >, tensor <5 x4 xi8 >) -> tensor <5 x4 xi8 >
2157
+ return
2158
+ }
2159
+
2160
+ // -----
2161
+
2098
2162
// CHECK-LABEL: @minimum_nan_ignore
2099
2163
func.func @minimum_nan_ignore (%arg0: tensor <5 x4 xf32 >, %arg1: tensor <5 x4 xf32 >) -> () {
2100
2164
// CHECK: linalg.generic
@@ -2142,6 +2206,23 @@ func.func @argmax_nan_propagate(%arg0: tensor<5x4xf32>, %arg1: tensor<5x4xf32>)
2142
2206
2143
2207
// -----
2144
2208
2209
+ // CHECK-LABEL: @argmax_nan_ignore_int
2210
+ func.func @argmax_nan_ignore_int (%arg0: tensor <5 x4 xi8 >, %arg1: tensor <5 x4 xi8 >) -> () {
2211
+ // CHECK: linalg.generic
2212
+ // CHECK: arith.cmpi sgt
2213
+ // CHECK: arith.select
2214
+ // CHECK: arith.select
2215
+ // CHECK-NOT: arith.cmpf uno
2216
+ // CHECK-NOT: arith.cmpf uno
2217
+ // CHECK-NOT: arith.select
2218
+ // CHECK-NOT: arith.select
2219
+ // CHECK: linalg.yield
2220
+ %12 = tosa.argmax %arg0 {axis = 0 : i32 , nan_mode = " IGNORE" } : (tensor <5 x4 xi8 >) -> tensor <4 xi32 >
2221
+ return
2222
+ }
2223
+
2224
+ // -----
2225
+
2145
2226
// CHECK-LABEL: @argmax_nan_ignore
2146
2227
func.func @argmax_nan_ignore (%arg0: tensor <5 x4 xf32 >, %arg1: tensor <5 x4 xf32 >) -> () {
2147
2228
// CHECK: linalg.generic
@@ -2172,6 +2253,20 @@ func.func @clamp_nan_propagate(%arg0: tensor<5x4xf32>, %arg1: tensor<5x4xf32>) -
2172
2253
2173
2254
// -----
2174
2255
2256
+ // CHECK-LABEL: @clamp_nan_ignore_int
2257
+ func.func @clamp_nan_ignore_int (%arg0: tensor <5 x4 xi8 >, %arg1: tensor <5 x4 xi8 >) -> () {
2258
+ // CHECK: linalg.generic
2259
+ // CHECK: arith.maxsi
2260
+ // CHECK: arith.minsi
2261
+ // CHECK-NOT: arith.cmpf uno
2262
+ // CHECK-NOT: arith.select
2263
+ // CHECK: linalg.yield
2264
+ %14 = tosa.clamp %arg0 {min_val = 1 : i8 , max_val = 5 : i8 , nan_mode = " IGNORE" } : (tensor <5 x4 xi8 >) -> tensor <5 x4 xi8 >
2265
+ return
2266
+ }
2267
+
2268
+ // -----
2269
+
2175
2270
// CHECK-LABEL: @clamp_nan_ignore
2176
2271
func.func @clamp_nan_ignore (%arg0: tensor <5 x4 xf32 >, %arg1: tensor <5 x4 xf32 >) -> () {
2177
2272
// CHECK: linalg.generic
0 commit comments