SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: SB_RW = struct @align(4) {
  arg_0:atomic<u32> @offset(0)
}

__atomic_compare_exchange_result_u32 = struct @align(4) {
  old_value:u32 @offset(0)
  exchanged:bool @offset(4)
}

$B1: {  # root
  %sb_rw:ptr<storage, SB_RW, read_write> = var @binding_point(0, 0)
}

%atomicCompareExchangeWeak_63d8e6 = func():void {
  $B2: {
    %arg_1:ptr<function, u32, read_write> = var, 1u
    %arg_2:ptr<function, u32, read_write> = var, 1u
    %5:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
    %6:u32 = load %arg_1
    %7:u32 = load %arg_2
    %8:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %5, %6, %7
    %res:ptr<function, __atomic_compare_exchange_result_u32, read_write> = var, %8
    ret
  }
}
%fragment_main = @fragment func():void {
  $B3: {
    %11:void = call %atomicCompareExchangeWeak_63d8e6
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B4: {
    %13:void = call %atomicCompareExchangeWeak_63d8e6
    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.  *
********************************************************************
