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

%firstTrailingBit_cb51ce = 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>(65535u)
    %7:vec3<bool> = eq %6, vec3<u32>(0u)
    %8:vec3<u32> = select vec3<u32>(0u), vec3<u32>(16u), %7
    %9:vec3<u32> = let %8
    %10:vec3<u32> = shr %5, %9
    %11:vec3<u32> = and %10, vec3<u32>(255u)
    %12:vec3<bool> = eq %11, vec3<u32>(0u)
    %13:vec3<u32> = select vec3<u32>(0u), vec3<u32>(8u), %12
    %14:vec3<u32> = let %13
    %15:vec3<u32> = shr %10, %14
    %16:vec3<u32> = and %15, vec3<u32>(15u)
    %17:vec3<bool> = eq %16, vec3<u32>(0u)
    %18:vec3<u32> = select vec3<u32>(0u), vec3<u32>(4u), %17
    %19:vec3<u32> = let %18
    %20:vec3<u32> = shr %15, %19
    %21:vec3<u32> = and %20, vec3<u32>(3u)
    %22:vec3<bool> = eq %21, vec3<u32>(0u)
    %23:vec3<u32> = select vec3<u32>(0u), vec3<u32>(2u), %22
    %24:vec3<u32> = let %23
    %25:vec3<u32> = shr %20, %24
    %26:vec3<u32> = and %25, vec3<u32>(1u)
    %27:vec3<bool> = eq %26, vec3<u32>(0u)
    %28:vec3<u32> = select vec3<u32>(0u), vec3<u32>(1u), %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 %firstTrailingBit_cb51ce
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %40:void = call %firstTrailingBit_cb51ce
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %42:void = call %firstTrailingBit_cb51ce
    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.  *
********************************************************************
