Adding mhlo.rng_uniform e2e tests. (#6996)
The tests are derived from https://github.com/google/iree/pull/6676
We can enable the tests because the lowering was landed upstream.
diff --git a/iree/test/e2e/xla_ops/BUILD b/iree/test/e2e/xla_ops/BUILD
index c74fc1e..9a4e62b 100644
--- a/iree/test/e2e/xla_ops/BUILD
+++ b/iree/test/e2e/xla_ops/BUILD
@@ -62,6 +62,7 @@
"remainder.mlir",
"reshape.mlir",
"reverse.mlir",
+ "rng_uniform.mlir",
"rsqrt.mlir",
"scatter.mlir",
"scatter_dynamic.mlir",
@@ -207,6 +208,7 @@
"remainder.mlir",
"reshape.mlir",
"reverse.mlir",
+ "rng_uniform.mlir",
"rsqrt.mlir",
"scatter.mlir",
"scatter_dynamic.mlir",
@@ -291,6 +293,7 @@
"scatter.mlir", # TODO(GH-6601): Enable the test.
"scatter_dynamic.mlir", # TODO(GH-6601): Enable the test.
"sort.mlir",
+ "rng_uniform.mlir", # TODO(GH-6995): Enable the test.
],
),
compiler_flags = ["-iree-input-type=mhlo"],
@@ -340,6 +343,7 @@
"remainder.mlir",
"reshape.mlir",
"reverse.mlir",
+ "rng_uniform.mlir",
"rsqrt.mlir",
"scatter.mlir",
"scatter_dynamic.mlir",
diff --git a/iree/test/e2e/xla_ops/CMakeLists.txt b/iree/test/e2e/xla_ops/CMakeLists.txt
index 268830b..392dfa4 100644
--- a/iree/test/e2e/xla_ops/CMakeLists.txt
+++ b/iree/test/e2e/xla_ops/CMakeLists.txt
@@ -52,6 +52,7 @@
"remainder.mlir"
"reshape.mlir"
"reverse.mlir"
+ "rng_uniform.mlir"
"rsqrt.mlir"
"scatter.mlir"
"scatter_dynamic.mlir"
@@ -121,6 +122,7 @@
"remainder.mlir"
"reshape.mlir"
"reverse.mlir"
+ "rng_uniform.mlir"
"rsqrt.mlir"
"scatter.mlir"
"scatter_dynamic.mlir"
@@ -242,6 +244,7 @@
"remainder.mlir"
"reshape.mlir"
"reverse.mlir"
+ "rng_uniform.mlir"
"rsqrt.mlir"
"scatter.mlir"
"scatter_dynamic.mlir"
diff --git a/iree/test/e2e/xla_ops/rng_uniform.mlir b/iree/test/e2e/xla_ops/rng_uniform.mlir
new file mode 100644
index 0000000..7e496db
--- /dev/null
+++ b/iree/test/e2e/xla_ops/rng_uniform.mlir
@@ -0,0 +1,34 @@
+// Note that they are stateless random generators, so they have fixed results.
+func @rng_uniform_1d() {
+ %min = util.unfoldable_constant dense<-10.0> : tensor<f32>
+ %max = util.unfoldable_constant dense<10.0> : tensor<f32>
+ %shape = util.unfoldable_constant dense<[10]> : tensor<1xi32>
+ %res = "mhlo.rng_uniform"(%min, %max, %shape) : (tensor<f32>, tensor<f32>, tensor<1xi32>) -> tensor<10xf32>
+ check.expect_almost_eq_const(%res, dense<[
+ -9.99994, -4.8613, 0.277344, 5.41599, -9.44537, -4.30673, 0.831918, 5.97056, -8.8908, -3.75215
+ ]> : tensor<10xf32>) : tensor<10xf32>
+ return
+}
+
+func @rng_uniform_2d() {
+ %min = util.unfoldable_constant dense<-10.0> : tensor<f32>
+ %max = util.unfoldable_constant dense<10.0> : tensor<f32>
+ %shape = util.unfoldable_constant dense<[3, 3]> : tensor<2xi32>
+ %res = "mhlo.rng_uniform"(%min, %max, %shape) : (tensor<f32>, tensor<f32>, tensor<2xi32>) -> tensor<3x3xf32>
+ check.expect_almost_eq_const(%res, dense<[
+ [6.55154, -8.30982, -3.17117],
+ [1.75741, 6.89606, -7.9653],
+ [-3.03671, 2.10193, 7.24057]]> : tensor<3x3xf32>) : tensor<3x3xf32>
+ return
+}
+
+func @rng_uniform_3d() {
+ %min = util.unfoldable_constant dense<-10.0> : tensor<f32>
+ %max = util.unfoldable_constant dense<10.0> : tensor<f32>
+ %shape = util.unfoldable_constant dense<[2, 2, 2]> : tensor<3xi32>
+ %res = "mhlo.rng_uniform"(%min, %max, %shape) : (tensor<f32>, tensor<f32>, tensor<3xi32>) -> tensor<2x2x2xf32>
+ check.expect_almost_eq_const(%res, dense<[
+ [[3.04814, 8.18679], [-1.74598, 3.39266]],
+ [[-6.91349, -1.77484], [8.29239, -6.56897]]]> : tensor<2x2x2xf32>) : tensor<2x2x2xf32>
+ return
+}