main.c 884 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright (C) 2023 Midokura Japan KK. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #include <assert.h>
  6. #include "bh_platform.h"
  7. #include "bh_atomic.h"
  8. int
  9. main(int argc, char **argv)
  10. {
  11. bh_atomic_32_t v;
  12. uint32 o;
  13. v = 0x00ff00ff;
  14. o = BH_ATOMIC_32_LOAD(v);
  15. assert(o == 0x00ff00ff);
  16. v = 0x00ff00ff;
  17. o = BH_ATOMIC_32_FETCH_OR(v, 0xffff0000);
  18. assert(o == 0x00ff00ff);
  19. assert(v == 0xffff00ff);
  20. v = 0x00ff00ff;
  21. o = BH_ATOMIC_32_FETCH_AND(v, 0xffff0000);
  22. assert(o == 0x00ff00ff);
  23. assert(v == 0x00ff0000);
  24. v = 0x00ff00ff;
  25. o = BH_ATOMIC_32_FETCH_ADD(v, 0x10101);
  26. assert(o == 0x00ff00ff);
  27. assert(v == 0x00ff00ff + 0x10101);
  28. v = 0x00ff00ff;
  29. o = BH_ATOMIC_32_FETCH_SUB(v, 0x10101);
  30. assert(o == 0x00ff00ff);
  31. assert(v == 0x00ff00ff - 0x10101);
  32. return 0;
  33. }