SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %prevent_dce:ptr<storage, vec3<f16>, read_write> = var @binding_point(2, 0)
}

%mix_c1aec6 = func():void {
  $B2: {
    %arg_0:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
    %arg_1:ptr<function, vec3<f16>, read_write> = var, vec3<f16>(1.0h)
    %arg_2:ptr<function, f16, read_write> = var, 1.0h
    %6:vec3<f16> = load %arg_0
    %7:vec3<f16> = load %arg_1
    %8:f16 = load %arg_2
    %9:vec3<f16> = mix %6, %7, %8
    %res:ptr<function, vec3<f16>, read_write> = var, %9
    %11:vec3<f16> = load %res
    store %prevent_dce, %11
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %13:void = call %mix_c1aec6
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %15:void = call %mix_c1aec6
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %17:void = call %mix_c1aec6
    ret
  }
}

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