SKIP: FAILED

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

%f = @compute @workgroup_size(1, 1, 1) func(%tint_local_index:u32 [@local_invocation_index]):void {
  $B2: {
    %5:bool = eq %tint_local_index, 0u
    if %5 [t: $B3] {  # if_1
      $B3: {  # true
        store %w, mat3x2<f16>(vec2<f16>(0.0h))
        exit_if  # if_1
      }
    }
    %6:void = msl.threadgroup_barrier 4u
    %7:mat3x2<f16> = load %u
    store %w, %7
    %8:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
    %9:ptr<uniform, vec2<f16>, read> = access %u, 0i
    %10:vec2<f16> = load %9
    store %8, %10
    %11:ptr<workgroup, vec2<f16>, read_write> = access %w, 1i
    %12:ptr<uniform, vec2<f16>, read> = access %u, 0i
    %13:vec2<f16> = load %12
    %14:vec2<f16> = swizzle %13, yx
    store %11, %14
    %15:ptr<workgroup, vec2<f16>, read_write> = access %w, 0i
    %16:ptr<uniform, vec2<f16>, read> = access %u, 1i
    %17:f16 = load_vector_element %16, 0i
    store_vector_element %15, 1i, %17
    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.  *
********************************************************************
