X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fcmodelint.h;h=fc76eb2e2c4fc74cb8933ea94b9ec35f6a7d930a;hb=1c3a286b9bf208163f478abaf2fe5b44d21d9823;hp=8530827cfe39b5cf673efa3e047a8f987f7642a1;hpb=827e70acafdfd05e339e6d17fd43594c398fe200;p=c11tester.git diff --git a/include/cmodelint.h b/include/cmodelint.h index 8530827c..fc76eb2e 100644 --- a/include/cmodelint.h +++ b/include/cmodelint.h @@ -10,8 +10,11 @@ #if __cplusplus using std::memory_order; extern "C" { +#else +typedef int bool; #endif + uint64_t model_read_action(void * obj, memory_order ord); void model_write_action(void * obj, memory_order ord, uint64_t val); void model_init_action(void * obj, uint64_t val); @@ -22,12 +25,23 @@ void model_rmwc_action(void *obj, memory_order ord); void model_fence_action(memory_order ord); uint64_t model_rmwr_action_helper(void *obj, int atomic_index, const char *position); - uint64_t model_rmwrcas_action_helper(void *obj, int atomic_index, uint64_t oval, int size, const char *position); +uint64_t model_rmwrcas_action_helper(void *obj, int atomic_index, uint64_t oval, int size, const char *position); void model_rmw_action_helper(void *obj, uint64_t val, int atomic_index, const char *position); void model_rmwc_action_helper(void *obj, int atomic_index, const char *position); // void model_fence_action_helper(int atomic_index); /* the following functions are used by llvm pass */ +// cds volatile loads +uint8_t cds_volatile_load8(void * obj, const char * position); +uint16_t cds_volatile_load16(void * obj, const char * position); +uint32_t cds_volatile_load32(void * obj, const char * position); +uint64_t cds_volatile_load64(void * obj, const char * position); + +// cds volatile stores +void cds_volatile_store8(void * obj, uint8_t val, const char * position); +void cds_volatile_store16(void * obj, uint16_t val, const char * position); +void cds_volatile_store32(void * obj, uint32_t val, const char * position); +void cds_volatile_store64(void * obj, uint64_t val, const char * position); void cds_atomic_init8(void * obj, uint8_t val, const char * position); void cds_atomic_init16(void * obj, uint16_t val, const char * position); @@ -77,27 +91,30 @@ uint32_t cds_atomic_fetch_xor32(void* addr, uint32_t val, int atomic_index, cons uint64_t cds_atomic_fetch_xor64(void* addr, uint64_t val, int atomic_index, const char * position); // cds atomic compare and exchange (strong) -uint8_t cds_atomic_compare_exchange8_v1(void* addr, uint8_t expected, uint8_t desire, - int atomic_index_succ, int atomic_index_fail, const char *position); -uint16_t cds_atomic_compare_exchange16_v1(void* addr, uint16_t expected, uint16_t desire, - int atomic_index_succ, int atomic_index_fail, const char *position); -uint32_t cds_atomic_compare_exchange32_v1(void* addr, uint32_t expected, uint32_t desire, - int atomic_index_succ, int atomic_index_fail, const char *position); -uint64_t cds_atomic_compare_exchange64_v1(void* addr, uint64_t expected, uint64_t desire, - int atomic_index_succ, int atomic_index_fail, const char *position); - -bool cds_atomic_compare_exchange8_v2(void* addr, uint8_t* expected, uint8_t desired, - int atomic_index_succ, int atomic_index_fail, const char *position); -bool cds_atomic_compare_exchange16_v2(void* addr, uint16_t* expected, uint16_t desired, - int atomic_index_succ, int atomic_index_fail, const char *position); -bool cds_atomic_compare_exchange32_v2(void* addr, uint32_t* expected, uint32_t desired, - int atomic_index_succ, int atomic_index_fail, const char *position); -bool cds_atomic_compare_exchange64_v2(void* addr, uint64_t* expected, uint64_t desired, - int atomic_index_succ, int atomic_index_fail, const char *position); +uint8_t cds_atomic_compare_exchange8_v1(void* addr, uint8_t expected, uint8_t desire, + int atomic_index_succ, int atomic_index_fail, const char *position); +uint16_t cds_atomic_compare_exchange16_v1(void* addr, uint16_t expected, uint16_t desire, + int atomic_index_succ, int atomic_index_fail, const char *position); +uint32_t cds_atomic_compare_exchange32_v1(void* addr, uint32_t expected, uint32_t desire, + int atomic_index_succ, int atomic_index_fail, const char *position); +uint64_t cds_atomic_compare_exchange64_v1(void* addr, uint64_t expected, uint64_t desire, + int atomic_index_succ, int atomic_index_fail, const char *position); + +bool cds_atomic_compare_exchange8_v2(void* addr, uint8_t* expected, uint8_t desired, + int atomic_index_succ, int atomic_index_fail, const char *position); +bool cds_atomic_compare_exchange16_v2(void* addr, uint16_t* expected, uint16_t desired, + int atomic_index_succ, int atomic_index_fail, const char *position); +bool cds_atomic_compare_exchange32_v2(void* addr, uint32_t* expected, uint32_t desired, + int atomic_index_succ, int atomic_index_fail, const char *position); +bool cds_atomic_compare_exchange64_v2(void* addr, uint64_t* expected, uint64_t desired, + int atomic_index_succ, int atomic_index_fail, const char *position); // cds atomic thread fence void cds_atomic_thread_fence(int atomic_index, const char * position); +void cds_func_entry(const char * funcName); +void cds_func_exit(const char * funcName); + #if __cplusplus } #endif