From ff8c28c86e302c3831e653750f1e5dee8ab453e5 Mon Sep 17 00:00:00 2001 From: Zoran Zomborat Date: Mon, 30 Sep 2024 15:11:02 +0000 Subject: [PATCH 1/3] relax negative scale conditions --- mlir/lib/Dialect/Quant/IR/QuantTypes.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mlir/lib/Dialect/Quant/IR/QuantTypes.cpp b/mlir/lib/Dialect/Quant/IR/QuantTypes.cpp index 8b6d7a58f2be..0ee888308642 100644 --- a/mlir/lib/Dialect/Quant/IR/QuantTypes.cpp +++ b/mlir/lib/Dialect/Quant/IR/QuantTypes.cpp @@ -299,7 +299,7 @@ LogicalResult UniformQuantizedType::verify( return emitError() << "expressed type must be floating point"; // Verify scale. - if (scale <= 0.0 || std::isinf(scale) || std::isnan(scale)) + if (std::isinf(scale) || std::isnan(scale)) return emitError() << "illegal scale: " << scale; return success(); @@ -364,7 +364,7 @@ LogicalResult UniformQuantizedPerAxisType::verify( // Verify scale. for (double scale : scales) { - if (scale <= 0.0 || std::isinf(scale) || std::isnan(scale)) + if (std::isinf(scale) || std::isnan(scale)) return emitError() << "illegal scale: " << scale; } From ec726ea3685de24a18ebe44721eb678cd6111240 Mon Sep 17 00:00:00 2001 From: Zoran Zomborat Date: Mon, 30 Sep 2024 15:11:46 +0000 Subject: [PATCH 2/3] adapt tests now handling negative scales --- .../Dialect/Quant/parse-quantile-invalid.mlir | 5 ----- mlir/test/Dialect/Quant/parse-quantile.mlir | 18 ++++++++++++++++++ .../Dialect/Quant/parse-uniform-invalid.mlir | 5 ----- mlir/test/Dialect/Quant/parse-uniform.mlir | 18 ++++++++++++++++++ 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/mlir/test/Dialect/Quant/parse-quantile-invalid.mlir b/mlir/test/Dialect/Quant/parse-quantile-invalid.mlir index 8a1e9927d168..4367173d2dff 100644 --- a/mlir/test/Dialect/Quant/parse-quantile-invalid.mlir +++ b/mlir/test/Dialect/Quant/parse-quantile-invalid.mlir @@ -142,11 +142,6 @@ func.func @parse() -> !qalias { // expected-error@+1 {{expected non-function type}} !qalias = !quant.quantile:f16:f33, {-1.0,1.0}:0.99872:127> -// ----- -// Illegal scale: negative -// expected-error@+1 {{illegal scale: -1.000000}} -!qalias = !quant.quantile:f16:f32, {-1.0,1.0}:-1.0:127> - // ----- // Illegal uniform params: missing quantized dimension // expected-error@+1 {{expected integer value}} diff --git a/mlir/test/Dialect/Quant/parse-quantile.mlir b/mlir/test/Dialect/Quant/parse-quantile.mlir index a239e0ca4fab..b2390695c76b 100644 --- a/mlir/test/Dialect/Quant/parse-quantile.mlir +++ b/mlir/test/Dialect/Quant/parse-quantile.mlir @@ -163,3 +163,21 @@ func.func @parse() -> !qalias { %0 = "foo"() : () -> !qalias return %0 : !qalias } + +// ----- +// Negative scale checking +// CHECK: !quant.quantile +!qalias = !quant.quantile +func.func @parse() -> !qalias { + %0 = "foo"() : () -> !qalias + return %0 : !qalias +} + +// ----- +// Per-axis negative scale checking +// CHECK: !quant.quantile +!qalias = !quant.quantile +func.func @parse() -> !qalias { + %0 = "foo"() : () -> !qalias + return %0 : !qalias +} diff --git a/mlir/test/Dialect/Quant/parse-uniform-invalid.mlir b/mlir/test/Dialect/Quant/parse-uniform-invalid.mlir index 5643f759efc0..698f17604f80 100644 --- a/mlir/test/Dialect/Quant/parse-uniform-invalid.mlir +++ b/mlir/test/Dialect/Quant/parse-uniform-invalid.mlir @@ -125,11 +125,6 @@ // expected-error@+1 {{expected non-function type}} !qalias = !quant.uniform:f33, 0.99872:127> -// ----- -// Illegal scale: negative -// expected-error@+1 {{illegal scale: -1.000000}} -!qalias = !quant.uniform:f32, -1.0:127> - // ----- // Illegal uniform params: missing quantized dimension // expected-error@+1 {{expected integer value}} diff --git a/mlir/test/Dialect/Quant/parse-uniform.mlir b/mlir/test/Dialect/Quant/parse-uniform.mlir index 15a1caefb04f..73d919f1e3df 100644 --- a/mlir/test/Dialect/Quant/parse-uniform.mlir +++ b/mlir/test/Dialect/Quant/parse-uniform.mlir @@ -199,3 +199,21 @@ func.func @parse() -> !qalias { %0 = "foo"() : () -> !qalias return %0 : !qalias } + +// ----- +// Negative scale checking +// CHECK: !quant.uniform +!qalias = !quant.uniform +func.func @parse() -> !qalias { + %0 = "foo"() : () -> !qalias + return %0 : !qalias +} + +// ----- +// Per axis negative scale checking +// CHECK: !quant.uniform +!qalias = !quant.uniform +func.func @parse() -> !qalias { + %0 = "foo"() : () -> !qalias + return %0 : !qalias +} From d52b5997c9ac0ec84ed171972089dcd102fe14a9 Mon Sep 17 00:00:00 2001 From: Zoran Zomborat Date: Wed, 2 Oct 2024 10:26:09 +0000 Subject: [PATCH 3/3] fix LIT tests --- mlir/test/Dialect/Quant/parse-quantile.mlir | 4 ++-- mlir/test/Dialect/Quant/parse-uniform.mlir | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mlir/test/Dialect/Quant/parse-quantile.mlir b/mlir/test/Dialect/Quant/parse-quantile.mlir index b2390695c76b..1af567478e71 100644 --- a/mlir/test/Dialect/Quant/parse-quantile.mlir +++ b/mlir/test/Dialect/Quant/parse-quantile.mlir @@ -166,8 +166,8 @@ func.func @parse() -> !qalias { // ----- // Negative scale checking -// CHECK: !quant.quantile -!qalias = !quant.quantile +// CHECK: !quant.quantile +!qalias = !quant.quantile func.func @parse() -> !qalias { %0 = "foo"() : () -> !qalias return %0 : !qalias diff --git a/mlir/test/Dialect/Quant/parse-uniform.mlir b/mlir/test/Dialect/Quant/parse-uniform.mlir index 73d919f1e3df..51d3f14fb976 100644 --- a/mlir/test/Dialect/Quant/parse-uniform.mlir +++ b/mlir/test/Dialect/Quant/parse-uniform.mlir @@ -202,8 +202,8 @@ func.func @parse() -> !qalias { // ----- // Negative scale checking -// CHECK: !quant.uniform -!qalias = !quant.uniform +// CHECK: !quant.uniform +!qalias = !quant.uniform func.func @parse() -> !qalias { %0 = "foo"() : () -> !qalias return %0 : !qalias