SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 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 = block {  # 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 {
  %b2 = block {
    %v1:ptr<function, vec2<f32>, read_write> = var
    %6:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %x_35:f32 = load %6
    %8:vec2<f32> = construct %x_35, %x_35
    store %v1, %8
    %9:ptr<uniform, i32, read> = access %x_8, 0u, 0i, 0u
    %x_38:i32 = load %9
    %x_40:f32 = load_vector_element %v1, 1u
    %12:f32 = ldexp %x_40, -256i
    store_vector_element %v1, %x_38, %12
    %x_43:vec2<f32> = load %v1
    %14:vec2<f32> = construct %x_35, 0.0f
    %15:vec2<f32> = construct 0.0f, %x_35
    %16:mat2x2<f32> = construct %14, %15
    %17:vec2<f32> = mul %x_43, %16
    %18:f32 = access %17, 0u
    %19:bool = eq %18, %x_35
    if %19 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %x_53:f32 = convert %x_38
        %21:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %x_55:i32 = load %21
        %x_56:f32 = convert %x_55
        %24:vec4<f32> = construct %x_53, %x_56, %x_56, %x_53
        store %x_GLF_color, %24
        exit_if  # if_1
      }
      %b4 = block {  # false
        %25:ptr<uniform, i32, read> = access %x_8, 0u, 1i, 0u
        %x_59:i32 = load %25
        %x_60:f32 = convert %x_59
        %28:vec4<f32> = construct %x_60, %x_60, %x_60, %x_60
        store %x_GLF_color, %28
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %30:void = call %main_1
    %31:vec4<f32> = load %x_GLF_color
    %32:main_out = construct %31
    ret %32
  }
}

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