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)
  %s:ptr<storage, array<S, 4>, read_write> = var @binding_point(0, 1)
}

%f = @compute @workgroup_size(1, 1, 1) func():void {
  $B2: {
    %4:array<S, 4> = load %u
    %5:void = call %tint_store_and_preserve_padding, %s, %4
    %7:ptr<storage, S, read_write> = access %s, 1i
    %8:ptr<uniform, S, read> = access %u, 2i
    %9:S = load %8
    %10:void = call %tint_store_and_preserve_padding_1, %7, %9
    %12:ptr<storage, mat3x3<f16>, read_write> = access %s, 3i, 1u
    %13:ptr<uniform, mat3x3<f16>, read> = access %u, 2i, 1u
    %14:mat3x3<f16> = load %13
    %15:void = call %tint_store_and_preserve_padding_2, %12, %14
    %17:ptr<storage, vec3<f16>, read_write> = access %s, 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
  }
}
%tint_store_and_preserve_padding = func(%target:ptr<storage, array<S, 4>, read_write>, %value_param:array<S, 4>):void {
  $B3: {
    loop [i: $B4, b: $B5, c: $B6] {  # loop_1
      $B4: {  # initializer
        next_iteration 0u  # -> $B5
      }
      $B5 (%idx:u32): {  # body
        %24:bool = gte %idx, 4u
        if %24 [t: $B7] {  # if_1
          $B7: {  # true
            exit_loop  # loop_1
          }
        }
        %25:ptr<storage, S, read_write> = access %target, %idx
        %26:S = access %value_param, %idx
        %27:void = call %tint_store_and_preserve_padding_1, %25, %26
        continue  # -> $B6
      }
      $B6: {  # continuing
        %28:u32 = add %idx, 1u
        next_iteration %28  # -> $B5
      }
    }
    ret
  }
}
%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, S, read_write>, %value_param_1:S):void {  # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
  $B8: {
    %31:ptr<storage, i32, read_write> = access %target_1, 0u
    %32:i32 = access %value_param_1, 0u
    store %31, %32
    %33:ptr<storage, mat3x3<f16>, read_write> = access %target_1, 1u
    %34:mat3x3<f16> = access %value_param_1, 1u
    %35:void = call %tint_store_and_preserve_padding_2, %33, %34
    %36:ptr<storage, i32, read_write> = access %target_1, 2u
    %37:i32 = access %value_param_1, 2u
    store %36, %37
    ret
  }
}
%tint_store_and_preserve_padding_2 = func(%target_2:ptr<storage, mat3x3<f16>, read_write>, %value_param_2:mat3x3<f16>):void {  # %tint_store_and_preserve_padding_2: 'tint_store_and_preserve_padding', %target_2: 'target', %value_param_2: 'value_param'
  $B9: {
    %40:ptr<storage, vec3<f16>, read_write> = access %target_2, 0u
    %41:vec3<f16> = access %value_param_2, 0u
    store %40, %41
    %42:ptr<storage, vec3<f16>, read_write> = access %target_2, 1u
    %43:vec3<f16> = access %value_param_2, 1u
    store %42, %43
    %44:ptr<storage, vec3<f16>, read_write> = access %target_2, 2u
    %45:vec3<f16> = access %value_param_2, 2u
    store %44, %45
    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.  *
********************************************************************
