SKIP: FAILED

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

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