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_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %map:ptr<private, array<i32, 256>, read_write> = var
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
  %x_60:ptr<private, mat2x4<f32>, read_write> = var, mat2x4<f32>(vec4<f32>(0.0f))
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %pos:ptr<function, vec2<f32>, read_write> = var
    %ipos:ptr<function, vec2<i32>, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %p:ptr<function, vec2<i32>, read_write> = var
    %canwalk:ptr<function, bool, read_write> = var
    %v:ptr<function, i32, read_write> = var
    %directions:ptr<function, i32, read_write> = var
    %j:ptr<function, i32, read_write> = var
    %d:ptr<function, i32, read_write> = var
    %x_68:i32 = let -242i
    %17:vec4<f32> = load %gl_FragCoord
    %18:vec2<f32> = swizzle %17, xy
    %19:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
    %20:vec2<f32> = load %19
    %21:vec2<f32> = div %18, %20
    store %pos, %21
    %22:f32 = load_vector_element %pos, 0u
    %23:f32 = mul %22, 16.0f
    %24:i32 = convert %23
    %25:f32 = load_vector_element %pos, 1u
    %26:f32 = mul %25, 16.0f
    %27:i32 = convert %26
    %28:vec2<i32> = construct %24, %27
    store %ipos, %28
    store %i, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %29:i32 = load %i
        %30:bool = lt %29, 256i
        if %30 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_86:i32 = load %i
        %32:ptr<private, i32, read_write> = access %map, %x_86
        store %32, 0i
        continue %b4
      }
      %b4 = block {  # continuing
        %33:i32 = load %i
        %34:i32 = add %33, 1i
        store %i, %34
        next_iteration %b3
      }
    }
    store %p, vec2<i32>(0i)
    store %canwalk, true
    store %v, 0i
    loop [b: %b7, c: %b8] {  # loop_2
      %b7 = block {  # body
        %x_110:ptr<function, bool, read_write> = var
        %x_111:ptr<function, bool, read_write> = var
        %x_130:ptr<function, bool, read_write> = var
        %x_131:ptr<function, bool, read_write> = var
        %x_150:ptr<function, bool, read_write> = var
        %x_151:ptr<function, bool, read_write> = var
        %x_171:ptr<function, bool, read_write> = var
        %x_172:ptr<function, bool, read_write> = var
        %43:i32 = load %v
        %44:i32 = add %43, 1i
        store %v, %44
        store %directions, 0i
        %45:i32 = load_vector_element %p, 0u
        %x_98:bool = gt %45, 0i
        store %x_111, %x_98
        if %x_98 [t: %b9] {  # if_2
          %b9 = block {  # true
            %47:i32 = load_vector_element %p, 0u
            %48:i32 = sub %47, 2i
            %49:i32 = load_vector_element %p, 1u
            %50:i32 = mul %49, 16i
            %51:i32 = add %48, %50
            %52:ptr<private, i32, read_write> = access %map, %51
            %53:i32 = load %52
            %54:bool = eq %53, 0i
            store %x_110, %54
            %55:bool = load %x_110
            store %x_111, %55
            exit_if  # if_2
          }
        }
        %56:bool = load %x_111
        if %56 [t: %b10] {  # if_3
          %b10 = block {  # true
            %57:i32 = load %directions
            %58:i32 = add %57, 1i
            store %directions, %58
            exit_if  # if_3
          }
        }
        %59:i32 = load_vector_element %p, 1u
        %x_118:bool = gt %59, 0i
        store %x_131, %x_118
        if %x_118 [t: %b11] {  # if_4
          %b11 = block {  # true
            %61:i32 = load_vector_element %p, 0u
            %62:i32 = load_vector_element %p, 1u
            %63:i32 = sub %62, 2i
            %64:i32 = mul %63, 16i
            %65:i32 = add %61, %64
            %66:ptr<private, i32, read_write> = access %map, %65
            %67:i32 = load %66
            %68:bool = eq %67, 0i
            store %x_130, %68
            %69:bool = load %x_130
            store %x_131, %69
            exit_if  # if_4
          }
        }
        %70:bool = load %x_131
        if %70 [t: %b12] {  # if_5
          %b12 = block {  # true
            %71:i32 = load %directions
            %72:i32 = add %71, 1i
            store %directions, %72
            exit_if  # if_5
          }
        }
        %73:i32 = load_vector_element %p, 0u
        %x_138:bool = lt %73, 14i
        store %x_151, %x_138
        if %x_138 [t: %b13] {  # if_6
          %b13 = block {  # true
            %75:i32 = load_vector_element %p, 0u
            %76:i32 = add %75, 2i
            %77:i32 = load_vector_element %p, 1u
            %78:i32 = mul %77, 16i
            %79:i32 = add %76, %78
            %80:ptr<private, i32, read_write> = access %map, %79
            %81:i32 = load %80
            %82:bool = eq %81, 0i
            store %x_150, %82
            %83:bool = load %x_150
            store %x_151, %83
            exit_if  # if_6
          }
        }
        %84:bool = load %x_151
        if %84 [t: %b14] {  # if_7
          %b14 = block {  # true
            %85:i32 = load %directions
            %86:i32 = add %85, 1i
            store %directions, %86
            exit_if  # if_7
          }
        }
        %x_156:i32 = sub 256i, %x_68
        %88:i32 = load_vector_element %p, 1u
        %x_159:bool = lt %88, 14i
        store %x_172, %x_159
        if %x_159 [t: %b15] {  # if_8
          %b15 = block {  # true
            %90:i32 = load_vector_element %p, 0u
            %91:i32 = load_vector_element %p, 1u
            %92:i32 = add %91, 2i
            %93:i32 = mul %92, 16i
            %94:i32 = add %90, %93
            %95:ptr<private, i32, read_write> = access %map, %94
            %96:i32 = load %95
            %97:bool = eq %96, 0i
            store %x_171, %97
            %98:bool = load %x_171
            store %x_172, %98
            exit_if  # if_8
          }
        }
        %99:bool = load %x_172
        if %99 [t: %b16] {  # if_9
          %b16 = block {  # true
            %100:i32 = load %directions
            %101:i32 = add %100, 1i
            store %directions, %101
            exit_if  # if_9
          }
        }
        %x_237:ptr<function, bool, read_write> = var
        %x_238:ptr<function, bool, read_write> = var
        %x_250:ptr<function, bool, read_write> = var
        %x_251:ptr<function, bool, read_write> = var
        %x_289:ptr<function, bool, read_write> = var
        %x_290:ptr<function, bool, read_write> = var
        %x_302:ptr<function, bool, read_write> = var
        %x_303:ptr<function, bool, read_write> = var
        %x_341:ptr<function, bool, read_write> = var
        %x_342:ptr<function, bool, read_write> = var
        %x_354:ptr<function, bool, read_write> = var
        %x_355:ptr<function, bool, read_write> = var
        %x_393:ptr<function, bool, read_write> = var
        %x_394:ptr<function, bool, read_write> = var
        %x_406:ptr<function, bool, read_write> = var
        %x_407:ptr<function, bool, read_write> = var
        %118:i32 = load %directions
        %119:bool = eq %118, 0i
        if %119 [t: %b17, f: %b18] {  # if_10
          %b17 = block {  # true
            store %canwalk, false
            store %i, 0i
            loop [b: %b19, c: %b20] {  # loop_3
              %b19 = block {  # body
                %x_186:i32 = load %i
                %121:i32 = load %i
                %122:bool = lt %121, 8i
                if %122 [t: %b21, f: %b22] {  # if_11
                  %b21 = block {  # true
                    exit_if  # if_11
                  }
                  %b22 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                store %j, 0i
                %x_189:i32 = sub %x_156, %x_186
                store %x_60, mat2x4<f32>(vec4<f32>(0.0f))
                if false [t: %b23] {  # if_12
                  %b23 = block {  # true
                    continue %b20
                  }
                }
                loop [b: %b24, c: %b25] {  # loop_4
                  %b24 = block {  # body
                    %124:i32 = load %j
                    %125:bool = lt %124, 8i
                    if %125 [t: %b26, f: %b27] {  # if_13
                      %b26 = block {  # true
                        exit_if  # if_13
                      }
                      %b27 = block {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %126:i32 = load %j
                    %127:i32 = mul %126, 2i
                    %128:i32 = load %i
                    %129:i32 = mul %128, 2i
                    %130:i32 = mul %129, 16i
                    %131:i32 = add %127, %130
                    %132:ptr<private, i32, read_write> = access %map, %131
                    %133:i32 = load %132
                    %134:bool = eq %133, 0i
                    if %134 [t: %b28] {  # if_14
                      %b28 = block {  # true
                        %135:i32 = load %j
                        %136:i32 = mul %135, 2i
                        store_vector_element %p, 0u, %136
                        %137:i32 = load %i
                        %138:i32 = mul %137, 2i
                        store_vector_element %p, 1u, %138
                        store %canwalk, true
                        exit_if  # if_14
                      }
                    }
                    continue %b25
                  }
                  %b25 = block {  # continuing
                    %139:i32 = load %j
                    %140:i32 = add %139, 1i
                    store %j, %140
                    next_iteration %b24
                  }
                }
                continue %b20
              }
              %b20 = block {  # continuing
                %141:i32 = load %i
                %142:i32 = add %141, 1i
                store %i, %142
                next_iteration %b19
              }
            }
            %x_219:i32 = load_vector_element %p, 0u
            %x_221:i32 = load_vector_element %p, 1u
            %145:i32 = mul %x_221, 16i
            %146:i32 = add %x_219, %145
            %147:ptr<private, i32, read_write> = access %map, %146
            store %147, 1i
            exit_if  # if_10
          }
          %b18 = block {  # false
            %148:i32 = load %v
            %149:i32 = load %directions
            %150:i32 = mod %148, %149
            store %d, %150
            %151:i32 = load %v
            %152:i32 = load %directions
            %153:i32 = add %151, %152
            store %v, %153
            %154:i32 = load %d
            %x_232:bool = gte %154, 0i
            store %x_238, %x_232
            if %x_232 [t: %b29] {  # if_15
              %b29 = block {  # true
                %156:i32 = load_vector_element %p, 0u
                %157:bool = gt %156, 0i
                store %x_237, %157
                %158:bool = load %x_237
                store %x_238, %158
                exit_if  # if_15
              }
            }
            %159:bool = load %x_238
            store %x_251, %159
            %160:bool = load %x_238
            if %160 [t: %b30] {  # if_16
              %b30 = block {  # true
                %161:i32 = load_vector_element %p, 0u
                %162:i32 = sub %161, 2i
                %163:i32 = load_vector_element %p, 1u
                %164:i32 = mul %163, 16i
                %165:i32 = add %162, %164
                %166:ptr<private, i32, read_write> = access %map, %165
                %167:i32 = load %166
                %168:bool = eq %167, 0i
                store %x_250, %168
                %169:bool = load %x_250
                store %x_251, %169
                exit_if  # if_16
              }
            }
            %170:bool = load %x_251
            if %170 [t: %b31] {  # if_17
              %b31 = block {  # true
                %171:i32 = load %d
                %172:i32 = sub %171, 1i
                store %d, %172
                %x_257:i32 = load_vector_element %p, 0u
                %x_259:i32 = load_vector_element %p, 1u
                %175:i32 = mul %x_259, 16i
                %176:i32 = add %x_257, %175
                %177:ptr<private, i32, read_write> = access %map, %176
                store %177, 1i
                %x_264:i32 = load_vector_element %p, 0u
                %x_267:i32 = load_vector_element %p, 1u
                %180:i32 = sub %x_264, 1i
                %181:i32 = mul %x_267, 16i
                %182:i32 = add %180, %181
                %183:ptr<private, i32, read_write> = access %map, %182
                store %183, 1i
                %x_272:i32 = load_vector_element %p, 0u
                %x_275:i32 = load_vector_element %p, 1u
                %186:i32 = sub %x_272, 2i
                %187:i32 = mul %x_275, 16i
                %188:i32 = add %186, %187
                %189:ptr<private, i32, read_write> = access %map, %188
                store %189, 1i
                %190:i32 = load_vector_element %p, 0u
                %191:i32 = sub %190, 2i
                store_vector_element %p, 0u, %191
                exit_if  # if_17
              }
            }
            %192:i32 = load %d
            %x_284:bool = gte %192, 0i
            store %x_290, %x_284
            if %x_284 [t: %b32] {  # if_18
              %b32 = block {  # true
                %194:i32 = load_vector_element %p, 1u
                %195:bool = gt %194, 0i
                store %x_289, %195
                %196:bool = load %x_289
                store %x_290, %196
                exit_if  # if_18
              }
            }
            %197:bool = load %x_290
            store %x_303, %197
            %198:bool = load %x_290
            if %198 [t: %b33] {  # if_19
              %b33 = block {  # true
                %199:i32 = load_vector_element %p, 0u
                %200:i32 = load_vector_element %p, 1u
                %201:i32 = sub %200, 2i
                %202:i32 = mul %201, 16i
                %203:i32 = add %199, %202
                %204:ptr<private, i32, read_write> = access %map, %203
                %205:i32 = load %204
                %206:bool = eq %205, 0i
                store %x_302, %206
                %207:bool = load %x_302
                store %x_303, %207
                exit_if  # if_19
              }
            }
            %208:bool = load %x_303
            if %208 [t: %b34] {  # if_20
              %b34 = block {  # true
                %209:i32 = load %d
                %210:i32 = sub %209, 1i
                store %d, %210
                %x_309:i32 = load_vector_element %p, 0u
                %x_311:i32 = load_vector_element %p, 1u
                %213:i32 = mul %x_311, 16i
                %214:i32 = add %x_309, %213
                %215:ptr<private, i32, read_write> = access %map, %214
                store %215, 1i
                %x_316:i32 = load_vector_element %p, 0u
                %x_318:i32 = load_vector_element %p, 1u
                %218:i32 = sub %x_318, 1i
                %219:i32 = mul %218, 16i
                %220:i32 = add %x_316, %219
                %221:ptr<private, i32, read_write> = access %map, %220
                store %221, 1i
                %x_324:i32 = load_vector_element %p, 0u
                %x_326:i32 = load_vector_element %p, 1u
                %224:i32 = sub %x_326, 2i
                %225:i32 = mul %224, 16i
                %226:i32 = add %x_324, %225
                %227:ptr<private, i32, read_write> = access %map, %226
                store %227, 1i
                %228:i32 = load_vector_element %p, 1u
                %229:i32 = sub %228, 2i
                store_vector_element %p, 1u, %229
                exit_if  # if_20
              }
            }
            %230:i32 = load %d
            %x_336:bool = gte %230, 0i
            store %x_342, %x_336
            if %x_336 [t: %b35] {  # if_21
              %b35 = block {  # true
                %232:i32 = load_vector_element %p, 0u
                %233:bool = lt %232, 14i
                store %x_341, %233
                %234:bool = load %x_341
                store %x_342, %234
                exit_if  # if_21
              }
            }
            %235:bool = load %x_342
            store %x_355, %235
            %236:bool = load %x_342
            if %236 [t: %b36] {  # if_22
              %b36 = block {  # true
                %237:i32 = load_vector_element %p, 0u
                %238:i32 = add %237, 2i
                %239:i32 = load_vector_element %p, 1u
                %240:i32 = mul %239, 16i
                %241:i32 = add %238, %240
                %242:ptr<private, i32, read_write> = access %map, %241
                %243:i32 = load %242
                %244:bool = eq %243, 0i
                store %x_354, %244
                %245:bool = load %x_354
                store %x_355, %245
                exit_if  # if_22
              }
            }
            %246:bool = load %x_355
            if %246 [t: %b37] {  # if_23
              %b37 = block {  # true
                %247:i32 = load %d
                %248:i32 = sub %247, 1i
                store %d, %248
                %x_361:i32 = load_vector_element %p, 0u
                %x_363:i32 = load_vector_element %p, 1u
                %251:i32 = mul %x_363, 16i
                %252:i32 = add %x_361, %251
                %253:ptr<private, i32, read_write> = access %map, %252
                store %253, 1i
                %x_368:i32 = load_vector_element %p, 0u
                %x_371:i32 = load_vector_element %p, 1u
                %256:i32 = add %x_368, 1i
                %257:i32 = mul %x_371, 16i
                %258:i32 = add %256, %257
                %259:ptr<private, i32, read_write> = access %map, %258
                store %259, 1i
                %x_376:i32 = load_vector_element %p, 0u
                %x_379:i32 = load_vector_element %p, 1u
                %262:i32 = add %x_376, 2i
                %263:i32 = mul %x_379, 16i
                %264:i32 = add %262, %263
                %265:ptr<private, i32, read_write> = access %map, %264
                store %265, 1i
                %266:i32 = load_vector_element %p, 0u
                %267:i32 = add %266, 2i
                store_vector_element %p, 0u, %267
                exit_if  # if_23
              }
            }
            %268:i32 = load %d
            %x_388:bool = gte %268, 0i
            store %x_394, %x_388
            if %x_388 [t: %b38] {  # if_24
              %b38 = block {  # true
                %270:i32 = load_vector_element %p, 1u
                %271:bool = lt %270, 14i
                store %x_393, %271
                %272:bool = load %x_393
                store %x_394, %272
                exit_if  # if_24
              }
            }
            %273:bool = load %x_394
            store %x_407, %273
            %274:bool = load %x_394
            if %274 [t: %b39] {  # if_25
              %b39 = block {  # true
                %275:i32 = load_vector_element %p, 0u
                %276:i32 = load_vector_element %p, 1u
                %277:i32 = add %276, 2i
                %278:i32 = mul %277, 16i
                %279:i32 = add %275, %278
                %280:ptr<private, i32, read_write> = access %map, %279
                %281:i32 = load %280
                %282:bool = eq %281, 0i
                store %x_406, %282
                %283:bool = load %x_406
                store %x_407, %283
                exit_if  # if_25
              }
            }
            %284:bool = load %x_407
            if %284 [t: %b40] {  # if_26
              %b40 = block {  # true
                %285:i32 = load %d
                %286:i32 = sub %285, 1i
                store %d, %286
                %x_413:i32 = load_vector_element %p, 0u
                %x_415:i32 = load_vector_element %p, 1u
                %289:i32 = mul %x_415, 16i
                %290:i32 = add %x_413, %289
                %291:ptr<private, i32, read_write> = access %map, %290
                store %291, 1i
                %x_420:i32 = load_vector_element %p, 0u
                %x_422:i32 = load_vector_element %p, 1u
                %294:i32 = add %x_422, 1i
                %295:i32 = mul %294, 16i
                %296:i32 = add %x_420, %295
                %297:ptr<private, i32, read_write> = access %map, %296
                store %297, 1i
                %x_428:i32 = load_vector_element %p, 0u
                %x_430:i32 = load_vector_element %p, 1u
                %300:i32 = add %x_430, 2i
                %301:i32 = mul %300, 16i
                %302:i32 = add %x_428, %301
                %303:ptr<private, i32, read_write> = access %map, %302
                store %303, 1i
                %304:i32 = load_vector_element %p, 1u
                %305:i32 = add %304, 2i
                store_vector_element %p, 1u, %305
                exit_if  # if_26
              }
            }
            exit_if  # if_10
          }
        }
        %306:i32 = load_vector_element %ipos, 1u
        %307:i32 = mul %306, 16i
        %308:i32 = load_vector_element %ipos, 0u
        %309:i32 = add %307, %308
        %310:ptr<private, i32, read_write> = access %map, %309
        %311:i32 = load %310
        %312:bool = eq %311, 1i
        if %312 [t: %b41] {  # if_27
          %b41 = block {  # true
            store %x_GLF_color, vec4<f32>(1.0f)
            ret
          }
        }
        continue %b8
      }
      %b8 = block {  # continuing
        %x_450:bool = load %canwalk
        %314:bool = eq %x_450, false
        break_if %314 %b7
      }
    }
    store %x_GLF_color, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b42 {
  %b42 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %317:void = call %main_1
    %318:vec4<f32> = load %x_GLF_color
    %319:main_out = construct %318
    ret %319
  }
}

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