SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: strided_arr = struct @align(4) {
  el:f32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 2> @offset(0)
}

strided_arr_1 = struct @align(4) {
  el:i32 @offset(0)
}

buf1 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr_1, 2> @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

$B1: {  # root
  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_8:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %v1:ptr<function, vec2<f32>, read_write> = var
    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %7:f32 = load %6
    %x_35:f32 = let %7
    %9:vec2<f32> = construct %x_35
    store %v1, %9
    %10:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %11:i32 = load %10
    %x_38:i32 = let %11
    %13:f32 = load_vector_element %v1, 1u
    %14:f32 = ldexp %13, -256i
    store_vector_element %v1, %x_38, %14
    %15:vec2<f32> = load %v1
    %16:vec2<f32> = let %15
    %17:vec2<f32> = construct %x_35, 0.0f
    %18:vec2<f32> = let %17
    %19:vec2<f32> = construct 0.0f, %x_35
    %20:mat2x2<f32> = construct %18, %19
    %21:vec2<f32> = mul %16, %20
    %22:f32 = access %21, 0u
    %23:bool = eq %22, %x_35
    if %23 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %24:f32 = convert %x_38
        %x_53:f32 = let %24
        %26:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %27:i32 = load %26
        %28:f32 = convert %27
        %x_56:f32 = let %28
        %30:vec4<f32> = construct %x_53, %x_56, %x_56, %x_53
        store %x_GLF_color, %30
        exit_if  # if_1
      }
      $B4: {  # false
        %31:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %32:i32 = load %31
        %33:f32 = convert %32
        %34:vec4<f32> = construct %33
        store %x_GLF_color, %34
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %36:void = call %main_1
    %37:vec4<f32> = load %x_GLF_color
    %38:main_out = construct %37
    ret %38
  }
}

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.  *
********************************************************************
