SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # root
  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %c:ptr<function, vec3<f32>, read_write> = var
    %x_53:ptr<function, f32, read_write> = var
    %x_57:ptr<function, f32, read_write> = var
    %x_60:ptr<function, i32, read_write> = var
    %x_58:ptr<function, f32, read_write> = var
    %x_83:ptr<function, f32, read_write> = var
    %x_84:ptr<function, f32, read_write> = var
    %x_85:ptr<function, bool, read_write> = var
    %x_87:ptr<function, f32, read_write> = var
    %x_124:ptr<function, f32, read_write> = var
    %x_125:ptr<function, f32, read_write> = var
    %x_128:ptr<function, f32, read_write> = var
    %x_135:ptr<function, i32, read_write> = var
    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
    %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
    %19:f32 = load_vector_element %18, 0u
    %x_47:f32 = let %19
    %21:vec2<f32> = construct 1.0f, %x_47
    %x_48:vec2<f32> = let %21
    %23:f32 = mul %x_47, 0.125f
    %24:f32 = round %23
    %x_50:f32 = let %24
    %x_51:vec2<f32> = let vec2<f32>(0.0f, -0.5f)
    %27:f32 = load_vector_element %gl_FragCoord, 0u
    store %x_53, %27
    switch 0u [c: (default, $B3)] {  # switch_1
      $B3: {  # case
        store %x_57, -0.5f
        store %x_60, 1i
        loop [b: $B4, c: $B5] {  # loop_1
          $B4: {  # body
            %x_70:ptr<function, f32, read_write> = var
            %x_78:ptr<function, f32, read_write> = var
            %x_61:ptr<function, i32, read_write> = var
            store %x_83, 0.0f
            %31:f32 = load %x_57
            store %x_84, %31
            store %x_85, false
            %32:i32 = load %x_60
            %33:bool = lt %32, 800i
            if %33 [t: $B6, f: $B7] {  # if_1
              $B6: {  # true
                exit_if  # if_1
              }
              $B7: {  # false
                exit_loop  # loop_1
              }
            }
            %x_77:ptr<function, f32, read_write> = var
            %35:i32 = load %x_60
            %36:i32 = call %tint_mod_i32, %35, 32i
            %38:bool = eq %36, 0i
            if %38 [t: $B8, f: $B9] {  # if_2
              $B8: {  # true
                %39:f32 = load %x_57
                %40:f32 = add %39, 0.40000000596046447754f
                store %x_70, %40
                %41:f32 = load %x_70
                store %x_58, %41
                exit_if  # if_2
              }
              $B9: {  # false
                %42:f32 = load %x_57
                store %x_78, %42
                %43:i32 = load %x_60
                %44:f32 = convert %43
                %45:f32 = let %44
                %46:f32 = round %x_50
                %47:f32 = let %46
                %48:i32 = load %x_60
                %49:f32 = convert %48
                %50:f32 = let %49
                %51:f32 = round %x_50
                %52:f32 = div %50, %51
                %53:f32 = floor %52
                %54:f32 = mul %47, %53
                %55:f32 = sub %45, %54
                %56:bool = lte %55, 0.00999999977648258209f
                if %56 [t: $B10] {  # if_3
                  $B10: {  # true
                    %57:f32 = load %x_57
                    %58:f32 = add %57, 100.0f
                    store %x_77, %58
                    %59:f32 = load %x_77
                    store %x_78, %59
                    exit_if  # if_3
                  }
                }
                %60:f32 = load %x_78
                store %x_58, %60
                exit_if  # if_2
              }
            }
            %61:i32 = load %x_60
            %62:f32 = convert %61
            %63:f32 = load %x_53
            %64:bool = gte %62, %63
            if %64 [t: $B11] {  # if_4
              $B11: {  # true
                %65:f32 = load %x_58
                store %x_83, %65
                %66:f32 = load %x_58
                store %x_84, %66
                store %x_85, true
                exit_loop  # loop_1
              }
            }
            continue  # -> $B5
          }
          $B5: {  # continuing
            %67:i32 = load %x_60
            %68:i32 = add %67, 1i
            store %x_61, %68
            %69:f32 = load %x_58
            store %x_57, %69
            %70:i32 = load %x_61
            store %x_60, %70
            next_iteration  # -> $B4
          }
        }
        %71:f32 = load %x_83
        store %x_87, %71
        %72:bool = load %x_85
        if %72 [t: $B12] {  # if_5
          $B12: {  # true
            exit_switch  # switch_1
          }
        }
        %73:f32 = load %x_84
        store %x_87, %73
        exit_switch  # switch_1
      }
    }
    %x_92:ptr<function, f32, read_write> = var
    %x_98:ptr<function, f32, read_write> = var
    %x_101:ptr<function, i32, read_write> = var
    %x_99:ptr<function, f32, read_write> = var
    %x_126:ptr<function, bool, read_write> = var
    %79:f32 = load %x_84
    %80:f32 = load %x_83
    %81:vec4<f32> = construct %79, 0.40000000596046447754f, %80, 0.40000000596046447754f
    %x_89:vec4<f32> = let %81
    %83:f32 = load %x_87
    store_vector_element %c, 0u, %83
    %84:f32 = load_vector_element %gl_FragCoord, 1u
    store %x_92, %84
    switch 0u [c: (default, $B13)] {  # switch_2
      $B13: {  # case
        %85:f32 = load %x_57
        %86:vec4<f32> = construct %x_51, 0.0f, %85
        %x_95:vec4<f32> = let %86
        %88:vec3<f32> = construct %x_48, -0.5f
        %89:f32 = access %88, 2u
        store %x_98, %89
        store %x_101, 1i
        loop [b: $B14, c: $B15] {  # loop_2
          $B14: {  # body
            %x_111:ptr<function, f32, read_write> = var
            %x_119:ptr<function, f32, read_write> = var
            %x_102:ptr<function, i32, read_write> = var
            store %x_124, 0.0f
            %93:f32 = load %x_98
            store %x_125, %93
            store %x_126, false
            %94:i32 = load %x_101
            %95:bool = lt %94, 800i
            if %95 [t: $B16, f: $B17] {  # if_6
              $B16: {  # true
                exit_if  # if_6
              }
              $B17: {  # false
                exit_loop  # loop_2
              }
            }
            %x_118:ptr<function, f32, read_write> = var
            %97:i32 = load %x_101
            %98:i32 = call %tint_mod_i32, %97, 32i
            %99:bool = eq %98, 0i
            if %99 [t: $B18, f: $B19] {  # if_7
              $B18: {  # true
                %100:f32 = load %x_98
                %101:f32 = add %100, 0.40000000596046447754f
                store %x_111, %101
                %102:f32 = load %x_111
                store %x_99, %102
                exit_if  # if_7
              }
              $B19: {  # false
                %103:f32 = load %x_98
                store %x_119, %103
                %104:i32 = load %x_101
                %105:f32 = convert %104
                %106:f32 = let %105
                %107:f32 = round %x_50
                %108:f32 = let %107
                %109:i32 = load %x_101
                %110:f32 = convert %109
                %111:f32 = let %110
                %112:f32 = round %x_50
                %113:f32 = div %111, %112
                %114:f32 = floor %113
                %115:f32 = mul %108, %114
                %116:f32 = sub %106, %115
                %117:bool = lte %116, 0.00999999977648258209f
                if %117 [t: $B20] {  # if_8
                  $B20: {  # true
                    %118:f32 = load %x_98
                    %119:f32 = add %118, 100.0f
                    store %x_118, %119
                    %120:f32 = load %x_118
                    store %x_119, %120
                    exit_if  # if_8
                  }
                }
                %121:f32 = load %x_119
                store %x_99, %121
                exit_if  # if_7
              }
            }
            %122:i32 = load %x_101
            %123:f32 = convert %122
            %124:f32 = load %x_92
            %125:bool = gte %123, %124
            if %125 [t: $B21] {  # if_9
              $B21: {  # true
                %126:f32 = load %x_99
                store %x_124, %126
                %127:f32 = load %x_99
                store %x_125, %127
                store %x_126, true
                exit_loop  # loop_2
              }
            }
            continue  # -> $B15
          }
          $B15: {  # continuing
            %128:i32 = load %x_101
            %129:i32 = add %128, 1i
            store %x_102, %129
            %130:f32 = load %x_99
            store %x_98, %130
            %131:i32 = load %x_102
            store %x_101, %131
            next_iteration  # -> $B14
          }
        }
        %132:f32 = load %x_124
        store %x_128, %132
        %133:bool = load %x_126
        if %133 [t: $B22] {  # if_10
          $B22: {  # true
            exit_switch  # switch_2
          }
        }
        %134:f32 = load %x_125
        store %x_128, %134
        exit_switch  # switch_2
      }
    }
    %135:f32 = load %x_128
    store_vector_element %c, 1u, %135
    %136:f32 = load_vector_element %c, 0u
    %137:f32 = load_vector_element %c, 1u
    %138:f32 = add %136, %137
    store_vector_element %c, 2u, %138
    store %x_135, 0i
    loop [b: $B23, c: $B24] {  # loop_3
      $B23: {  # body
        %x_136:ptr<function, i32, read_write> = var
        %140:i32 = load %x_135
        %141:bool = lt %140, 3i
        if %141 [t: $B25, f: $B26] {  # if_11
          $B25: {  # true
            exit_if  # if_11
          }
          $B26: {  # false
            exit_loop  # loop_3
          }
        }
        %142:i32 = load %x_135
        %143:f32 = load_vector_element %c, %142
        %144:bool = gte %143, 1.0f
        if %144 [t: $B27] {  # if_12
          $B27: {  # true
            %145:i32 = load %x_135
            %146:i32 = load %x_135
            %147:f32 = load_vector_element %c, %146
            %148:i32 = load %x_135
            %149:f32 = load_vector_element %c, %148
            %150:f32 = mul %147, %149
            store_vector_element %c, %145, %150
            exit_if  # if_12
          }
        }
        continue  # -> $B24
      }
      $B24: {  # continuing
        %151:i32 = load %x_135
        %152:i32 = add %151, 1i
        store %x_136, %152
        %153:i32 = load %x_136
        store %x_135, %153
        next_iteration  # -> $B23
      }
    }
    %154:vec3<f32> = load %c
    %155:vec3<f32> = abs %154
    %156:vec3<f32> = normalize %155
    %x_151:vec3<f32> = let %156
    %158:f32 = access %x_151, 0u
    %159:f32 = access %x_151, 1u
    %160:f32 = access %x_151, 2u
    %161:vec4<f32> = construct %158, %159, %160, 1.0f
    store %x_GLF_color, %161
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B28: {
    store %gl_FragCoord, %gl_FragCoord_param
    %164:void = call %main_1
    %165:vec4<f32> = load %x_GLF_color
    %166:main_out = construct %165
    ret %166
  }
}
%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B29: {
    %169:bool = eq %rhs, 0i
    %170:bool = eq %lhs, -2147483648i
    %171:bool = eq %rhs, -1i
    %172:bool = and %170, %171
    %173:bool = or %169, %172
    %174:i32 = select %rhs, 1i, %173
    %175:i32 = let %174
    %176:i32 = div %lhs, %175
    %177:i32 = mul %176, %175
    %178:i32 = sub %lhs, %177
    ret %178
  }
}

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