3 #include "libinterface.h"
5 /* atomic */ int flag1, flag2;
11 uint64_t var = 0, var2 = 0;
13 void p0() {MC2_nextOpLoad(MCID_NODEP);
15 MCID _mq; _mq=MC2_nextOpLoad(MCID_NODEP); int q = load_64(&flag1);
17 MCID _m_cond0_m=MC2_nextOpLoad(MCID_NODEP);
18 int _cond0 = load_64(&flag1);
19 MCID _cond0_m = MC2_function_id(1, 1, sizeof(_cond0), _cond0);
21 _br0 = MC2_branchUsesID(_cond0_m, 1, 2, true);
25 else { _br0 = MC2_branchUsesID(_cond0_m, 0, 2, true); MC2_merge(_br0);
27 MC2_nextOpLoad(MCID_NODEP);
28 int _cond1 = !load_64(&flag1);
29 MCID _cond1_m = MC2_function_id(2, 1, sizeof(_cond1), _cond1);
31 _br1 = MC2_branchUsesID(_cond1_m, 0, 2, true);
35 else { _br1 = MC2_branchUsesID(_cond1_m, 1, 2, true); MC2_merge(_br1);
39 MCID _rmw0 = MC2_nextRMW(MCID_NODEP, MCID_NODEP, MCID_NODEP);
40 rmw_64(CAS, &flag1, var, var2);
41 MCID _rmw1 = MC2_nextRMW(MCID_NODEP, MCID_NODEP, MCID_NODEP);
42 int r = rmw_64(CAS, &flag1, var, var2);
44 MCID _rmw2 = MC2_nextRMW(MCID_NODEP, MCID_NODEP, MCID_NODEP);
46 int _cond2 = rmw_64(CAS, &flag1, var, var2);
47 MCID _cond2_m = MC2_function_id(3, 1, sizeof(_cond2), _cond2);
49 _br2 = MC2_branchUsesID(_cond2_m, 1, 2, true);
53 else { _br2 = MC2_branchUsesID(_cond2_m, 0, 2, true); MC2_merge(_br2);