@@ -22,35 +22,36 @@ func.func @test_quantize_linear_ui8(%arg0: tensor<6xf32>, %arg1: tensor<f32>, %a
22
22
// CHECK-DAG: [[LOAD_PARAM_1_MEM_:%.+]] = krnl.load [[PARAM_1_]][] : memref<f32>
23
23
// CHECK-DAG: [[LOAD_PARAM_2_MEM_:%.+]] = krnl.load [[PARAM_2_]][] : memref<ui8>
24
24
// CHECK: [[VAR_2_:%.+]] = builtin.unrealized_conversion_cast [[LOAD_PARAM_2_MEM_]] : ui8 to i8
25
- // CHECK-DAG: [[VAR_3_:%.+]] = arith.uitofp [[VAR_2_]] : i8 to f32
25
+ // CHECK: [[VAR_3_:%.+]] = arith.extui [[VAR_2_]] : i8 to i32
26
+ // CHECK-DAG: [[VAR_4_:%.+]] = arith.uitofp [[VAR_3_]] : i32 to f32
26
27
// CHECK-DAG: [[LOOP_0_:%.+]] = krnl.define_loops 1
27
28
// CHECK: krnl.iterate([[LOOP_0_]]) with ([[LOOP_0_]] -> [[I_0_:%.+]] = 0 to 6){
28
- // CHECK: [[VAR_5_ :%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
29
- // CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_5_ ]]{{.}} : memref<6xf32>
30
- // CHECK: [[VAR_7_ :%.+]] = arith.divf [[LOAD_PARAM_0_MEM_]], [[LOAD_PARAM_1_MEM_]] : f32
31
- // CHECK: [[VAR_8_ :%.+]] = math.floor [[VAR_7_ ]] : f32
32
- // CHECK: [[VAR_9_ :%.+]] = arith.subf [[VAR_7_ ]], [[VAR_8_ ]] : f32
33
- // CHECK-DAG: [[VAR_10_ :%.+]] = arith.cmpf ogt, [[VAR_9_ ]], [[CST_5_dot_000000_]] : f32
34
- // CHECK-DAG: [[VAR_11_ :%.+]] = arith.addf [[VAR_8_ ]], [[CST_1_dot_000000_]] : f32
29
+ // CHECK: [[VAR_6_ :%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
30
+ // CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_6_ ]]{{.}} : memref<6xf32>
31
+ // CHECK: [[VAR_8_ :%.+]] = arith.divf [[LOAD_PARAM_0_MEM_]], [[LOAD_PARAM_1_MEM_]] : f32
32
+ // CHECK: [[VAR_9_ :%.+]] = math.floor [[VAR_8_ ]] : f32
33
+ // CHECK: [[VAR_10_ :%.+]] = arith.subf [[VAR_8_ ]], [[VAR_9_ ]] : f32
34
+ // CHECK-DAG: [[VAR_11_ :%.+]] = arith.cmpf ogt, [[VAR_10_ ]], [[CST_5_dot_000000_]] : f32
35
+ // CHECK-DAG: [[VAR_12_ :%.+]] = arith.addf [[VAR_9_ ]], [[CST_1_dot_000000_]] : f32
35
36
// CHECK-NOT: separator of consecutive DAGs
36
- // CHECK-DAG: [[VAR_12_ :%.+]] = arith.select [[VAR_10_ ]], [[VAR_11_ ]], [[VAR_8_ ]] : f32
37
- // CHECK-DAG: [[VAR_13_ :%.+]] = arith.mulf [[VAR_8_ ]], [[CST_5_dot_000000_]] : f32
38
- // CHECK: [[VAR_14_ :%.+]] = math.floor [[VAR_13_ ]] : f32
39
- // CHECK: [[VAR_15_ :%.+]] = arith.mulf [[VAR_14_ ]], [[CST_2_dot_000000_]] : f32
40
- // CHECK: [[VAR_16_ :%.+]] = arith.subf [[VAR_8_ ]], [[VAR_15_ ]] : f32
41
- // CHECK-DAG: [[VAR_17_ :%.+]] = arith.cmpf oeq, [[VAR_16_ ]], [[CST_1_dot_000000_]] : f32
42
- // CHECK-DAG: [[VAR_18_ :%.+]] = arith.addf [[VAR_8_ ]], [[CST_1_dot_000000_]] : f32
37
+ // CHECK-DAG: [[VAR_13_ :%.+]] = arith.select [[VAR_11_ ]], [[VAR_12_ ]], [[VAR_9_ ]] : f32
38
+ // CHECK-DAG: [[VAR_14_ :%.+]] = arith.mulf [[VAR_9_ ]], [[CST_5_dot_000000_]] : f32
39
+ // CHECK: [[VAR_15_ :%.+]] = math.floor [[VAR_14_ ]] : f32
40
+ // CHECK: [[VAR_16_ :%.+]] = arith.mulf [[VAR_15_ ]], [[CST_2_dot_000000_]] : f32
41
+ // CHECK: [[VAR_17_ :%.+]] = arith.subf [[VAR_9_ ]], [[VAR_16_ ]] : f32
42
+ // CHECK-DAG: [[VAR_18_ :%.+]] = arith.cmpf oeq, [[VAR_17_ ]], [[CST_1_dot_000000_]] : f32
43
+ // CHECK-DAG: [[VAR_19_ :%.+]] = arith.addf [[VAR_9_ ]], [[CST_1_dot_000000_]] : f32
43
44
// CHECK-NOT: separator of consecutive DAGs
44
- // CHECK-DAG: [[VAR_19_ :%.+]] = arith.select [[VAR_17_ ]], [[VAR_18_ ]], [[VAR_8_ ]] : f32
45
- // CHECK-DAG: [[VAR_20_ :%.+]] = arith.cmpf oeq, [[VAR_9_ ]], [[CST_5_dot_000000_]] : f32
46
- // CHECK: [[VAR_21_ :%.+]] = arith.select [[VAR_20_ ]], [[VAR_19_ ]], [[VAR_12_ ]] : f32
47
- // CHECK: [[VAR_22_ :%.+]] = arith.addf [[VAR_21_ ]], [[VAR_3_ ]] : f32
48
- // CHECK: [[VAR_23_ :%.+]] = arith.maxnumf [[VAR_22_ ]], [[CST_0_dot_000000_]] : f32
49
- // CHECK: [[VAR_24_ :%.+]] = arith.minnumf [[VAR_23_ ]], [[CST_2_dot_550000_]] : f32
50
- // CHECK: [[VAR_25_ :%.+]] = arith.fptoui [[VAR_24_ ]] : f32 to i32
51
- // CHECK: [[VAR_26_ :%.+]] = arith.trunci [[VAR_25_ ]] : i32 to i8
52
- // CHECK: [[VAR_27_ :%.+]] = builtin.unrealized_conversion_cast [[VAR_26_ ]] : i8 to ui8
53
- // CHECK: krnl.store [[VAR_27_ ]], [[RES_]]{{.}}[[VAR_5_ ]]{{.}} : memref<6xui8>
45
+ // CHECK-DAG: [[VAR_20_ :%.+]] = arith.select [[VAR_18_ ]], [[VAR_19_ ]], [[VAR_9_ ]] : f32
46
+ // CHECK-DAG: [[VAR_21_ :%.+]] = arith.cmpf oeq, [[VAR_10_ ]], [[CST_5_dot_000000_]] : f32
47
+ // CHECK: [[VAR_22_ :%.+]] = arith.select [[VAR_21_ ]], [[VAR_20_ ]], [[VAR_13_ ]] : f32
48
+ // CHECK: [[VAR_23_ :%.+]] = arith.addf [[VAR_22_ ]], [[VAR_4_ ]] : f32
49
+ // CHECK: [[VAR_24_ :%.+]] = arith.maxnumf [[VAR_23_ ]], [[CST_0_dot_000000_]] : f32
50
+ // CHECK: [[VAR_25_ :%.+]] = arith.minnumf [[VAR_24_ ]], [[CST_2_dot_550000_]] : f32
51
+ // CHECK: [[VAR_26_ :%.+]] = arith.fptoui [[VAR_25_ ]] : f32 to i32
52
+ // CHECK: [[VAR_27_ :%.+]] = arith.trunci [[VAR_26_ ]] : i32 to i8
53
+ // CHECK: [[VAR_28_ :%.+]] = builtin.unrealized_conversion_cast [[VAR_27_ ]] : i8 to ui8
54
+ // CHECK: krnl.store [[VAR_28_ ]], [[RES_]]{{.}}[[VAR_6_ ]]{{.}} : memref<6xui8>
54
55
// CHECK: }
55
56
// CHECK: return [[RES_]] : memref<6xui8>
56
57
// CHECK: }
@@ -74,35 +75,35 @@ func.func @test_quantize_linear_i8(%arg0: tensor<6xf32>, %arg1: tensor<f32>, %ar
74
75
// CHECK-DAG: [[RES_:%.+]] = memref.alloc() {{.*}}: memref<6xi8>
75
76
// CHECK-DAG: [[LOAD_PARAM_1_MEM_:%.+]] = krnl.load [[PARAM_1_]][] : memref<f32>
76
77
// CHECK-DAG: [[LOAD_PARAM_2_MEM_:%.+]] = krnl.load [[PARAM_2_]][] : memref<i8>
77
- // CHECK-NOT: separator of consecutive DAGs
78
- // CHECK-DAG: [[VAR_2_ :%.+]] = arith.sitofp [[LOAD_PARAM_2_MEM_ ]] : i8 to f32
78
+ // CHECK: [[VAR_2_:%.+]] = arith.extsi [[LOAD_PARAM_2_MEM_]] : i8 to i32
79
+ // CHECK-DAG: [[VAR_3_ :%.+]] = arith.sitofp [[VAR_2_ ]] : i32 to f32
79
80
// CHECK-DAG: [[LOOP_0_:%.+]] = krnl.define_loops 1
80
81
// CHECK: krnl.iterate([[LOOP_0_]]) with ([[LOOP_0_]] -> [[I_0_:%.+]] = 0 to 6){
81
- // CHECK: [[VAR_4_ :%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
82
- // CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_4_ ]]{{.}} : memref<6xf32>
83
- // CHECK: [[VAR_6_ :%.+]] = arith.divf [[LOAD_PARAM_0_MEM_]], [[LOAD_PARAM_1_MEM_]] : f32
84
- // CHECK: [[VAR_7_ :%.+]] = math.floor [[VAR_6_ ]] : f32
85
- // CHECK: [[VAR_8_ :%.+]] = arith.subf [[VAR_6_ ]], [[VAR_7_ ]] : f32
86
- // CHECK-DAG: [[VAR_9_ :%.+]] = arith.cmpf ogt, [[VAR_8_ ]], [[CST_5_dot_000000_]] : f32
87
- // CHECK-DAG: [[VAR_10_ :%.+]] = arith.addf [[VAR_7_ ]], [[CST_1_dot_000000_]] : f32
82
+ // CHECK: [[VAR_5_ :%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
83
+ // CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_5_ ]]{{.}} : memref<6xf32>
84
+ // CHECK: [[VAR_7_ :%.+]] = arith.divf [[LOAD_PARAM_0_MEM_]], [[LOAD_PARAM_1_MEM_]] : f32
85
+ // CHECK: [[VAR_8_ :%.+]] = math.floor [[VAR_7_ ]] : f32
86
+ // CHECK: [[VAR_9_ :%.+]] = arith.subf [[VAR_7_ ]], [[VAR_8_ ]] : f32
87
+ // CHECK-DAG: [[VAR_10_ :%.+]] = arith.cmpf ogt, [[VAR_9_ ]], [[CST_5_dot_000000_]] : f32
88
+ // CHECK-DAG: [[VAR_11_ :%.+]] = arith.addf [[VAR_8_ ]], [[CST_1_dot_000000_]] : f32
88
89
// CHECK-NOT: separator of consecutive DAGs
89
- // CHECK-DAG: [[VAR_11_ :%.+]] = arith.select [[VAR_9_ ]], [[VAR_10_ ]], [[VAR_7_ ]] : f32
90
- // CHECK-DAG: [[VAR_12_ :%.+]] = arith.mulf [[VAR_7_ ]], [[CST_5_dot_000000_]] : f32
91
- // CHECK: [[VAR_13_ :%.+]] = math.floor [[VAR_12_ ]] : f32
92
- // CHECK: [[VAR_14_ :%.+]] = arith.mulf [[VAR_13_ ]], [[CST_2_dot_000000_]] : f32
93
- // CHECK: [[VAR_15_ :%.+]] = arith.subf [[VAR_7_ ]], [[VAR_14_ ]] : f32
94
- // CHECK-DAG: [[VAR_16_ :%.+]] = arith.cmpf oeq, [[VAR_15_ ]], [[CST_1_dot_000000_]] : f32
95
- // CHECK-DAG: [[VAR_17_ :%.+]] = arith.addf [[VAR_7_ ]], [[CST_1_dot_000000_]] : f32
90
+ // CHECK-DAG: [[VAR_12_ :%.+]] = arith.select [[VAR_10_ ]], [[VAR_11_ ]], [[VAR_8_ ]] : f32
91
+ // CHECK-DAG: [[VAR_13_ :%.+]] = arith.mulf [[VAR_8_ ]], [[CST_5_dot_000000_]] : f32
92
+ // CHECK: [[VAR_14_ :%.+]] = math.floor [[VAR_13_ ]] : f32
93
+ // CHECK: [[VAR_15_ :%.+]] = arith.mulf [[VAR_14_ ]], [[CST_2_dot_000000_]] : f32
94
+ // CHECK: [[VAR_16_ :%.+]] = arith.subf [[VAR_8_ ]], [[VAR_15_ ]] : f32
95
+ // CHECK-DAG: [[VAR_17_ :%.+]] = arith.cmpf oeq, [[VAR_16_ ]], [[CST_1_dot_000000_]] : f32
96
+ // CHECK-DAG: [[VAR_18_ :%.+]] = arith.addf [[VAR_8_ ]], [[CST_1_dot_000000_]] : f32
96
97
// CHECK-NOT: separator of consecutive DAGs
97
- // CHECK-DAG: [[VAR_18_ :%.+]] = arith.select [[VAR_16_ ]], [[VAR_17_ ]], [[VAR_7_ ]] : f32
98
- // CHECK-DAG: [[VAR_19_ :%.+]] = arith.cmpf oeq, [[VAR_8_ ]], [[CST_5_dot_000000_]] : f32
99
- // CHECK: [[VAR_20_ :%.+]] = arith.select [[VAR_19_ ]], [[VAR_18_ ]], [[VAR_11_ ]] : f32
100
- // CHECK: [[VAR_21_ :%.+]] = arith.addf [[VAR_20_ ]], [[VAR_2_ ]] : f32
101
- // CHECK: [[VAR_22_ :%.+]] = arith.maxnumf [[VAR_21_ ]], [[CST_minus_1_dot_280000_]] : f32
102
- // CHECK: [[VAR_23_ :%.+]] = arith.minnumf [[VAR_22_ ]], [[CST_1_dot_270000_]] : f32
103
- // CHECK: [[VAR_24_ :%.+]] = arith.fptosi [[VAR_23_ ]] : f32 to i32
104
- // CHECK: [[VAR_25_ :%.+]] = arith.trunci [[VAR_24_ ]] : i32 to i8
105
- // CHECK: krnl.store [[VAR_25_ ]], [[RES_]]{{.}}[[VAR_4_ ]]{{.}} : memref<6xi8>
98
+ // CHECK-DAG: [[VAR_19_ :%.+]] = arith.select [[VAR_17_ ]], [[VAR_18_ ]], [[VAR_8_ ]] : f32
99
+ // CHECK-DAG: [[VAR_20_ :%.+]] = arith.cmpf oeq, [[VAR_9_ ]], [[CST_5_dot_000000_]] : f32
100
+ // CHECK: [[VAR_21_ :%.+]] = arith.select [[VAR_20_ ]], [[VAR_19_ ]], [[VAR_12_ ]] : f32
101
+ // CHECK: [[VAR_22_ :%.+]] = arith.addf [[VAR_21_ ]], [[VAR_3_ ]] : f32
102
+ // CHECK: [[VAR_23_ :%.+]] = arith.maxnumf [[VAR_22_ ]], [[CST_minus_1_dot_280000_]] : f32
103
+ // CHECK: [[VAR_24_ :%.+]] = arith.minnumf [[VAR_23_ ]], [[CST_1_dot_270000_]] : f32
104
+ // CHECK: [[VAR_25_ :%.+]] = arith.fptosi [[VAR_24_ ]] : f32 to i32
105
+ // CHECK: [[VAR_26_ :%.+]] = arith.trunci [[VAR_25_ ]] : i32 to i8
106
+ // CHECK: krnl.store [[VAR_26_ ]], [[RES_]]{{.}}[[VAR_5_ ]]{{.}} : memref<6xi8>
106
107
// CHECK: }
107
108
// CHECK: return [[RES_]] : memref<6xi8>
108
109
// CHECK: }
0 commit comments