SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
  %s:ptr<storage, array<mat4x4<f16>, 4>, read_write> = var @binding_point(0, 1)
}

%f = @compute @workgroup_size(1, 1, 1) func():void {
  $B2: {
    %4:array<mat4x4<f16>, 4> = load %u
    store %s, %4
    %5:ptr<storage, mat4x4<f16>, read_write> = access %s, 1i
    %6:ptr<uniform, mat4x4<f16>, read> = access %u, 2i
    %7:mat4x4<f16> = load %6
    store %5, %7
    %8:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 0i
    %9:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
    %10:vec4<f16> = load %9
    %11:vec4<f16> = swizzle %10, ywxz
    store %8, %11
    %12:ptr<storage, vec4<f16>, read_write> = access %s, 1i, 0i
    %13:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
    %14:f16 = load_vector_element %13, 0u
    store_vector_element %12, 0u, %14
    ret
  }
}

unhandled variable address space
********************************************************************
*  The tint shader compiler has encountered an unexpected error.   *
*                                                                  *
*  Please help us fix this issue by submitting a bug report at     *
*  crbug.com/tint with the source program that triggered the bug.  *
********************************************************************
