@@ -1222,6 +1222,16 @@ func.func @rescale_i8(%arg0 : tensor<2xi8>) -> () {
12221222 // CHECK-DAG: linalg.yield [[TRUNC]]
12231223 %0 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false } : (tensor <2 xi8 >) -> tensor <2 xi8 >
12241224
1225+ // CHECK: return
1226+ return
1227+ }
1228+
1229+ // -----
1230+ // CHECK: #[[$MAP0:.*]] = affine_map<(d0) -> (d0)>
1231+
1232+ // CHECK-LABEL: @rescale_i8_unsigned_output
1233+ // CHECK-SAME: (%[[ARG0:[0-9a-zA-Z_]*]]:
1234+ func.func @rescale_i8_unsigned_output (%arg0 : tensor <2 xi8 >) -> () {
12251235 // CHECK: [[C0:%.+]] = arith.constant 19689
12261236 // CHECK: [[C1:%.+]] = arith.constant 15
12271237 // CHECK: [[INIT:%.+]] = tensor.empty()
@@ -1239,7 +1249,7 @@ func.func @rescale_i8(%arg0 : tensor<2xi8>) -> () {
12391249 // CHECK-DAG: [[BOUNDED:%.+]] = arith.minsi [[CMAX]], [[LOWER]]
12401250 // CHECK-DAG: [[TRUNC:%.+]] = arith.trunci [[BOUNDED]]
12411251 // CHECK: linalg.yield [[TRUNC]]
1242- %1 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false } : (tensor <2 xi8 >) -> tensor <2 x ui8 >
1252+ %1 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false , output_unsigned = true } : (tensor <2 xi8 >) -> tensor <2 x i8 >
12431253
12441254 // CHECK: return
12451255 return
@@ -1262,7 +1272,7 @@ func.func @rescale_i8_dyn_batch(%arg0 : tensor<?x2xi8>) -> () {
12621272 // CHECK: %[[BATCH:.+]] = tensor.dim %[[ARG0]], %[[C0]]
12631273 // CHECK: %[[INIT:.+]] = tensor.empty(%[[BATCH]]) : tensor<?x2xi8>
12641274 // CHECK: [[GENERIC:%.+]] = linalg.generic {indexing_maps = [#[[$MAP0]], #[[$MAP0]]], iterator_types = ["parallel", "parallel"]} ins(%[[ARG0]] : tensor<?x2xi8>) outs(%[[INIT]] : tensor<?x2xi8>)
1265- %1 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false } : (tensor <?x2 xi8 >) -> tensor <?x 2 x ui8 >
1275+ %1 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false , output_unsigned = true } : (tensor <?x2 xi8 >) -> tensor <?x 2 x i8 >
12661276
12671277 return
12681278}
@@ -1288,9 +1298,9 @@ func.func @rescale_dyn(%arg0 : tensor<1x?x?x32xi32>) -> () {
12881298
12891299// CHECK: #[[$MAP0:.*]] = affine_map<(d0) -> (d0)>
12901300
1291- // CHECK-LABEL: @rescale_ui8
1301+ // CHECK-LABEL: @rescale_i8_unsigned_input
12921302// CHECK-SAME: (%[[ARG0:[0-9a-zA-Z_]*]]:
1293- func.func @rescale_ui8 (%arg0 : tensor <2 x ui8 >) -> () {
1303+ func.func @rescale_i8_unsigned_input (%arg0 : tensor <2 x i8 >) -> () {
12941304 // CHECK: [[C0:%.+]] = arith.constant 19689
12951305 // CHECK: [[C1:%.+]] = arith.constant 15
12961306 // CHECK: [[INIT:%.+]] = tensor.empty()
@@ -1308,7 +1318,7 @@ func.func @rescale_ui8(%arg0 : tensor<2xui8>) -> () {
13081318 // CHECK-DAG: [[BOUNDED:%.+]] = arith.minsi [[CMAX]], [[LOWER]]
13091319 // CHECK-DAG: [[TRUNC:%.+]] = arith.trunci [[BOUNDED]]
13101320 // CHECK: linalg.yield [[TRUNC]]
1311- %0 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false } : (tensor <2 x ui8 >) -> tensor <2 xi8 >
1321+ %0 = tosa.rescale %arg0 {input_zp = 17 : i32 , output_zp = 22 : i32 , multiplier = array<i32 : 19689 >, shift = array<i8 : 15 >, scale32 = false , double_round = false , per_channel = false , input_unsigned = true } : (tensor <2 x i8 >) -> tensor <2 xi8 >
13121322
13131323 return
13141324}
0 commit comments