blob: b36e623d5a3e614526f1eb069d3c46a246bc7244 [file] [log] [blame]
// RUN: (iree-compile \
// RUN: --iree-hal-target-device=local \
// RUN: --iree-hal-local-target-device-backends=vmvx %s | \
// RUN: iree-run-module --device=local-sync --module=- --function=echo \
// RUN: --parameters=%p/parameters_dynamic.safetensors \
// RUN: --expected_output=4xi64=24,28,32,36) | \
// RUN: FileCheck %s
// CHECK: [SUCCESS]
// Dynamic parameter loading using util.string.format to construct keys inside
// a loop. Iterates param0..param3, loading each and accumulating a running sum.
// All inputs are constants so the entire loop should be hoisted into an
// initializer by HoistIntoGlobals.
func.func @echo() -> tensor<4xi64> {
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%c4 = arith.constant 4 : index
%c0_i64 = arith.constant 0 : i64
%init = arith.constant dense<0> : tensor<4xi64>
%result = scf.for %i = %c0 to %c4 step %c1 iter_args(%acc = %init) -> tensor<4xi64> {
%key = util.string.format "param{}"(%i) : (index) -> !util.buffer
%param = flow.parameter.load %key[%c0_i64] : tensor<4xi64>
%sum = arith.addi %acc, %param : tensor<4xi64>
scf.yield %sum : tensor<4xi64>
}
return %result : tensor<4xi64>
}