SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %prevent_dce:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(2, 0)
}

%transpose_06794e = func():void {
  $B2: {
    %arg_0:ptr<function, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(1.0h))
    %4:mat3x3<f16> = load %arg_0
    %5:mat3x3<f16> = transpose %4
    %res:ptr<function, mat3x3<f16>, read_write> = var, %5
    %7:mat3x3<f16> = load %res
    %8:void = call %tint_store_and_preserve_padding, %prevent_dce, %7
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %11:void = call %transpose_06794e
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %13:void = call %transpose_06794e
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %15:void = call %transpose_06794e
    ret
  }
}
%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
  $B6: {
    %18:ptr<storage, vec3<f16>, read_write> = access %target, 0u
    %19:vec3<f16> = access %value_param, 0u
    store %18, %19
    %20:ptr<storage, vec3<f16>, read_write> = access %target, 1u
    %21:vec3<f16> = access %value_param, 1u
    store %20, %21
    %22:ptr<storage, vec3<f16>, read_write> = access %target, 2u
    %23:vec3<f16> = access %value_param, 2u
    store %22, %23
    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.  *
********************************************************************
