blob: 4820c8eb289c23c50dd5b4a5a0b2f9429ae5f86e [file] [log] [blame]
// Tests iree-run-trace usage by running two calls of @mul and passing the
// result between them. The outputs of both calls are produced as outputs from
// the trace and both are written to a .npy file for processing. Inputs can
// also come from an .npy file. See iree-run-module usage for more information
// on the `--input=` and `--output=` flags.
// RUN: (iree-compile --iree-hal-target-backends=vmvx %s | \
// RUN: iree-run-trace %S/iree-run-trace.yml \
// RUN: --device=local-sync \
// RUN: --input=4xf32=4,4,4,4 \
// RUN: --output=@%t \
// RUN: --output=+%t) && \
// RUN: python3 %S/echo_npy.py %t | \
// RUN: FileCheck %s --check-prefix=RUN-TRACE
// RUN-TRACE{LITERAL}: [ 0. 4. 8. 12.]
// RUN-TRACE-NEXT{LITERAL}: [ 0. 12. 24. 36.]
// Tests iree-run-benchmark usage by running the same sequence as above but with
// benchmarking enabled. The tools are mostly interchangable except benchmarking
// doesn't yield any output values or feature I/O printing. All traces that can
// run with iree-run-trace *should* run with iree-benchmark-trace.
// RUN: (iree-compile --iree-hal-target-backends=vmvx %s | \
// RUN: iree-benchmark-trace %S/iree-run-trace.yml \
// RUN: --capture_stdin=true \
// RUN: --device=local-sync \
// RUN: --input=4xf32=4,4,4,4) | \
// RUN: FileCheck %s --check-prefix=BENCHMARK-TRACE
// BENCHMARK-TRACE{LITERAL}: BM_iree-run-trace/process_time/real_time
func.func @mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32> {
%0 = arith.mulf %arg0, %arg1 : tensor<4xf32>
return %0 : tensor<4xf32>
}