@@ -47,7 +47,7 @@ func @fakeQuantArgs_Quint8_0_1(tensor<8x4x3xf32>) -> tensor<8x4x3xf32> {
4747
4848// -----
4949// Verifies a quint8 asymmetric 0..1 range (with narrow_range = true).
50- // CHECK_LABEL : fakeQuantArgs_Quint8_NarrowRange
50+ // CHECK-LABEL : fakeQuantArgs_Quint8_NarrowRange
5151func @fakeQuantArgs_Quint8_NarrowRange (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
5252^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
5353 // CHECK: %0 = "quant.qcast"(%arg0) : (tensor<8x4x3xf32>)
@@ -62,7 +62,7 @@ func @fakeQuantArgs_Quint8_NarrowRange(tensor<8x4x3xf32>) -> tensor<8x4x3xf32> {
6262
6363// -----
6464// Verifies a quint8 symmetric range of -1..127/128.
65- // CHECK_LABEL : fakeQuantArgs_Quint8_SymmetricRange
65+ // CHECK-LABEL : fakeQuantArgs_Quint8_SymmetricRange
6666func @fakeQuantArgs_Quint8_SymmetricRange (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
6767^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
6868 // CHECK: %0 = "quant.qcast"(%arg0) : (tensor<8x4x3xf32>)
@@ -122,7 +122,7 @@ func @fakeQuantArgs_Qint8_0_1(tensor<8x4x3xf32>) -> tensor<8x4x3xf32> {
122122
123123// -----
124124// Verifies a qint8 asymmetric 0..1 range (with narrow_range = true).
125- // CHECK_LABEL : fakeQuantArgs_Qint8_NarrowRange
125+ // CHECK-LABEL : fakeQuantArgs_Qint8_NarrowRange
126126func @fakeQuantArgs_Qint8_NarrowRange (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
127127^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
128128 // CHECK: %0 = "quant.qcast"(%arg0) : (tensor<8x4x3xf32>)
@@ -137,7 +137,7 @@ func @fakeQuantArgs_Qint8_NarrowRange(tensor<8x4x3xf32>) -> tensor<8x4x3xf32> {
137137
138138// -----
139139// Verifies a qint8 symmetric range of -1..127/128.
140- // CHECK_LABEL : fakeQuantArgs_Qint8_SymmetricRange
140+ // CHECK-LABEL : fakeQuantArgs_Qint8_SymmetricRange
141141func @fakeQuantArgs_Qint8_SymmetricRange (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
142142^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
143143 // CHECK: %0 = "quant.qcast"(%arg0) : (tensor<8x4x3xf32>)
@@ -181,9 +181,41 @@ func @fakeQuantArgs_UnrankedTensor(tensor<f32>) -> tensor<f32> {
181181 return %0 : tensor <f32 >
182182}
183183
184+ // -----
185+ // CHECK-LABEL: fakeQuantArgs_all_positive
186+ func @fakeQuantArgs_all_positive (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
187+ ^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
188+
189+ // CHECK: %[[qc:.*]] = "quant.qcast"(%arg0) : (tensor<8x4x3xf32>)
190+ // CHECK-SAME: -> tensor<8x4x3x!quant.uniform<i8:f32, 0.0039215686274509803:-128>>
191+ // CHECK-NEXT: "quant.dcast"(%[[qc]]) : (tensor<8x4x3x!quant.uniform<i8:f32, 0.0039215686274509803:-128>>)
192+ // CHECK-SAME: -> tensor<8x4x3xf32>
193+
194+ %0 = " quant.const_fake_quant" (%arg0 ) {
195+ min = 0.5 : f32 , max = 1.5 : f32 , num_bits = 8 , narrow_range = false , is_signed = true
196+ } : (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 >
197+ return %0 : tensor <8 x4 x3 xf32 >
198+ }
199+
200+ // -----
201+ // CHECK-LABEL: fakeQuantArgs_all_negative
202+ func @fakeQuantArgs_all_negative (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
203+ ^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
204+
205+ // CHECK: %[[qc:.*]] = "quant.qcast"(%arg0) : (tensor<8x4x3xf32>)
206+ // CHECK-SAME: -> tensor<8x4x3x!quant.uniform<i8:f32, 0.0039215686274509803:127>>
207+ // CHECK-NEXT: "quant.dcast"(%[[qc]]) : (tensor<8x4x3x!quant.uniform<i8:f32, 0.0039215686274509803:127>>)
208+ // CHECK-SAME: -> tensor<8x4x3xf32>
209+
210+ %0 = " quant.const_fake_quant" (%arg0 ) {
211+ min = -1.5 : f32 , max = -0.5 : f32 , num_bits = 8 , narrow_range = false , is_signed = true
212+ } : (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 >
213+ return %0 : tensor <8 x4 x3 xf32 >
214+ }
215+
184216// -----
185217// Verifies a qint8 per axis
186- // CHECK_LABEL : fakeQuantPerAxis
218+ // CHECK-LABEL : fakeQuantPerAxis
187219func @fakeQuantPerAxis (tensor <8 x4 x3 xf32 >) -> tensor <8 x4 x3 xf32 > {
188220^bb0 (%arg0: tensor <8 x4 x3 xf32 >):
189221
0 commit comments