model: add is_acquire() and is_release() helper functions
authorBrian Norris <banorris@uci.edu>
Sun, 29 Apr 2012 19:57:05 +0000 (12:57 -0700)
committerBrian Norris <banorris@uci.edu>
Sun, 29 Apr 2012 19:57:05 +0000 (12:57 -0700)
model.cc
model.h

index f0709103f10c0ecafea972e08c78a6716a109136..84b296e56b109e2a4295d312c1a7746a5267d30c 100644 (file)
--- a/model.cc
+++ b/model.cc
@@ -261,6 +261,30 @@ bool ModelAction::is_write()
        return type == ATOMIC_WRITE;
 }
 
+bool ModelAction::is_acquire()
+{
+       switch (order) {
+       case memory_order_acquire:
+       case memory_order_acq_rel:
+       case memory_order_seq_cst:
+               return true;
+       default:
+               return false;
+       }
+}
+
+bool ModelAction::is_release()
+{
+       switch (order) {
+       case memory_order_release:
+       case memory_order_acq_rel:
+       case memory_order_seq_cst:
+               return true;
+       default:
+               return false;
+       }
+}
+
 bool ModelAction::same_var(ModelAction *act)
 {
        return location == act->location;
diff --git a/model.h b/model.h
index 4472c5b2b0c7499373e226e0aee40a7cfe432ae8..d04fa6208a35a5498c4e8bc54c1067afa5078187 100644 (file)
--- a/model.h
+++ b/model.h
@@ -39,6 +39,8 @@ public:
 
        bool is_read();
        bool is_write();
+       bool is_acquire();
+       bool is_release();
        bool same_var(ModelAction *act);
        bool same_thread(ModelAction *act);
        bool is_dependent(ModelAction *act);