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)
}

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_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %m0:ptr<function, mat2x2<f32>, read_write> = var
    %m1:ptr<function, mat2x2<f32>, read_write> = var
    %v:ptr<function, vec2<f32>, read_write> = var
    %7:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %8:f32 = load %7
    %9:vec2<f32> = construct %8, -0.540302276611328125f
    %10:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %11:f32 = load %10
    %12:vec2<f32> = construct 0.540302276611328125f, %11
    %13:mat2x2<f32> = construct %9, %12
    store %m0, %13
    %14:mat2x2<f32> = load %m0
    %15:mat2x2<f32> = load %m0
    %16:mat2x2<f32> = mul %14, %15
    store %m1, %16
    %17:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %18:f32 = load %17
    %19:vec2<f32> = construct %18
    %20:mat2x2<f32> = load %m1
    %21:vec2<f32> = mul %19, %20
    store %v, %21
    %22:f32 = load_vector_element %v, 0u
    %23:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %24:f32 = load %23
    %25:bool = lt %22, %24
    if %25 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %26:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %27:f32 = load %26
        %28:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %29:f32 = load %28
        %30:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %31:f32 = load %30
        %32:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %33:f32 = load %32
        %34:vec4<f32> = construct %27, %29, %31, %33
        store %x_GLF_color, %34
        exit_if  # if_1
      }
      %b4 = block {  # false
        %35:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %36:f32 = load %35
        %37:vec4<f32> = construct %36
        store %x_GLF_color, %37
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %39:void = call %main_1
    %40:vec4<f32> = load %x_GLF_color
    %41:main_out = construct %40
    ret %41
  }
}

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