diff options
Diffstat (limited to '3rdparty/bx/tests/atomic_test.cpp')
-rw-r--r-- | 3rdparty/bx/tests/atomic_test.cpp | 46 |
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); + +} |