SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: strided_arr = struct @align(4) {
  el:i32 @offset(0)
}

buf0 = struct @align(4) {
  x_GLF_uniform_int_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 {
    %m:ptr<function, mat2x2<f32>, read_write> = var
    %5:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %x_29:i32 = load %5
    %x_30:f32 = convert %x_29
    %8:vec2<f32> = construct %x_30, 0.0f
    %9:vec2<f32> = construct 0.0f, %x_30
    %10:mat2x2<f32> = construct %8, %9
    %11:mat2x2<f32> = transpose %10
    %12:mat2x2<f32> = transpose %11
    store %m, %12
    %x_36:mat2x2<f32> = load %m
    %14:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
    %x_38:i32 = load %14
    %x_39:f32 = convert %x_38
    %17:vec2<f32> = construct %x_39, 0.0f
    %18:vec2<f32> = construct 0.0f, %x_39
    %x_42:mat2x2<f32> = construct %17, %18
    %20:vec2<f32> = access %x_36, 0u
    %21:vec2<f32> = access %x_42, 0u
    %22:vec2<bool> = eq %20, %21
    %23:bool = all %22
    %24:vec2<f32> = access %x_36, 1u
    %25:vec2<f32> = access %x_42, 1u
    %26:vec2<bool> = eq %24, %25
    %27:bool = all %26
    %28:bool = and %23, %27
    if %28 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        %29:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_56:i32 = load %29
        %31:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_59:i32 = load %31
        %33:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_62:i32 = load %33
        %35:ptr<uniform, i32, read> = access %x_6, 0u, 0i, 0u
        %x_65:i32 = load %35
        %37:f32 = convert %x_56
        %38:f32 = convert %x_59
        %39:f32 = convert %x_62
        %40:f32 = convert %x_65
        %41:vec4<f32> = construct %37, %38, %39, %40
        store %x_GLF_color, %41
        exit_if  # if_1
      }
      %b4 = block {  # false
        %42:ptr<uniform, i32, read> = access %x_6, 0u, 1i, 0u
        %x_69:i32 = load %42
        %x_70:f32 = convert %x_69
        %45:vec4<f32> = construct %x_70, %x_70, %x_70, %x_70
        store %x_GLF_color, %45
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %47:void = call %main_1
    %48:vec4<f32> = load %x_GLF_color
    %49:main_out = construct %48
    ret %49
  }
}

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