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

%main_1 = func():void {
  $B2: {
    %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
    %15:vec4<f32> = load %gl_FragCoord
    %16:vec2<f32> = swizzle %15, xy
    %17:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
    %18:vec2<f32> = load %17
    %19:vec2<f32> = div %16, %18
    store %pos, %19
    %20:f32 = load_vector_element %pos, 0u
    %21:f32 = mul %20, 16.0f
    %22:i32 = call %tint_f32_to_i32, %21
    %24:i32 = let %22
    %25:f32 = load_vector_element %pos, 1u
    %26:f32 = mul %25, 16.0f
    %27:i32 = call %tint_f32_to_i32, %26
    %28:vec2<i32> = construct %24, %27
    store %ipos, %28
    store %i, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %29:i32 = load %i
        %30:bool = lt %29, 256i
        if %30 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        %31:i32 = load %i
        %x_80:i32 = let %31
        %33:ptr<private, i32, read_write> = access %map, %x_80
        store %33, 0i
        continue  # -> $B4
      }
      $B4: {  # continuing
        %34:i32 = load %i
        %35:i32 = add %34, 1i
        store %i, %35
        next_iteration  # -> $B3
      }
    }
    store %p, vec2<i32>(0i)
    store %canwalk, true
    store %v, 0i
    loop [b: $B7, c: $B8] {  # loop_2
      $B7: {  # body
        %x_104:ptr<function, bool, read_write> = var
        %x_105:ptr<function, bool, read_write> = var
        %x_124:ptr<function, bool, read_write> = var
        %x_125:ptr<function, bool, read_write> = var
        %x_144:ptr<function, bool, read_write> = var
        %x_145:ptr<function, bool, read_write> = var
        %x_164:ptr<function, bool, read_write> = var
        %x_165:ptr<function, bool, read_write> = var
        %44:i32 = load %v
        %45:i32 = add %44, 1i
        store %v, %45
        store %directions, 0i
        %46:i32 = load_vector_element %p, 0u
        %47:bool = gt %46, 0i
        %x_92:bool = let %47
        store %x_105, %x_92
        if %x_92 [t: $B9] {  # if_2
          $B9: {  # true
            %49:i32 = load_vector_element %p, 0u
            %50:i32 = sub %49, 2i
            %51:i32 = load_vector_element %p, 1u
            %52:i32 = mul %51, 16i
            %53:i32 = add %50, %52
            %54:ptr<private, i32, read_write> = access %map, %53
            %55:i32 = load %54
            %56:bool = eq %55, 0i
            store %x_104, %56
            %57:bool = load %x_104
            store %x_105, %57
            exit_if  # if_2
          }
        }
        %58:bool = load %x_105
        if %58 [t: $B10] {  # if_3
          $B10: {  # true
            %59:i32 = load %directions
            %60:i32 = add %59, 1i
            store %directions, %60
            exit_if  # if_3
          }
        }
        %61:i32 = load_vector_element %p, 1u
        %62:bool = gt %61, 0i
        %x_112:bool = let %62
        store %x_125, %x_112
        if %x_112 [t: $B11] {  # if_4
          $B11: {  # true
            %64:i32 = load_vector_element %p, 0u
            %65:i32 = load_vector_element %p, 1u
            %66:i32 = sub %65, 2i
            %67:i32 = mul %66, 16i
            %68:i32 = add %64, %67
            %69:ptr<private, i32, read_write> = access %map, %68
            %70:i32 = load %69
            %71:bool = eq %70, 0i
            store %x_124, %71
            %72:bool = load %x_124
            store %x_125, %72
            exit_if  # if_4
          }
        }
        %73:bool = load %x_125
        if %73 [t: $B12] {  # if_5
          $B12: {  # true
            %74:i32 = load %directions
            %75:i32 = add %74, 1i
            store %directions, %75
            exit_if  # if_5
          }
        }
        %76:i32 = load_vector_element %p, 0u
        %77:bool = lt %76, 14i
        %x_132:bool = let %77
        store %x_145, %x_132
        if %x_132 [t: $B13] {  # if_6
          $B13: {  # true
            %79:i32 = load_vector_element %p, 0u
            %80:i32 = add %79, 2i
            %81:i32 = load_vector_element %p, 1u
            %82:i32 = mul %81, 16i
            %83:i32 = add %80, %82
            %84:ptr<private, i32, read_write> = access %map, %83
            %85:i32 = load %84
            %86:bool = eq %85, 0i
            store %x_144, %86
            %87:bool = load %x_144
            store %x_145, %87
            exit_if  # if_6
          }
        }
        %88:bool = load %x_145
        if %88 [t: $B14] {  # if_7
          $B14: {  # true
            %89:i32 = load %directions
            %90:i32 = add %89, 1i
            store %directions, %90
            exit_if  # if_7
          }
        }
        %91:i32 = load_vector_element %p, 1u
        %92:bool = lt %91, 14i
        %x_152:bool = let %92
        store %x_165, %x_152
        if %x_152 [t: $B15] {  # if_8
          $B15: {  # true
            %94:i32 = load_vector_element %p, 0u
            %95:i32 = load_vector_element %p, 1u
            %96:i32 = add %95, 2i
            %97:i32 = mul %96, 16i
            %98:i32 = add %94, %97
            %99:ptr<private, i32, read_write> = access %map, %98
            %100:i32 = load %99
            %101:bool = eq %100, 0i
            store %x_164, %101
            %102:bool = load %x_164
            store %x_165, %102
            exit_if  # if_8
          }
        }
        %103:bool = load %x_165
        if %103 [t: $B16] {  # if_9
          $B16: {  # true
            %104:i32 = load %directions
            %105:i32 = add %104, 1i
            store %directions, %105
            exit_if  # if_9
          }
        }
        %x_229:ptr<function, bool, read_write> = var
        %x_230:ptr<function, bool, read_write> = var
        %x_242:ptr<function, bool, read_write> = var
        %x_243:ptr<function, bool, read_write> = var
        %x_281:ptr<function, bool, read_write> = var
        %x_282:ptr<function, bool, read_write> = var
        %x_295:ptr<function, bool, read_write> = var
        %x_296:ptr<function, bool, read_write> = var
        %x_335:ptr<function, bool, read_write> = var
        %x_336:ptr<function, bool, read_write> = var
        %x_348:ptr<function, bool, read_write> = var
        %x_349:ptr<function, bool, read_write> = var
        %x_387:ptr<function, bool, read_write> = var
        %x_388:ptr<function, bool, read_write> = var
        %x_400:ptr<function, bool, read_write> = var
        %x_401:ptr<function, bool, read_write> = var
        %122:i32 = load %directions
        %123:bool = eq %122, 0i
        if %123 [t: $B17, f: $B18] {  # if_10
          $B17: {  # true
            store %canwalk, false
            store %i, 0i
            loop [b: $B19, c: $B20] {  # loop_3
              $B19: {  # body
                %124:i32 = load %i
                %125:bool = lt %124, 8i
                if %125 [t: $B21, f: $B22] {  # if_11
                  $B21: {  # true
                    exit_if  # if_11
                  }
                  $B22: {  # false
                    exit_loop  # loop_3
                  }
                }
                store %j, 0i
                loop [b: $B23, c: $B24] {  # loop_4
                  $B23: {  # body
                    %126:i32 = load %j
                    %127:bool = lt %126, 8i
                    if %127 [t: $B25, f: $B26] {  # if_12
                      $B25: {  # true
                        exit_if  # if_12
                      }
                      $B26: {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %128:i32 = load %j
                    %129:i32 = mul %128, 2i
                    %130:i32 = load %i
                    %131:i32 = mul %130, 2i
                    %132:i32 = mul %131, 16i
                    %133:i32 = add %129, %132
                    %134:ptr<private, i32, read_write> = access %map, %133
                    %135:i32 = load %134
                    %136:bool = eq %135, 0i
                    if %136 [t: $B27] {  # if_13
                      $B27: {  # true
                        %137:i32 = load %j
                        %138:i32 = mul %137, 2i
                        store_vector_element %p, 0u, %138
                        %139:i32 = load %i
                        %140:i32 = mul %139, 2i
                        store_vector_element %p, 1u, %140
                        store %canwalk, true
                        exit_if  # if_13
                      }
                    }
                    continue  # -> $B24
                  }
                  $B24: {  # continuing
                    %141:i32 = load %j
                    %142:i32 = add %141, 1i
                    store %j, %142
                    next_iteration  # -> $B23
                  }
                }
                continue  # -> $B20
              }
              $B20: {  # continuing
                %143:i32 = load %i
                %144:i32 = add %143, 1i
                store %i, %144
                next_iteration  # -> $B19
              }
            }
            %145:i32 = load_vector_element %p, 0u
            %x_211:i32 = let %145
            %147:i32 = load_vector_element %p, 1u
            %x_213:i32 = let %147
            %149:i32 = mul %x_213, 16i
            %150:i32 = add %x_211, %149
            %151:ptr<private, i32, read_write> = access %map, %150
            store %151, 1i
            exit_if  # if_10
          }
          $B18: {  # false
            %152:i32 = load %v
            %153:i32 = load %directions
            %154:i32 = call %tint_mod_i32, %152, %153
            store %d, %154
            %156:i32 = load %v
            %157:i32 = load %directions
            %158:i32 = add %156, %157
            store %v, %158
            %159:i32 = load %d
            %160:bool = gte %159, 0i
            %x_224:bool = let %160
            store %x_230, %x_224
            if %x_224 [t: $B28] {  # if_14
              $B28: {  # true
                %162:i32 = load_vector_element %p, 0u
                %163:bool = gt %162, 0i
                store %x_229, %163
                %164:bool = load %x_229
                store %x_230, %164
                exit_if  # if_14
              }
            }
            %165:bool = load %x_230
            store %x_243, %165
            %166:bool = load %x_230
            if %166 [t: $B29] {  # if_15
              $B29: {  # true
                %167:i32 = load_vector_element %p, 0u
                %168:i32 = sub %167, 2i
                %169:i32 = load_vector_element %p, 1u
                %170:i32 = mul %169, 16i
                %171:i32 = add %168, %170
                %172:ptr<private, i32, read_write> = access %map, %171
                %173:i32 = load %172
                %174:bool = eq %173, 0i
                store %x_242, %174
                %175:bool = load %x_242
                store %x_243, %175
                exit_if  # if_15
              }
            }
            %176:bool = load %x_243
            if %176 [t: $B30] {  # if_16
              $B30: {  # true
                %177:i32 = load %d
                %178:i32 = sub %177, 1i
                store %d, %178
                %179:i32 = load_vector_element %p, 0u
                %x_249:i32 = let %179
                %181:i32 = load_vector_element %p, 1u
                %x_251:i32 = let %181
                %183:i32 = mul %x_251, 16i
                %184:i32 = add %x_249, %183
                %185:ptr<private, i32, read_write> = access %map, %184
                store %185, 1i
                %186:i32 = load_vector_element %p, 0u
                %x_256:i32 = let %186
                %188:i32 = load_vector_element %p, 1u
                %x_259:i32 = let %188
                %190:i32 = sub %x_256, 1i
                %191:i32 = mul %x_259, 16i
                %192:i32 = add %190, %191
                %193:ptr<private, i32, read_write> = access %map, %192
                store %193, 1i
                %194:i32 = load_vector_element %p, 0u
                %x_264:i32 = let %194
                %196:i32 = load_vector_element %p, 1u
                %x_267:i32 = let %196
                %198:i32 = sub %x_264, 2i
                %199:i32 = mul %x_267, 16i
                %200:i32 = add %198, %199
                %201:ptr<private, i32, read_write> = access %map, %200
                store %201, 1i
                %202:i32 = load_vector_element %p, 0u
                %203:i32 = sub %202, 2i
                store_vector_element %p, 0u, %203
                exit_if  # if_16
              }
            }
            %204:i32 = load %d
            %205:bool = gte %204, 0i
            %x_276:bool = let %205
            store %x_282, %x_276
            if %x_276 [t: $B31] {  # if_17
              $B31: {  # true
                %207:i32 = load_vector_element %p, 1u
                %208:bool = gt %207, 0i
                store %x_281, %208
                %209:bool = load %x_281
                store %x_282, %209
                exit_if  # if_17
              }
            }
            %210:bool = load %x_282
            store %x_296, %210
            %211:bool = load %x_282
            if %211 [t: $B32] {  # if_18
              $B32: {  # true
                %212:i32 = load_vector_element %p, 0u
                %x_286:i32 = let %212
                %214:i32 = load_vector_element %p, 1u
                %x_288:i32 = let %214
                %216:array<i32, 256> = load %map
                %x_291:array<i32, 256> = let %216
                store %map, array<i32, 256>(0i)
                store %map, %x_291
                %218:i32 = sub %x_288, 2i
                %219:i32 = mul %218, 16i
                %220:i32 = add %x_286, %219
                %221:ptr<private, i32, read_write> = access %map, %220
                %222:i32 = load %221
                %223:bool = eq %222, 0i
                store %x_295, %223
                %224:bool = load %x_295
                store %x_296, %224
                exit_if  # if_18
              }
            }
            %225:bool = load %x_296
            if %225 [t: $B33] {  # if_19
              $B33: {  # true
                %226:i32 = load %d
                %227:i32 = sub %226, 1i
                store %d, %227
                %228:i32 = load_vector_element %p, 0u
                %x_302:i32 = let %228
                %230:i32 = load_vector_element %p, 1u
                %x_304:i32 = let %230
                %232:i32 = mul %x_304, 16i
                %233:i32 = add %x_302, %232
                %234:ptr<private, i32, read_write> = access %map, %233
                store %234, 1i
                %235:i32 = load_vector_element %p, 0u
                %x_309:i32 = let %235
                %237:i32 = load_vector_element %p, 1u
                %x_311:i32 = let %237
                %239:i32 = sub %x_311, 1i
                %240:i32 = mul %239, 16i
                %241:i32 = add %x_309, %240
                %242:ptr<private, i32, read_write> = access %map, %241
                store %242, 1i
                %243:i32 = load_vector_element %p, 0u
                %x_317:i32 = let %243
                %245:i32 = load_vector_element %p, 1u
                %x_319:i32 = let %245
                %247:array<i32, 256> = load %map
                %x_321:array<i32, 256> = let %247
                store %map, array<i32, 256>(0i)
                store %map, %x_321
                %249:i32 = sub %x_319, 2i
                %250:i32 = mul %249, 16i
                %251:i32 = add %x_317, %250
                %252:ptr<private, i32, read_write> = access %map, %251
                store %252, 1i
                %253:i32 = load_vector_element %p, 1u
                %254:i32 = sub %253, 2i
                store_vector_element %p, 1u, %254
                exit_if  # if_19
              }
            }
            %255:i32 = load %d
            %256:bool = gte %255, 0i
            %x_330:bool = let %256
            store %x_336, %x_330
            if %x_330 [t: $B34] {  # if_20
              $B34: {  # true
                %258:i32 = load_vector_element %p, 0u
                %259:bool = lt %258, 14i
                store %x_335, %259
                %260:bool = load %x_335
                store %x_336, %260
                exit_if  # if_20
              }
            }
            %261:bool = load %x_336
            store %x_349, %261
            %262:bool = load %x_336
            if %262 [t: $B35] {  # if_21
              $B35: {  # true
                %263:i32 = load_vector_element %p, 0u
                %264:i32 = add %263, 2i
                %265:i32 = load_vector_element %p, 1u
                %266:i32 = mul %265, 16i
                %267:i32 = add %264, %266
                %268:ptr<private, i32, read_write> = access %map, %267
                %269:i32 = load %268
                %270:bool = eq %269, 0i
                store %x_348, %270
                %271:bool = load %x_348
                store %x_349, %271
                exit_if  # if_21
              }
            }
            %272:bool = load %x_349
            if %272 [t: $B36] {  # if_22
              $B36: {  # true
                %273:i32 = load %d
                %274:i32 = sub %273, 1i
                store %d, %274
                %275:i32 = load_vector_element %p, 0u
                %x_355:i32 = let %275
                %277:i32 = load_vector_element %p, 1u
                %x_357:i32 = let %277
                %279:i32 = mul %x_357, 16i
                %280:i32 = add %x_355, %279
                %281:ptr<private, i32, read_write> = access %map, %280
                store %281, 1i
                %282:i32 = load_vector_element %p, 0u
                %x_362:i32 = let %282
                %284:i32 = load_vector_element %p, 1u
                %x_365:i32 = let %284
                %286:i32 = add %x_362, 1i
                %287:i32 = mul %x_365, 16i
                %288:i32 = add %286, %287
                %289:ptr<private, i32, read_write> = access %map, %288
                store %289, 1i
                %290:i32 = load_vector_element %p, 0u
                %x_370:i32 = let %290
                %292:i32 = load_vector_element %p, 1u
                %x_373:i32 = let %292
                %294:i32 = add %x_370, 2i
                %295:i32 = mul %x_373, 16i
                %296:i32 = add %294, %295
                %297:ptr<private, i32, read_write> = access %map, %296
                store %297, 1i
                %298:i32 = load_vector_element %p, 0u
                %299:i32 = add %298, 2i
                store_vector_element %p, 0u, %299
                exit_if  # if_22
              }
            }
            %300:i32 = load %d
            %301:bool = gte %300, 0i
            %x_382:bool = let %301
            store %x_388, %x_382
            if %x_382 [t: $B37] {  # if_23
              $B37: {  # true
                %303:i32 = load_vector_element %p, 1u
                %304:bool = lt %303, 14i
                store %x_387, %304
                %305:bool = load %x_387
                store %x_388, %305
                exit_if  # if_23
              }
            }
            %306:bool = load %x_388
            store %x_401, %306
            %307:bool = load %x_388
            if %307 [t: $B38] {  # if_24
              $B38: {  # true
                %308:i32 = load_vector_element %p, 0u
                %309:i32 = load_vector_element %p, 1u
                %310:i32 = add %309, 2i
                %311:i32 = mul %310, 16i
                %312:i32 = add %308, %311
                %313:ptr<private, i32, read_write> = access %map, %312
                %314:i32 = load %313
                %315:bool = eq %314, 0i
                store %x_400, %315
                %316:bool = load %x_400
                store %x_401, %316
                exit_if  # if_24
              }
            }
            %317:bool = load %x_401
            if %317 [t: $B39] {  # if_25
              $B39: {  # true
                %318:i32 = load %d
                %319:i32 = sub %318, 1i
                store %d, %319
                %320:i32 = load_vector_element %p, 0u
                %x_407:i32 = let %320
                %322:i32 = load_vector_element %p, 1u
                %x_409:i32 = let %322
                %324:i32 = mul %x_409, 16i
                %325:i32 = add %x_407, %324
                %326:ptr<private, i32, read_write> = access %map, %325
                store %326, 1i
                %327:i32 = load_vector_element %p, 0u
                %x_414:i32 = let %327
                %329:i32 = load_vector_element %p, 1u
                %x_416:i32 = let %329
                %331:i32 = add %x_416, 1i
                %332:i32 = mul %331, 16i
                %333:i32 = add %x_414, %332
                %334:ptr<private, i32, read_write> = access %map, %333
                store %334, 1i
                %335:i32 = load_vector_element %p, 0u
                %x_422:i32 = let %335
                %337:i32 = load_vector_element %p, 1u
                %x_424:i32 = let %337
                %339:i32 = add %x_424, 2i
                %340:i32 = mul %339, 16i
                %341:i32 = add %x_422, %340
                %342:ptr<private, i32, read_write> = access %map, %341
                store %342, 1i
                %343:i32 = load_vector_element %p, 1u
                %344:i32 = add %343, 2i
                store_vector_element %p, 1u, %344
                exit_if  # if_25
              }
            }
            exit_if  # if_10
          }
        }
        %345:i32 = load_vector_element %ipos, 1u
        %346:i32 = mul %345, 16i
        %347:i32 = load_vector_element %ipos, 0u
        %348:i32 = add %346, %347
        %349:ptr<private, i32, read_write> = access %map, %348
        %350:i32 = load %349
        %351:bool = eq %350, 1i
        if %351 [t: $B40] {  # if_26
          $B40: {  # true
            store %x_GLF_color, vec4<f32>(1.0f)
            ret
          }
        }
        continue  # -> $B8
      }
      $B8: {  # continuing
        %352:bool = load %canwalk
        %x_444:bool = let %352
        %354:bool = eq %x_444, false
        break_if %354  # -> [t: exit_loop loop_2, f: $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 {
  $B41: {
    store %gl_FragCoord, %gl_FragCoord_param
    %357:void = call %main_1
    %358:vec4<f32> = load %x_GLF_color
    %359:main_out = construct %358
    ret %359
  }
}
%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B42: {
    %362:bool = eq %rhs, 0i
    %363:bool = eq %lhs, -2147483648i
    %364:bool = eq %rhs, -1i
    %365:bool = and %363, %364
    %366:bool = or %362, %365
    %367:i32 = select %rhs, 1i, %366
    %368:i32 = let %367
    %369:i32 = div %lhs, %368
    %370:i32 = mul %369, %368
    %371:i32 = sub %lhs, %370
    ret %371
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B43: {
    %373:i32 = convert %value
    %374:bool = gte %value, -2147483648.0f
    %375:i32 = select -2147483648i, %373, %374
    %376:bool = lte %value, 2147483520.0f
    %377:i32 = select 2147483647i, %375, %376
    ret %377
  }
}

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