summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bx/tests/atomic_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bx/tests/atomic_test.cpp')
-rw-r--r--3rdparty/bx/tests/atomic_test.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/3rdparty/bx/tests/atomic_test.cpp b/3rdparty/bx/tests/atomic_test.cpp
new file mode 100644
index 00000000000..81b3318e8c0
--- /dev/null
+++ b/3rdparty/bx/tests/atomic_test.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2010-2017 Branimir Karadzic. All rights reserved.
+ * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
+ */
+
+#include "test.h"
+#include <bx/cpu.h>
+
+TEST_CASE("atomic", "")
+{
+ uint32_t test = 1337;
+ uint32_t fetched;
+
+ fetched = bx::atomicFetchAndAdd(&test, 52u);
+ REQUIRE(fetched == 1337);
+ REQUIRE(test == 1389);
+
+ fetched = bx::atomicAddAndFetch(&test, 64u);
+ REQUIRE(fetched == 1453);
+ REQUIRE(test == 1453);
+
+ fetched = bx::atomicFetchAndSub(&test, 64u);
+ REQUIRE(fetched == 1453);
+ REQUIRE(test == 1389);
+
+ fetched = bx::atomicSubAndFetch(&test, 52u);
+ REQUIRE(fetched == 1337);
+ REQUIRE(test == 1337);
+
+ fetched = bx::atomicFetchAndAddsat(&test, 52u, 1453u);
+ REQUIRE(fetched == 1337);
+ REQUIRE(test == 1389);
+
+ fetched = bx::atomicFetchAndAddsat(&test, 1000u, 1453u);
+ REQUIRE(fetched == 1389);
+ REQUIRE(test == 1453);
+
+ fetched = bx::atomicFetchAndSubsat(&test, 64u, 1337u);
+ REQUIRE(fetched == 1453);
+ REQUIRE(test == 1389);
+
+ fetched = bx::atomicFetchAndSubsat(&test, 1000u, 1337u);
+ REQUIRE(fetched == 1389);
+ REQUIRE(test == 1337);
+
+}