SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
  before:i32 @offset(0)
  m:mat3x3<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, mat3x3<f16>(vec3<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, mat3x3<f16>, read_write> = access %w, 3i, 1u
    %15:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
    %16:mat3x3<f16> = load %15
    store %14, %16
    %17:ptr<workgroup, vec3<f16>, read_write> = access %w, 1i, 1u, 0i
    %18:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1u, 1i
    %19:vec3<f16> = load %18
    %20:vec3<f16> = swizzle %19, zxy
    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.  *
********************************************************************
