Making iree-run-mlir use --function_input= as with other tools.
This is in preparation for moving the I/O parsing/printing to a
common utility.
Also moving some regression tests that haven't been run in years
and shouldn't have been in regression/ anyway.
diff --git a/docs/developers/developing_iree/developer_overview.md b/docs/developers/developing_iree/developer_overview.md
index f4edbdf..1a4e32f 100644
--- a/docs/developers/developing_iree/developer_overview.md
+++ b/docs/developers/developing_iree/developer_overview.md
@@ -180,10 +180,11 @@
[samples/models/simple_abs.mlir](https://github.com/iree-org/iree/blob/main/samples/models/simple_abs.mlir):
```shell
+# iree-run-mlir <compiler flags> [input.mlir] <runtime flags>
$ ../iree-build/tools/iree-run-mlir \
- --function-input="f32=-2" \
--iree-hal-target-backends=vmvx \
- $PWD/samples/models/simple_abs.mlir
+ $PWD/samples/models/simple_abs.mlir \
+ --function_input=f32=-2
```
### iree-dump-module
diff --git a/docs/developers/get_started/building_with_bazel_linux.md b/docs/developers/get_started/building_with_bazel_linux.md
index 477871e..53daf0a 100644
--- a/docs/developers/get_started/building_with_bazel_linux.md
+++ b/docs/developers/get_started/building_with_bazel_linux.md
@@ -109,7 +109,9 @@
and execute a function in the compiled module:
```shell
+# iree-run-mlir <compiler flags> [input.mlir] <runtime flags>
$ ./bazel-bin/tools/iree-run-mlir \
- --function-input="f32=-2" --iree-hal-target-backends=vmvx --print-mlir \
- ./samples/models/simple_abs.mlir
+ --iree-hal-target-backends=vmvx --print-mlir \
+ ./samples/models/simple_abs.mlir \
+ --function_input=f32=-2
```
diff --git a/docs/developers/get_started/building_with_bazel_macos.md b/docs/developers/get_started/building_with_bazel_macos.md
index a4a800a..38b1118 100644
--- a/docs/developers/get_started/building_with_bazel_macos.md
+++ b/docs/developers/get_started/building_with_bazel_macos.md
@@ -112,7 +112,9 @@
and execute a function in the compiled module:
```shell
+# iree-run-mlir <compiler flags> [input.mlir] <runtime flags>
$ ./bazel-bin/tools/iree-run-mlir \
- --function-input="f32=-2" --iree-hal-target-backends=vmvx --print-mlir \
- ./samples/models/simple_abs.mlir
+ --iree-hal-target-backends=vmvx --print-mlir \
+ ./samples/models/simple_abs.mlir \
+ --function_input=f32=-2
```
diff --git a/docs/developers/get_started/building_with_bazel_windows.md b/docs/developers/get_started/building_with_bazel_windows.md
index db51753..6db1a17 100644
--- a/docs/developers/get_started/building_with_bazel_windows.md
+++ b/docs/developers/get_started/building_with_bazel_windows.md
@@ -115,5 +115,6 @@
and execute a function in the compiled module:
```powershell
-> .\bazel-bin\tools\iree-run-mlir.exe --function-input="f32=-2" --iree-hal-target-backends=vmvx --print-mlir .\iree\samples\models\simple_abs.mlir
+> REM iree-run-mlir <compiler flags> [input.mlir] <runtime flags>
+> .\bazel-bin\tools\iree-run-mlir.exe --iree-hal-target-backends=vmvx --print-mlir .\iree\samples\models\simple_abs.mlir --function_input=f32=-2
```
diff --git a/tests/e2e/models/edge_detection.mlir b/tests/e2e/models/edge_detection.mlir
index 8d7d1ba..86397cd 100644
--- a/tests/e2e/models/edge_detection.mlir
+++ b/tests/e2e/models/edge_detection.mlir
@@ -1,6 +1,6 @@
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx --function-input="1x128x128x1xf32" %s | FileCheck %s
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="1x128x128x1xf32" %s | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="1x128x128x1xf32" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx %s --function_input=1x128x128x1xf32 | FileCheck %s
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu %s --function_input=1x128x128x1xf32 | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv %s --function_input=1x128x128x1xf32 | FileCheck %s)
// Image edge detection module generated by.
// https://github.com/iree-org/iree/blob/main/samples/colab/edge_detection.ipynb.
diff --git a/tests/e2e/models/fragment_000.mlir b/tests/e2e/models/fragment_000.mlir
index 57f72c8..37981e3 100644
--- a/tests/e2e/models/fragment_000.mlir
+++ b/tests/e2e/models/fragment_000.mlir
@@ -1,9 +1,18 @@
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx --function-input="f32=0" --function-input="5x1xf32=[1][-2][-3][4][-5]" --function-input="f32=1" --function-input="5x5xf32=[3.46499 -7.64389 -5.72249 5.98053 17.6892][2.9707 -6.20734 -4.25962 4.76055 13.8784][2.47641 -4.77079 -2.79675 3.54056 10.0675][1.98212 -3.33424 -1.33388 2.32058 6.25666][1.48783 -1.8977 0.12899 1.1006 2.4458]" --function-input="5xf32=0 0 0 0 0" %s | FileCheck %s
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="f32=0" --function-input="5x1xf32=[1][-2][-3][4][-5]" --function-input="f32=1" --function-input="5x5xf32=[3.46499 -7.64389 -5.72249 5.98053 17.6892][2.9707 -6.20734 -4.25962 4.76055 13.8784][2.47641 -4.77079 -2.79675 3.54056 10.0675][1.98212 -3.33424 -1.33388 2.32058 6.25666][1.48783 -1.8977 0.12899 1.1006 2.4458]" --function-input="5xf32=0 0 0 0 0" %s | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="f32=0" --function-input="5x1xf32=[1][-2][-3][4][-5]" --function-input="f32=1" --function-input="5x5xf32=[3.46499 -7.64389 -5.72249 5.98053 17.6892][2.9707 -6.20734 -4.25962 4.76055 13.8784][2.47641 -4.77079 -2.79675 3.54056 10.0675][1.98212 -3.33424 -1.33388 2.32058 6.25666][1.48783 -1.8977 0.12899 1.1006 2.4458]" --function-input="5xf32=0 0 0 0 0" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx %s | FileCheck %s
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu %s | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv %s | FileCheck %s)
-// CHECK-LABEL: EXEC @main_entry_dispatch_3
-func.func @main_entry_dispatch_3(
+// CHECK-LABEL: EXEC @entry
+func.func @entry() -> tensor<5x5xf32> {
+ %arg0 = util.unfoldable_constant dense<0.0> : tensor<f32>
+ %arg1 = util.unfoldable_constant dense<[[1.0],[-2.0],[-3.0],[4.0],[-5.0]]> : tensor<5x1xf32>
+ %arg2 = util.unfoldable_constant dense<1.0> : tensor<f32>
+ %arg3 = util.unfoldable_constant dense<[[3.46499,-7.64389,-5.72249,5.98053,17.6892],[2.9707,-6.20734,-4.25962,4.76055,13.8784],[2.47641,-4.77079,-2.79675,3.54056,10.0675],[1.98212,-3.33424,-1.33388,2.32058,6.25666],[1.48783,-1.8977,0.12899,1.1006,2.4458]]> : tensor<5x5xf32>
+ %arg4 = util.unfoldable_constant dense<0.0> : tensor<5xf32>
+ %ret0 = call @_entry(%arg0, %arg1, %arg2, %arg3, %arg4) : (tensor<f32>, tensor<5x1xf32>, tensor<f32>, tensor<5x5xf32>, tensor<5xf32>) -> tensor<5x5xf32>
+ return %ret0 : tensor<5x5xf32>
+}
+func.func private @_entry(
%0: tensor<f32>,
%1: tensor<5x1xf32>,
%2: tensor<f32>,
diff --git a/tests/e2e/models/fullyconnected.mlir b/tests/e2e/models/fullyconnected.mlir
index 3fda6be..d589c10 100644
--- a/tests/e2e/models/fullyconnected.mlir
+++ b/tests/e2e/models/fullyconnected.mlir
@@ -1,5 +1,5 @@
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="1x5xf32=1,-2,-3,4,-5" --function-input="1x5x3x1xf32=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1" %s | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="1x5xf32=1,-2,-3,4,-5" --function-input="1x5x3x1xf32=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu %s --function_input=1x5xf32=1,-2,-3,4,-5 --function_input=1x5x3x1xf32=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv %s --function_input=1x5xf32=1,-2,-3,4,-5 --function_input=1x5x3x1xf32=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 | FileCheck %s)
// CHECK-LABEL: EXEC @main
func.func @main(%arg0: tensor<1x5xf32>, %arg1: tensor<1x5x3x1xf32>) -> tensor<5x1x5xf32> {
diff --git a/tests/e2e/models/mnist_fake_weights.mlir b/tests/e2e/models/mnist_fake_weights.mlir
index ae82512..e80e7e1 100644
--- a/tests/e2e/models/mnist_fake_weights.mlir
+++ b/tests/e2e/models/mnist_fake_weights.mlir
@@ -1,8 +1,8 @@
// MNIST model with placeholder weights, for testing.
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx --function-input="1x28x28x1xf32" %s | FileCheck %s
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="1x28x28x1xf32" %s | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="1x28x28x1xf32" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx %s --function_input=1x28x28x1xf32 | FileCheck %s
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu %s --function_input=1x28x28x1xf32 | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv %s --function_input=1x28x28x1xf32 | FileCheck %s)
module {
util.global private @"__iree_flow___sm_node17__model.layer-1.kernel" {noinline} = dense<1.000000e+00> : tensor<784x128xf32>
diff --git a/tests/e2e/models/resnet50_fake_weights.mlir b/tests/e2e/models/resnet50_fake_weights.mlir
index 07d0580..6b00a1b 100644
--- a/tests/e2e/models/resnet50_fake_weights.mlir
+++ b/tests/e2e/models/resnet50_fake_weights.mlir
@@ -1,8 +1,8 @@
// ResNet50 model with placeholder weights, for testing.
// Generated by resnet.ipynb with some manual and automated cleanup for testing.
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="1x224x224x3xf32" %s | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="1x224x224x3xf32" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu %s --function_input=1x224x224x3xf32 | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv %s --function_input=1x224x224x3xf32 | FileCheck %s)
module {
util.global private @"__iree_flow___sm_node188__m.layer-2.kernel" {noinline} = dense<1.000000e+00> : tensor<7x7x3x64xf32>
diff --git a/tests/e2e/models/unidirectional_lstm.mlir b/tests/e2e/models/unidirectional_lstm.mlir
index 331ee71..3fbe171 100644
--- a/tests/e2e/models/unidirectional_lstm.mlir
+++ b/tests/e2e/models/unidirectional_lstm.mlir
@@ -1,8 +1,8 @@
// An example LSTM exported from a python reference model with dummy weights.
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="1x5xf32=[0,1,0,3,4]" --function-input="1x5x2x2xf32=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx --function-input="1x5xf32=[0,1,0,3,4]" --function-input="1x5x2x2xf32=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="1x5xf32=[0,1,0,3,4]" --function-input="1x5x2x2xf32=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu %s --function_input="1x5xf32=[0,1,0,3,4]" --function_input="1x5x2x2xf32=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]" | FileCheck %s
+// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx %s --function_input="1x5xf32=[0,1,0,3,4]" --function_input="1x5x2x2xf32=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]" | FileCheck %s)
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv %s --function_input="1x5xf32=[0,1,0,3,4]" --function_input="1x5x2x2xf32=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]" | FileCheck %s)
// Exported via the XLA HLO Importer
// The resulting MLIR was modified by hand by changing all large constants to be
diff --git a/tests/e2e/regression/BUILD b/tests/e2e/regression/BUILD
index a26af64..38e8f49 100644
--- a/tests/e2e/regression/BUILD
+++ b/tests/e2e/regression/BUILD
@@ -51,12 +51,6 @@
# TODO(#5897): enable these for codegen linalg on tensors/etc.
exclude = [
"associative_reordering.mlir",
- "dynamic_compare_and_select.mlir",
- "dynamic_dot_general.mlir",
- "dynamic_linalg_matmul_on_tensors.mlir",
- "dynamic_linalg_matmul_on_tensors_fuse_0.mlir",
- "dynamic_linalg_matmul_on_tensors_fuse_1.mlir",
- "dynamic_linalg_matmul_on_tensors_fuse_2.mlir",
"large_reduction.mlir",
"layernorm.mlir",
"linalg_quantized_matmul_vs_linalg_matmul.mlir",
diff --git a/tests/e2e/regression/dynamic_compare_and_select.mlir b/tests/e2e/regression/dynamic_compare_and_select.mlir
deleted file mode 100644
index 7b9165c..0000000
--- a/tests/e2e/regression/dynamic_compare_and_select.mlir
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=llvm-cpu --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[9,8,7,6,5,4,3,2,1,0]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vmvx --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[9,8,7,6,5,4,3,2,1,0]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-input-type=mhlo --iree-hal-target-backends=vulkan-spirv --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[0,1,2,3,4,5,6,7,8,9]" --function-input="10xi32=[9,8,7,6,5,4,3,2,1,0]" %s | FileCheck %s)
-
-// CHECK: EXEC @main
-// CHECK: 10xi32=9 8 7 6 5 4 3 2 1 0
-
-func.func @main(%arg0: tensor<?xi32>, %arg1: tensor<?xi32>, %arg2: tensor<?xi32>, %arg3: tensor<?xi32>) -> tensor<?xi32> {
- %1 = "mhlo.compare"(%arg0, %arg1) {comparison_direction = #mhlo<"comparison_direction LT">} : (tensor<?xi32>, tensor<?xi32>) -> tensor<?xi1>
- %2 = "mhlo.select"(%1, %arg2, %arg3) : (tensor<?xi1>, tensor<?xi32>, tensor<?xi32>) -> tensor<?xi32>
- return %2 : tensor<?xi32>
-}
diff --git a/tests/e2e/regression/dynamic_dot_general.mlir b/tests/e2e/regression/dynamic_dot_general.mlir
deleted file mode 100644
index 81f24a5..0000000
--- a/tests/e2e/regression/dynamic_dot_general.mlir
+++ /dev/null
@@ -1,48 +0,0 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --function-input="2x2xf32=[[1.0,0.0],[0.0,1.0]]" --function-input="2x3xf32=[[1.0,2.0,3.0],[4.0,5.0,6.0]]" --function-input="2x2x2xf32=[[[1.0,0.0],[0.0,1.0]],[[2.0,0.0],[0.0,2.0]]]" --function-input="2x2x3xf32=[[[1.5,2.5,3.5],[4.5,5.5,6.5]],[[1.0,2.0,3.0],[4.0,5.0,6.0]]]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx --function-input="2x2xf32=[[1.0,0.0],[0.0,1.0]]" --function-input="2x3xf32=[[1.0,2.0,3.0],[4.0,5.0,6.0]]" --function-input="2x2x2xf32=[[[1.0,0.0],[0.0,1.0]],[[2.0,0.0],[0.0,2.0]]]" --function-input="2x2x3xf32=[[[1.5,2.5,3.5],[4.5,5.5,6.5]],[[1.0,2.0,3.0],[4.0,5.0,6.0]]]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAn_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --function-input="2x2xf32=[[1.0,0.0],[0.0,1.0]]" --function-input="2x3xf32=[[1.0,2.0,3.0],[4.0,5.0,6.0]]" --function-input="2x2x2xf32=[[[1.0,0.0],[0.0,1.0]],[[2.0,0.0],[0.0,2.0]]]" --function-input="2x2x3xf32=[[[1.5,2.5,3.5],[4.5,5.5,6.5]],[[1.0,2.0,3.0],[4.0,5.0,6.0]]]" %s | FileCheck %s)
-
-// TODO(silvasean): Extent xla_ops directory test infra to support
-// testing dynamic shapes.
-
-// CHECK-LABEL: EXEC @basic_dot
-func.func @basic_dot(
- %lhs: tensor<?x?xf32>, %rhs: tensor<?x?xf32>,
- %unused0: tensor<?x?x?xf32>, %unused1: tensor<?x?x?xf32>) -> tensor<?x?xf32> {
- %0 = "mhlo.dot_general"(%lhs, %rhs) {dot_dimension_numbers={
- lhs_batching_dimensions = dense<[]> : tensor<0xi64>,
- lhs_contracting_dimensions = dense<1> : tensor<1xi64>,
- rhs_batching_dimensions = dense<[]> : tensor<0xi64>,
- rhs_contracting_dimensions = dense<0> : tensor<1xi64>
- }} : (tensor<?x?xf32>, tensor<?x?xf32>) -> tensor<?x?xf32>
- return %0 : tensor<?x?xf32>
-}
-
-// CHECK: 2x3xf32=[1 2 3][4 5 6]
-
-// CHECK-LABEL: EXEC @batch_dimension
-func.func @batch_dimension(
- %unused0: tensor<?x?xf32>, %unused1: tensor<?x?xf32>,
- %lhs: tensor<?x?x?xf32>, %rhs: tensor<?x?x?xf32>) -> tensor<?x?x?xf32> {
- %0 = "mhlo.dot_general"(%lhs, %rhs) {dot_dimension_numbers={
- lhs_batching_dimensions = dense<[0]> : tensor<1xi64>,
- lhs_contracting_dimensions = dense<[2]> : tensor<1xi64>,
- rhs_batching_dimensions = dense<[0]> : tensor<1xi64>,
- rhs_contracting_dimensions = dense<[1]> : tensor<1xi64>
- }} : (tensor<?x?x?xf32>, tensor<?x?x?xf32>) -> tensor<?x?x?xf32>
- return %0 : tensor<?x?x?xf32>
-}
-
-// CHECK: 2x2x3xf32=[
-// CHECK-SAME: [1.5 2.5 3.5][4.5 5.5 6.5]
-// CHECK-SAME: ][
-// CHECK-SAME: [2 4 6][8 10 12]
-// CHECK-SAME: ]
-
-
-// TODO(silvasean): Add more tests when we have better test infra.
-// This is currently too verbose / unreadable. We should test:
-// - multiple contracting dimensions
-// - multiple batch dimensions
-// - multiple free dimensions
-// - intermingled batch, free, and contracting dimensions
diff --git a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors.mlir b/tests/e2e/regression/dynamic_linalg_matmul_on_tensors.mlir
deleted file mode 100644
index 4ea388c..0000000
--- a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors.mlir
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-
-// CHECK: EXEC @main
-// CHECK: 2x4xf32=[1038 1044 1050 1056][1083 1098 1113 1128]
-func.func @main(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %C: tensor<?x?xf32>)
- -> tensor<?x?xf32> attributes {iree.module.export}
-{
- %D = linalg.matmul ins(%A, %B: tensor<?x?xf32>, tensor<?x?xf32>)
- outs(%C: tensor<?x?xf32>) -> tensor<?x?xf32>
- return %D: tensor<?x?xf32>
-}
diff --git a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_0.mlir b/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_0.mlir
deleted file mode 100644
index 1709f55..0000000
--- a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_0.mlir
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --iree-flow-dispatch-linalg-on-tensors-enable-fusion --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx --iree-flow-dispatch-linalg-on-tensors-enable-fusion --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --iree-flow-dispatch-linalg-on-tensors-enable-fusion --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-
-// CHECK: EXEC @main
-// CHECK: 2x4xf32=[985 982 979 976][985 982 979 976]
-func.func @main(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %C: tensor<?x?xf32>)
- -> tensor<?x?xf32> attributes {iree.module.export}
-{
- %AA = linalg.generic {
- indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>],
- iterator_types = ["parallel", "parallel"] }
- outs(%A : tensor<?x?xf32>) {
- ^bb0(%b: f32):
- // TODO(nicolasvasilache): The constant ends up being hoisted and turns
- // into a pushconstant. But pushconstants must be integers, so we use
- // sitofp to temporarily circumvent the problem.
- %im1 = arith.constant -1 : i32
- %fm1 = arith.sitofp %im1: i32 to f32
- linalg.yield %fm1 : f32
- } -> tensor<?x?xf32>
- %D = linalg.matmul ins(%AA, %B: tensor<?x?xf32>, tensor<?x?xf32>)
- outs(%C: tensor<?x?xf32>) -> tensor<?x?xf32>
- return %D: tensor<?x?xf32>
-}
diff --git a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_1.mlir b/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_1.mlir
deleted file mode 100644
index ab41260..0000000
--- a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_1.mlir
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --iree-flow-dispatch-linalg-on-tensors-enable-fusion=true --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx --iree-flow-dispatch-linalg-on-tensors-enable-fusion=true --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --iree-flow-dispatch-linalg-on-tensors-enable-fusion=true --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-
-// CHECK: EXEC @main
-// CHECK: 2x4xf32=[994 994 994 994][985 985 985 985]
-func.func @main(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %C: tensor<?x?xf32>)
- -> tensor<?x?xf32> attributes {iree.module.export}
-{
- %BB = linalg.generic {
- indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>],
- iterator_types = ["parallel", "parallel"] }
- outs(%B : tensor<?x?xf32>) {
- ^bb0(%b: f32):
- // TODO(nicolasvasilache): The constant ends up being hoisted and turns
- // into a pushconstant. But pushconstants must be integers, so we use
- // sitofp to temporarily circumvent the problem.
- %im1 = arith.constant -1 : i32
- %fm1 = arith.sitofp %im1: i32 to f32
- linalg.yield %fm1 : f32
- } -> tensor<?x?xf32>
- %D = linalg.matmul ins(%A, %BB: tensor<?x?xf32>, tensor<?x?xf32>)
- outs(%C: tensor<?x?xf32>) -> tensor<?x?xf32>
- return %D: tensor<?x?xf32>
-}
diff --git a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_2.mlir b/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_2.mlir
deleted file mode 100644
index 1b08e27..0000000
--- a/tests/e2e/regression/dynamic_linalg_matmul_on_tensors_fuse_2.mlir
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --iree-flow-dispatch-linalg-on-tensors-enable-fusion=true --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx --iree-flow-dispatch-linalg-on-tensors-enable-fusion=true --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --iree-flow-dispatch-linalg-on-tensors-enable-fusion=true --iree-flow-dispatch-linalg-on-tensors-tile-sizes="1,1" --function-input="2x3xf32=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]" --function-input="3x4xf32=[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]" --function-input="2x4xf32=[[1000.0, 1000.0, 1000.0, 1000.0], [1000.0, 1000.0, 1000.0, 1000.0]]" %s | FileCheck %s)
-
-// CHECK: EXEC @main
-// CHECK: 2x4xf32=[37 43 49 55][82 97 112 127]
-func.func @main(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %C: tensor<?x?xf32>)
- -> tensor<?x?xf32> attributes {iree.module.export}
-{
- %CC = linalg.generic {
- indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>],
- iterator_types = ["parallel", "parallel"] }
- outs(%C : tensor<?x?xf32>) {
- ^bb0(%c: f32):
- // TODO(nicolasvasilache): The constant ends up being hoisted and turns
- // into a pushconstant. But pushconstants must be integers, so we use
- // sitofp to temporarily circumvent the problem.
- %im1 = arith.constant -1 : i32
- %fm1 = arith.sitofp %im1: i32 to f32
- linalg.yield %fm1 : f32
- } -> tensor<?x?xf32>
- %D = linalg.matmul ins(%A, %B: tensor<?x?xf32>, tensor<?x?xf32>)
- outs(%CC: tensor<?x?xf32>) -> tensor<?x?xf32>
- return %D: tensor<?x?xf32>
-}
diff --git a/tests/e2e/regression/fill_i64.mlir b/tests/e2e/regression/fill_i64.mlir
index 6ca16f1..65bf3d9 100644
--- a/tests/e2e/regression/fill_i64.mlir
+++ b/tests/e2e/regression/fill_i64.mlir
@@ -1,5 +1,5 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --function-input="2x3xi64" %s | FileCheck %s
-// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx --function-input="2x3xi64" %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu %s --function_input=2x3xi64 | FileCheck %s
+// RUN: [[ $IREE_VMVX_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vmvx %s --function_input=2x3xi64 | FileCheck %s)
// CHECK: EXEC @fill_i64
func.func @fill_i64(%arg0: tensor<?x?xi64>) -> (tensor<?x?xi64>, tensor<?x?xi64>) {
diff --git a/tests/e2e/regression/unused_args.mlir b/tests/e2e/regression/unused_args.mlir
index 32ef616..b52c07d 100644
--- a/tests/e2e/regression/unused_args.mlir
+++ b/tests/e2e/regression/unused_args.mlir
@@ -1,6 +1,6 @@
-// RUN: iree-run-mlir --iree-hal-target-backends=vmvx --function-input=4xf32=0,0,0,0 --function-input=4xf32=1,1,1,1 %s | FileCheck %s
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --function-input=4xf32=0,0,0,0 --function-input=4xf32=1,1,1,1 %s | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --function-input=4xf32=0,0,0,0 --function-input=4xf32=1,1,1,1 %s | FileCheck %s)
+// RUN: iree-run-mlir --iree-hal-target-backends=vmvx %s --function_input=4xf32=0 --function_input=4xf32=1 | FileCheck %s
+// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu %s --function_input=4xf32=0 --function_input=4xf32=1 | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv %s --function_input=4xf32=0 --function_input=4xf32=1 | FileCheck %s)
// CHECK-LABEL: EXEC @arg0_unused
func.func @arg0_unused(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32> {
diff --git a/tools/iree-benchmark-module-main.cc b/tools/iree-benchmark-module-main.cc
index 2511590..f0a1275 100644
--- a/tools/iree-benchmark-module-main.cc
+++ b/tools/iree-benchmark-module-main.cc
@@ -91,6 +91,7 @@
IREE_FLAG(bool, print_statistics, false,
"Prints runtime statistics to stderr on exit.");
+// TODO(benvanik): move --function_input= flag into a util.
static iree_status_t parse_function_input(iree_string_view_t flag_name,
void* storage,
iree_string_view_t value) {
diff --git a/tools/iree-run-mlir-main.cc b/tools/iree-run-mlir-main.cc
index b057be5..608faa4 100644
--- a/tools/iree-run-mlir-main.cc
+++ b/tools/iree-run-mlir-main.cc
@@ -126,12 +126,6 @@
llvm::cl::init(""),
};
-static llvm::cl::list<std::string> function_inputs_flag{
- "function-input",
- llvm::cl::desc("Input shapes and optional values"),
- llvm::cl::ZeroOrMore,
-};
-
static llvm::cl::opt<bool> run_flag{
"run",
llvm::cl::desc("Runs the module (vs. just compiling and verifying)"),
@@ -144,6 +138,42 @@
llvm::cl::ConsumeAfter,
};
+// TODO(benvanik): move --function_input= flag into a util.
+static iree_status_t parse_function_input(iree_string_view_t flag_name,
+ void* storage,
+ iree_string_view_t value) {
+ auto* list = (std::vector<std::string>*)storage;
+ list->push_back(std::string(value.data, value.size));
+ return iree_ok_status();
+}
+static void print_function_input(iree_string_view_t flag_name, void* storage,
+ FILE* file) {
+ auto* list = (std::vector<std::string>*)storage;
+ if (list->empty()) {
+ fprintf(file, "# --%.*s=\n", (int)flag_name.size, flag_name.data);
+ } else {
+ for (size_t i = 0; i < list->size(); ++i) {
+ fprintf(file, "--%.*s=\"%s\"\n", (int)flag_name.size, flag_name.data,
+ list->at(i).c_str());
+ }
+ }
+}
+static std::vector<std::string> FLAG_function_inputs;
+IREE_FLAG_CALLBACK(
+ parse_function_input, print_function_input, &FLAG_function_inputs,
+ function_input,
+ "An input value or buffer of the format:\n"
+ " [shape]xtype=[value]\n"
+ " 2x2xi32=1 2 3 4\n"
+ "Optionally, brackets may be used to separate the element values:\n"
+ " 2x2xi32=[[1 2][3 4]]\n"
+ "Raw binary files can be read to provide buffer contents:\n"
+ " 2x2xi32=@some/file.bin\n"
+ "numpy npy files (from numpy.save) can be read to provide 1+ values:\n"
+ " @some.npy\n"
+ "Each occurrence of the flag indicates an input in the order they were\n"
+ "specified on the command line.");
+
namespace iree {
namespace {
@@ -295,12 +325,11 @@
// Parse input values from the flags.
vm::ref<iree_vm_list_t> inputs;
- auto function_inputs_list = iree::span<std::string>(
- function_inputs_flag.empty() ? nullptr : &function_inputs_flag.front(),
- function_inputs_flag.size());
- IREE_RETURN_IF_ERROR(ParseToVariantList(device_allocator,
- function_inputs_list,
- iree_allocator_system(), &inputs));
+ IREE_RETURN_IF_ERROR(ParseToVariantList(
+ device_allocator,
+ iree::span<const std::string>{FLAG_function_inputs.data(),
+ FLAG_function_inputs.size()},
+ iree_allocator_system(), &inputs));
// Prepare outputs list to accept the results from the invocation.
vm::ref<iree_vm_list_t> outputs;
diff --git a/tools/iree-run-module-main.cc b/tools/iree-run-module-main.cc
index a7b0c5e..74ae4a2 100644
--- a/tools/iree-run-module-main.cc
+++ b/tools/iree-run-module-main.cc
@@ -33,6 +33,7 @@
IREE_FLAG(bool, print_statistics, false,
"Prints runtime statistics to stderr on exit.");
+// TODO(benvanik): move --function_input= flag into a util.
static iree_status_t parse_function_input(iree_string_view_t flag_name,
void* storage,
iree_string_view_t value) {
diff --git a/tools/test/iree-run-mlir.mlir b/tools/test/iree-run-mlir.mlir
index 0411ad1..a82ab74 100644
--- a/tools/test/iree-run-mlir.mlir
+++ b/tools/test/iree-run-mlir.mlir
@@ -1,6 +1,6 @@
-// RUN: (iree-run-mlir --iree-hal-target-backends=vmvx --function-input="f32=-2" %s) | FileCheck %s
-// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv --function-input="f32=-2" %s | FileCheck %s)
-// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu --function-input="f32=-2" %s | FileCheck %s
+// RUN: (iree-run-mlir --iree-hal-target-backends=vmvx %s --function_input=f32=-2) | FileCheck %s
+// RUN: [[ $IREE_VULKAN_DISABLE == 1 ]] || (iree-run-mlir --iree-hal-target-backends=vulkan-spirv %s --function_input=f32=-2 | FileCheck %s)
+// RUN: iree-run-mlir --iree-hal-target-backends=llvm-cpu %s --function_input=f32=-2 | FileCheck %s
// CHECK-LABEL: EXEC @abs
func.func @abs(%input : tensor<f32>) -> (tensor<f32>) {
diff --git a/tools/test/multiple_args.mlir b/tools/test/multiple_args.mlir
index 29a9b82..1c31e8e 100644
--- a/tools/test/multiple_args.mlir
+++ b/tools/test/multiple_args.mlir
@@ -1,5 +1,5 @@
// RUN: iree-compile --iree-hal-target-backends=vmvx %s | iree-run-module --entry_function=multi_input --function_input="2xi32=[1 2]" --function_input="2xi32=[3 4]" | FileCheck %s
-// RUN: iree-run-mlir --iree-hal-target-backends=vmvx --function-input='2xi32=[1 2]' --function-input='2xi32=[3 4]' %s | FileCheck %s
+// RUN: iree-run-mlir --iree-hal-target-backends=vmvx %s --function_input="2xi32=[1 2]" --function_input="2xi32=[3 4]" | FileCheck %s
// RUN: iree-compile --iree-hal-target-backends=vmvx %s | iree-benchmark-module --device=local-task --entry_function=multi_input --function_input="2xi32=[1 2]" --function_input="2xi32=[3 4]" | FileCheck --check-prefix=BENCHMARK %s
// BENCHMARK-LABEL: BM_multi_input
diff --git a/tools/test/scalars.mlir b/tools/test/scalars.mlir
index 616ad66..9d4ab63 100644
--- a/tools/test/scalars.mlir
+++ b/tools/test/scalars.mlir
@@ -1,6 +1,6 @@
// RUN: (iree-compile --iree-hal-target-backends=vmvx %s | iree-run-module --entry_function=scalar --function_input=42) | FileCheck %s
// RUN: iree-compile --iree-hal-target-backends=vmvx %s | iree-benchmark-module --device=local-task --entry_function=scalar --function_input=42 | FileCheck --check-prefix=BENCHMARK %s
-// RUN: (iree-run-mlir --iree-hal-target-backends=vmvx --function-input=42 %s) | FileCheck %s
+// RUN: (iree-run-mlir --iree-hal-target-backends=vmvx %s --function_input=42) | FileCheck %s
// BENCHMARK-LABEL: BM_scalar
// CHECK-LABEL: EXEC @scalar