SKIP: FAILED

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

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