blob: 198ed0eb94f2e18f554afd2f71db1176b5d0c982 [file]
// Tests printing and parsing of variable ops.
// RUN: iree-opt -allow-unregistered-dialect -split-input-file %s | iree-opt -allow-unregistered-dialect -split-input-file | IreeFileCheck %s
// CHECK: hal.variable @v_immutable : tensor<i32>
hal.variable @v_immutable : tensor<i32>
// CHECK: hal.variable @v_mutable mutable : tensor<i32>
hal.variable @v_mutable mutable : tensor<i32>
// -----
// CHECK: hal.variable @v_initialized_const0 = 4 : i32
hal.variable @v_initialized_const0 = 4 : i32
// CHECK: hal.variable @v_initialized_const1 = 40 : i32
hal.variable @v_initialized_const1 = 40 : i32
// CHECK: hal.variable @v_initialized_const2 = 40 : i64
hal.variable @v_initialized_const2 = 40 : i64
// -----
// CHECK: hal.variable @v_initialized init(@initializer) : !hal.buffer
hal.variable @v_initialized init(@initializer) : !hal.buffer
func private @initializer() -> !hal.buffer
// -----
hal.variable @v_loaded : !hal.buffer
// CHECK-LABEL: @loaded
func @loaded() {
// CHECK-NEXT: = hal.variable.load @v_loaded : !hal.buffer
%0 = hal.variable.load @v_loaded : !hal.buffer
return
}
// -----
hal.variable @v_stored mutable : !hal.buffer
// CHECK-LABEL: @stored
func @stored() {
// CHECK-NEXT: %[[BUF:.+]] = "test_hal.buffer"
%0 = "test_hal.buffer"() : () -> !hal.buffer
// CHECK-NEXT: hal.variable.store %[[BUF]], @v_stored : !hal.buffer
hal.variable.store %0, @v_stored : !hal.buffer
return
}
// -----
hal.variable @v_loaded : !hal.buffer
// CHECK-LABEL: @loaded_indirect
func @loaded_indirect() {
// CHECK-NEXT: %[[ADDR:.+]] = hal.variable.address @v_loaded
%0 = hal.variable.address @v_loaded : !util.ptr<!hal.buffer>
// CHECK-NEXT: = hal.variable.load.indirect %[[ADDR]]
%1 = hal.variable.load.indirect %0 : !util.ptr<!hal.buffer> -> !hal.buffer
return
}
// -----
hal.variable @v_stored mutable : !hal.buffer
// CHECK-LABEL: @stored_indirect
func @stored_indirect() {
// CHECK-NEXT: %[[BUF:.+]] = "test_hal.buffer"
%0 = "test_hal.buffer"() : () -> !hal.buffer
// CHECK-NEXT: %[[ADDR:.+]] = hal.variable.address @v_stored
%1 = hal.variable.address @v_stored : !util.ptr<!hal.buffer>
// CHECK-NEXT: hal.variable.store.indirect %[[BUF]], %[[ADDR]]
hal.variable.store.indirect %0, %1 : !hal.buffer -> !util.ptr<!hal.buffer>
return
}