SKIP: FAILED

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

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