edits
[cdsspec-compiler.git] / benchmark / ms-queue / my_queue.c
index d5e889db0113c288d23d9703b813f8a708f9ee1f..fdea1a4bab7148323c07d0edc6d5e5ba62d4b9ce 100644 (file)
@@ -140,11 +140,11 @@ void enqueue(queue_t *q, unsigned int val)
                                unsigned int ptr = get_ptr(atomic_load_explicit(&q->nodes[get_ptr(tail)].next, acquire));
                                pointer value = MAKE_POINTER(ptr,
                                                get_count(tail) + 1);
-                               /****FIXME: miss ****/
+                               /**** SPEC (sequential, testcase2.c) ****/
                                // Second release can be just relaxed
                                bool succ = false;
                                succ = atomic_compare_exchange_strong_explicit(&q->tail,
-                                               &tail, value, release, relaxed);
+                                               &tail, value, relaxed, relaxed);
                                if (succ) {
                                        //printf("miss2_enqueue CAS succ\n");
                                }
@@ -194,6 +194,7 @@ bool dequeue(queue_t *q, int *retVal)
                 * relaxed (it introduces a bug when there's two dequeuers and one
                 * enqueuer) correctness bug!!
                 */
+               /**** SPEC (sequential) (testcase1.c) ****/
                /**** New bug ****/
                tail = atomic_load_explicit(&q->tail, acquire);
 
@@ -214,13 +215,13 @@ bool dequeue(queue_t *q, int *retVal)
                                if (get_ptr(next) == 0) { // NULL       
                                        return false; // NULL
                                }
-                               /**** FIXME: miss ****/
+                               /**** SPEC (sequential testcase3.c) ****/
                                // Second release can be just relaxed
                                bool succ = false;
                                succ = atomic_compare_exchange_strong_explicit(&q->tail,
                                                &tail,
                                                MAKE_POINTER(get_ptr(next), get_count(tail) + 1),
-                                               release, relaxed);
+                                                       release, relaxed);
                                if (succ) {
                                        //printf("miss4_dequeue CAS succ\n");
                                }