blob: 40bd4f0bc4719090952621723157f6d700e84044 [file]
// Mutable globals require an initializer that allocates their backing buffer
// with hal_inline ops; compiling through the VM lowering requires inlining
// that initializer into the combined initializer.
// RUN: iree-compile \
// RUN: --compile-to=vm \
// RUN: --iree-execution-model=inline-dynamic \
// RUN: --iree-hal-target-device=local \
// RUN: --iree-hal-local-target-device-backends=vmvx %s | \
// RUN: FileCheck %s --check-prefix=CHECK-DYNAMIC
// CHECK-DYNAMIC-LABEL: vm.func private @__init()
// CHECK-DYNAMIC-DAG: vm.call @hal_inline.buffer.allocate
// CHECK-DYNAMIC-DAG: vm.global.store.ref %{{.+}}, @state
// CHECK-DYNAMIC-DAG: vm.call @hal_loader.executable.load
// CHECK-DYNAMIC: vm.global.store.ref %{{.+}}, @update_dispatch_0
// RUN: iree-compile \
// RUN: --compile-to=vm \
// RUN: --iree-execution-model=inline-static \
// RUN: --iree-hal-target-device=local \
// RUN: --iree-hal-local-target-device-backends=vmvx-inline %s | \
// RUN: FileCheck %s --check-prefix=CHECK-STATIC
// CHECK-STATIC-LABEL: vm.func private @__init()
// CHECK-STATIC: vm.call @hal_inline.buffer.allocate
// CHECK-STATIC: vm.global.store.ref %{{.+}}, @state
util.global private mutable @state = dense<1.0> : tensor<4xf32>
func.func @update(%arg0: tensor<4xf32>) -> tensor<4xf32> {
%state = util.global.load @state : tensor<4xf32>
%sum = arith.addf %state, %arg0 : tensor<4xf32>
util.global.store %sum, @state : tensor<4xf32>
return %sum : tensor<4xf32>
}