SKIP: FAILED

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