save
[cdsspec-compiler.git] / benchmark / cliffc-hashtable / cliffc_hashtable.h
index ff5d9c32f793c1b2e9965e3c3d9d880729be846e..645531fbc241b16806d445233842c5d463911e5d 100644 (file)
@@ -259,7 +259,7 @@ friend class CHM;
                        kvs_data *desired = (kvs_data*) NULL;
                        kvs_data *expected = (kvs_data*) newkvs; 
                        if (!_newkvs.compare_exchange_strong(desired, expected, memory_order_release,
-                                       memory_order_release)) {
+                                       memory_order_relaxed)) {
                                // Should clean the allocated area
                                delete newkvs;
                                newkvs = _newkvs.load(memory_order_acquire);
@@ -283,7 +283,7 @@ friend class CHM;
                                        copyidx = _copy_idx.load(memory_order_acquire);
                                        while (copyidx < (oldlen << 1) &&
                                                !_copy_idx.compare_exchange_strong(copyidx, copyidx +
-                                                       min_copy_work, memory_order_release, memory_order_release))
+                                                       min_copy_work, memory_order_release, memory_order_relaxed))
                                                copyidx = _copy_idx.load(memory_order_relaxed);
                                        if (!(copyidx < (oldlen << 1)))
                                                panic_start = copyidx;
@@ -332,7 +332,7 @@ friend class CHM;
                                topmap->_kvs.load(memory_order_acquire) == oldkvs) {
                                kvs_data *newkvs = _newkvs.load(memory_order_acquire);
                                topmap->_kvs.compare_exchange_strong(oldkvs, newkvs, memory_order_release,
-                                       memory_order_release);
+                                       memory_order_relaxed);
                        }
                }
        
@@ -648,7 +648,7 @@ friend class CHM;
        // inserted keys
        static inline bool CAS_key(kvs_data *kvs, int idx, void *expected, void *desired) {
                return kvs->_data[2 * idx + 2].compare_exchange_strong(expected,
-                       desired, memory_order_release, memory_order_release);
+                       desired, memory_order_release, memory_order_relaxed);
        }
 
        /**
@@ -660,7 +660,7 @@ friend class CHM;
        static inline bool CAS_val(kvs_data *kvs, int idx, void *expected, void
                *desired) {
                bool res =  kvs->_data[2 * idx + 3].compare_exchange_strong(expected,
-                       desired, memory_order_release, memory_order_release);
+                       desired, memory_order_release, memory_order_relaxed);
                /**
                        # If it is a successful put instead of a copy or any other internal
                        # operantions, expected != NULL