SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
  before:i32 @offset(0)
  m:mat3x4<f16> @offset(8)
  after:i32 @offset(64)
}

$B1: {  # root
  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
  %w:ptr<workgroup, array<S, 4>, read_write> = var
}

%f = @compute @workgroup_size(1, 1, 1) func(%tint_local_index:u32 [@local_invocation_index]):void {
  $B2: {
    loop [i: $B3, b: $B4, c: $B5] {  # loop_1
      $B3: {  # initializer
        next_iteration %tint_local_index  # -> $B4
      }
      $B4 (%idx:u32): {  # body
        %6:bool = gte %idx, 4u
        if %6 [t: $B6] {  # if_1
          $B6: {  # true
            exit_loop  # loop_1
          }
        }
        %7:ptr<workgroup, S, read_write> = access %w, %idx
        store %7, S(0i, mat3x4<f16>(vec4<f16>(0.0h)), 0i)
        continue  # -> $B5
      }
      $B5: {  # continuing
        %8:u32 = add %idx, 1u
        next_iteration %8  # -> $B4
      }
    }
    %9:void = msl.threadgroup_barrier 4u
    %10:array<S, 4> = load %u
    store %w, %10
    %11:ptr<workgroup, S, read_write> = access %w, 1i
    %12:ptr<uniform, S, read> = access %u, 2i
    %13:S = load %12
    store %11, %13
    %14:ptr<workgroup, mat3x4<f16>, read_write> = access %w, 3i, 1u
    %15:ptr<uniform, mat3x4<f16>, read> = access %u, 2i, 1u
    %16:mat3x4<f16> = load %15
    store %14, %16
    %17:ptr<workgroup, vec4<f16>, read_write> = access %w, 1i, 1u, 0i
    %18:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1u, 1i
    %19:vec4<f16> = load %18
    %20:vec4<f16> = swizzle %19, ywxz
    store %17, %20
    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.  *
********************************************************************
