SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
  resolution:vec2<f32> @offset(0)
}

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

%b1 = block {  # root
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %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 {
    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
    %x_77:ptr<function, vec2<i32>, read_write> = var
    %x_110:ptr<function, vec2<i32>, read_write> = var
    %x_116:ptr<function, i32, read_write> = var
    %x_77_phi:ptr<function, vec2<i32>, read_write> = var
    %x_80_phi:ptr<function, i32, read_write> = var
    %x_111_phi:ptr<function, vec2<i32>, read_write> = var
    %x_113_phi:ptr<function, vec2<i32>, read_write> = var
    %x_56:vec4<f32> = load %gl_FragCoord
    %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %x_59:vec2<f32> = load %14
    %16:f32 = access %x_56, 0u
    %17:f32 = access %x_56, 1u
    %18:vec2<f32> = construct %16, %17
    %x_60:vec2<f32> = div %18, %x_59
    %20:f32 = access %x_60, 0u
    %21:f32 = mul %20, 8.0f
    %x_63:i32 = convert %21
    %23:f32 = access %x_60, 1u
    %24:f32 = mul %23, 8.0f
    %x_66:i32 = convert %24
    %26:i32 = and %x_63, 5i
    %27:i32 = and %x_66, 10i
    %28:i32 = or %26, %27
    %29:i32 = mul %28, 8i
    %30:i32 = and %x_66, 5i
    %31:i32 = and %x_63, 10i
    %32:i32 = or %30, %31
    %33:i32 = add %29, %32
    %x_75:vec2<i32> = construct %33, 0i
    store %x_77_phi, %x_75
    store %x_80_phi, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_91:ptr<function, vec2<i32>, read_write> = var
        %x_99:ptr<function, vec2<i32>, read_write> = var
        %x_81:ptr<function, i32, read_write> = var
        %x_92_phi:ptr<function, vec2<i32>, read_write> = var
        %x_100_phi:ptr<function, vec2<i32>, read_write> = var
        %40:vec2<i32> = load %x_77_phi
        store %x_77, %40
        %x_80:i32 = load %x_80_phi
        %42:bool = lt %x_80, 100i
        if %42 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %43:vec2<i32> = load %x_77
        store %x_92_phi, %43
        %44:i32 = load_vector_element %x_77, 0u
        %45:bool = gt %44, 0i
        if %45 [t: %b7] {  # if_2
          %b7 = block {  # true
            %46:vec2<i32> = load %x_77
            store %x_91, %46
            %47:i32 = load_vector_element %x_77, 1u
            %48:i32 = sub %47, 1i
            store_vector_element %x_91, 1u, %48
            %49:vec2<i32> = load %x_91
            store %x_92_phi, %49
            exit_if  # if_2
          }
        }
        %x_92:vec2<i32> = load %x_92_phi
        store %x_100_phi, %x_92
        %51:i32 = access %x_92, 0u
        %52:bool = lt %51, 0i
        if %52 [t: %b8] {  # if_3
          %b8 = block {  # true
            store %x_99, %x_92
            %53:i32 = access %x_92, 1u
            %54:i32 = add %53, 1i
            store_vector_element %x_99, 1u, %54
            %55:vec2<i32> = load %x_99
            store %x_100_phi, %55
            exit_if  # if_3
          }
        }
        %x_100:vec2<i32> = load %x_100_phi
        %x_78_1:ptr<function, vec2<i32>, read_write> = var, %x_100
        %58:i32 = access %x_100, 0u
        %59:i32 = access %x_100, 1u
        %60:i32 = div %59, 2i
        %61:i32 = add %58, %60
        store_vector_element %x_78_1, 0u, %61
        %x_78:vec2<i32> = load %x_78_1
        continue %b4
      }
      %b4 = block {  # continuing
        %63:i32 = add %x_80, 1i
        store %x_81, %63
        store %x_77_phi, %x_78
        %64:i32 = load %x_81
        store %x_80_phi, %64
        next_iteration %b3
      }
    }
    %x_105:i32 = load_vector_element %x_77, 0u
    %66:vec2<i32> = load %x_77
    store %x_111_phi, %66
    %67:bool = lt %x_105, 0i
    if %67 [t: %b9] {  # if_4
      %b9 = block {  # true
        store %x_110, vec2<i32>(0i)
        %68:i32 = negation %x_105
        store_vector_element %x_110, 0u, %68
        %69:vec2<i32> = load %x_110
        store %x_111_phi, %69
        exit_if  # if_4
      }
    }
    %x_111:vec2<i32> = load %x_111_phi
    store %x_113_phi, %x_111
    loop [b: %b10, c: %b11] {  # loop_2
      %b10 = block {  # body
        %x_114:ptr<function, vec2<i32>, read_write> = var
        %x_113:vec2<i32> = load %x_113_phi
        %73:i32 = access %x_113, 0u
        store %x_116, %73
        %74:i32 = load %x_116
        %75:bool = gt %74, 15i
        if %75 [t: %b12, f: %b13] {  # if_5
          %b12 = block {  # true
            exit_if  # if_5
          }
          %b13 = block {  # false
            exit_loop  # loop_2
          }
        }
        continue %b11
      }
      %b11 = block {  # continuing
        store %x_114, vec2<i32>(0i)
        %76:i32 = load %x_116
        %77:i32 = sub %76, 16i
        %78:i32 = bitcast %77
        store_vector_element %x_114, 0u, %78
        %79:vec2<i32> = load %x_114
        store %x_113_phi, %79
        next_iteration %b10
      }
    }
    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
    %80:i32 = load %x_116
    %81:ptr<function, vec4<f32>, read_write> = access %indexable, %80
    %x_121:vec4<f32> = load %81
    store %x_GLF_color, %x_121
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b14 {
  %b14 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %85:void = call %main_1
    %86:vec4<f32> = load %x_GLF_color
    %87:main_out = construct %86
    ret %87
  }
}

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