SKIP: FAILED

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

%firstLeadingBit_000ff3 = func():void {
  $B2: {
    %arg_0:ptr<function, vec4<u32>, read_write> = var, vec4<u32>(1u)
    %4:vec4<u32> = load %arg_0
    %5:vec4<u32> = let %4
    %6:vec4<u32> = and %5, vec4<u32>(4294901760u)
    %7:vec4<bool> = eq %6, vec4<u32>(0u)
    %8:vec4<u32> = select vec4<u32>(16u), vec4<u32>(0u), %7
    %9:vec4<u32> = let %8
    %10:vec4<u32> = shr %5, %9
    %11:vec4<u32> = and %10, vec4<u32>(65280u)
    %12:vec4<bool> = eq %11, vec4<u32>(0u)
    %13:vec4<u32> = select vec4<u32>(8u), vec4<u32>(0u), %12
    %14:vec4<u32> = let %13
    %15:vec4<u32> = shr %10, %14
    %16:vec4<u32> = and %15, vec4<u32>(240u)
    %17:vec4<bool> = eq %16, vec4<u32>(0u)
    %18:vec4<u32> = select vec4<u32>(4u), vec4<u32>(0u), %17
    %19:vec4<u32> = let %18
    %20:vec4<u32> = shr %15, %19
    %21:vec4<u32> = and %20, vec4<u32>(12u)
    %22:vec4<bool> = eq %21, vec4<u32>(0u)
    %23:vec4<u32> = select vec4<u32>(2u), vec4<u32>(0u), %22
    %24:vec4<u32> = let %23
    %25:vec4<u32> = shr %20, %24
    %26:vec4<u32> = and %25, vec4<u32>(2u)
    %27:vec4<bool> = eq %26, vec4<u32>(0u)
    %28:vec4<u32> = select vec4<u32>(1u), vec4<u32>(0u), %27
    %29:vec4<u32> = or %24, %28
    %30:vec4<u32> = or %19, %29
    %31:vec4<u32> = or %14, %30
    %32:vec4<u32> = or %9, %31
    %33:vec4<bool> = eq %25, vec4<u32>(0u)
    %34:vec4<u32> = select %32, vec4<u32>(4294967295u), %33
    %res:ptr<function, vec4<u32>, read_write> = var, %34
    %36:vec4<u32> = load %res
    store %prevent_dce, %36
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %38:void = call %firstLeadingBit_000ff3
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %40:void = call %firstLeadingBit_000ff3
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %42:void = call %firstLeadingBit_000ff3
    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.  *
********************************************************************
