SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
}

%a = func(%a_1:array<mat2x4<f32>, 4>):f32 {  # %a_1: 'a'
  $B2: {
    %5:f32 = access %a_1, 0i, 0i, 0u
    ret %5
  }
}
%b = func(%m:mat2x4<f32>):f32 {
  $B3: {
    %8:f32 = access %m, 0i, 0u
    ret %8
  }
}
%c = func(%v:vec4<f32>):f32 {
  $B4: {
    %11:f32 = access %v, 0u
    ret %11
  }
}
%d = func(%f:f32):f32 {
  $B5: {
    ret %f
  }
}
%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
  $B6: {
    %15:array<mat2x4<f32>, 4> = load %u
    %16:f32 = call %a, %15
    %17:f32 = let %16
    %18:ptr<uniform, mat2x4<f32>, read> = access %u, 1i
    %19:mat2x4<f32> = load %18
    %20:f32 = call %b, %19
    %21:f32 = add %17, %20
    %22:f32 = let %21
    %23:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
    %24:vec4<f32> = load %23
    %25:vec4<f32> = swizzle %24, ywxz
    %26:f32 = call %c, %25
    %27:f32 = add %22, %26
    %28:f32 = let %27
    %29:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
    %30:vec4<f32> = load %29
    %31:vec4<f32> = swizzle %30, ywxz
    %32:f32 = access %31, 0u
    %33:f32 = call %d, %32
    %34:f32 = add %28, %33
    store %s, %34
    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.  *
********************************************************************
