// RUN: mlir-vulkan-runner %s --shared-libs=%vulkan_wrapper_library_dir/libvulkan-runtime-wrappers%shlibext,%linalg_test_lib_dir/libmlir_runner_utils%shlibext --entry-point-result=void | FileCheck %s

// CHECK-COUNT-32: [2.2, 2.2, 2.2, 2.2]
module attributes {
  gpu.container_module,
  spv.target_env = #spv.target_env<
    #spv.vce<v1.0, [Shader], [SPV_KHR_storage_buffer_storage_class]>,
    {max_compute_workgroup_invocations = 128 : i32,
     max_compute_workgroup_size = dense<[128, 128, 64]> : vector<3xi32>}>
} {
  gpu.module @kernels {
    gpu.func @kernel_sub(%arg0 : memref<8x4x4xf32>, %arg1 : memref<4x4xf32>, %arg2 : memref<8x4x4xf32>)
      attributes {gpu.kernel, spv.entry_point_abi = {local_size = dense<[1, 1, 1]>: vector<3xi32>}} {
      %x = "gpu.block_id"() {dimension = "x"} : () -> index
      %y = "gpu.block_id"() {dimension = "y"} : () -> index
      %z = "gpu.block_id"() {dimension = "z"} : () -> index
      %1 = load %arg0[%x, %y, %z] : memref<8x4x4xf32>
      %2 = load %arg1[%y, %z] : memref<4x4xf32>
      %3 = subf %1, %2 : f32
      store %3, %arg2[%x, %y, %z] : memref<8x4x4xf32>
      gpu.return
    }
  }

  func @main() {
    %arg0 = alloc() : memref<8x4x4xf32>
    %arg1 = alloc() : memref<4x4xf32>
    %arg2 = alloc() : memref<8x4x4xf32>
    %0 = constant 0 : i32
    %1 = constant 1 : i32
    %2 = constant 2 : i32
    %value0 = constant 0.0 : f32
    %value1 = constant 3.3 : f32
    %value2 = constant 1.1 : f32
    %arg3 = memref_cast %arg0 : memref<8x4x4xf32> to memref<?x?x?xf32>
    %arg4 = memref_cast %arg1 : memref<4x4xf32> to memref<?x?xf32>
    %arg5 = memref_cast %arg2 : memref<8x4x4xf32> to memref<?x?x?xf32>
    call @fillResource3DFloat(%arg3, %value1) : (memref<?x?x?xf32>, f32) -> ()
    call @fillResource2DFloat(%arg4, %value2) : (memref<?x?xf32>, f32) -> ()
    call @fillResource3DFloat(%arg5, %value0) : (memref<?x?x?xf32>, f32) -> ()

    %cst1 = constant 1 : index
    %cst4 = constant 4 : index
    %cst8 = constant 8 : index
    "gpu.launch_func"(%cst8, %cst4, %cst4, %cst1, %cst1, %cst1, %arg0, %arg1, %arg2) { kernel = "kernel_sub", kernel_module = @kernels }
        : (index, index, index, index, index, index, memref<8x4x4xf32>, memref<4x4xf32>, memref<8x4x4xf32>) -> ()
    %arg6 = memref_cast %arg5 : memref<?x?x?xf32> to memref<*xf32>
    call @print_memref_f32(%arg6) : (memref<*xf32>) -> ()
    return
  }
  func @fillResource2DFloat(%0 : memref<?x?xf32>, %1 : f32)
  func @fillResource3DFloat(%0 : memref<?x?x?xf32>, %1 : f32)
  func @print_memref_f32(%ptr : memref<*xf32>)
}
