SKIP: FAILED

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

%transpose_b9ad1f = func():void {
  $B2: {
    %res:ptr<function, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(1.0h))
    %4:mat2x3<f16> = load %res
    %5:void = call %tint_store_and_preserve_padding, %prevent_dce, %4
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %8:void = call %transpose_b9ad1f
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %10:void = call %transpose_b9ad1f
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %12:void = call %transpose_b9ad1f
    ret
  }
}
%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
  $B6: {
    %15:ptr<storage, vec3<f16>, read_write> = access %target, 0u
    %16:vec3<f16> = access %value_param, 0u
    store %15, %16
    %17:ptr<storage, vec3<f16>, read_write> = access %target, 1u
    %18:vec3<f16> = access %value_param, 1u
    store %17, %18
    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.  *
********************************************************************
