X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=include%2Fcmodelint.h;h=1c456b89f7ec82260d6f6bcf5106449b5eba5add;hp=24c5f6fb67353b97d24351ef9e8f32c08e437155;hb=0229244d21ca78bf781e41684810e9fb6d5ca56c;hpb=beedbb56b50163e4fbf2cbc44785ebd962d1692d diff --git a/include/cmodelint.h b/include/cmodelint.h index 24c5f6fb..1c456b89 100644 --- a/include/cmodelint.h +++ b/include/cmodelint.h @@ -20,6 +20,68 @@ void model_rmw_action(void *obj, memory_order ord, uint64_t val); void model_rmwc_action(void *obj, memory_order ord); void model_fence_action(memory_order ord); +// void model_init_action_helper(void * obj, uint64_t val); +uint64_t model_rmwr_action_helper(void *obj, int atomic_index); +void model_rmw_action_helper(void *obj, int atomic_index, uint64_t val); +void model_rmwc_action_helper(void *obj, int atomic_index); +void model_fence_action_helper(int atomic_index); + +// WL +uint8_t cds_atomic_load8(void * obj, int atomic_index); +uint16_t cds_atomic_load16(void * obj, int atomic_index); +uint32_t cds_atomic_load32(void * obj, int atomic_index); +uint64_t cds_atomic_load64(void * obj, int atomic_index); + +void cds_atomic_store8(void * obj, int atomic_index, uint8_t val); +void cds_atomic_store16(void * obj, int atomic_index, uint16_t val); +void cds_atomic_store32(void * obj, int atomic_index, uint32_t val); +void cds_atomic_store64(void * obj, int atomic_index, uint64_t val); + + +// cds atomic exchange +uint8_t cds_atomic_exchange8(void* addr, int atomic_index, uint8_t val); +uint16_t cds_atomic_exchange16(void* addr, int atomic_index, uint16_t val); +uint32_t cds_atomic_exchange32(void* addr, int atomic_index, uint32_t val); +uint64_t cds_atomic_exchange64(void* addr, int atomic_index, uint64_t val); +// cds atomic fetch add +uint8_t cds_atomic_fetch_add8(void* addr, int atomic_index, uint8_t val); +uint16_t cds_atomic_fetch_add16(void* addr, int atomic_index, uint16_t val); +uint32_t cds_atomic_fetch_add32(void* addr, int atomic_index, uint32_t val); +uint64_t cds_atomic_fetch_add64(void* addr, int atomic_index, uint64_t val); +// cds atomic fetch sub +uint8_t cds_atomic_fetch_sub8(void* addr, int atomic_index, uint8_t val); +uint16_t cds_atomic_fetch_sub16(void* addr, int atomic_index, uint16_t val); +uint32_t cds_atomic_fetch_sub32(void* addr, int atomic_index, uint32_t val); +uint64_t cds_atomic_fetch_sub64(void* addr, int atomic_index, uint64_t val); +// cds atomic fetch and +uint8_t cds_atomic_fetch_and8(void* addr, int atomic_index, uint8_t val); +uint16_t cds_atomic_fetch_and16(void* addr, int atomic_index, uint16_t val); +uint32_t cds_atomic_fetch_and32(void* addr, int atomic_index, uint32_t val); +uint64_t cds_atomic_fetch_and64(void* addr, int atomic_index, uint64_t val); +// cds atomic fetch or +uint8_t cds_atomic_fetch_or8(void* addr, int atomic_index, uint8_t val); +uint16_t cds_atomic_fetch_or16(void* addr, int atomic_index, uint16_t val); +uint32_t cds_atomic_fetch_or32(void* addr, int atomic_index, uint32_t val); +uint64_t cds_atomic_fetch_or64(void* addr, int atomic_index, uint64_t val); +// cds atomic fetch xor +uint8_t cds_atomic_fetch_xor8(void* addr, int atomic_index, uint8_t val); +uint16_t cds_atomic_fetch_xor16(void* addr, int atomic_index, uint16_t val); +uint32_t cds_atomic_fetch_xor32(void* addr, int atomic_index, uint32_t val); +uint64_t cds_atomic_fetch_xor64(void* addr, int atomic_index, uint64_t val); + +// cds atomic compare and exchange (strong) + +uint8_t cds_atomic_compare_exchange8(void* addr, uint8_t expected, + uint8_t desire, int atomic_index_succ, int atomic_index_fail ); +uint16_t cds_atomic_compare_exchange16(void* addr, uint16_t expected, + uint16_t desire, int atomic_index_succ, int atomic_index_fail ); +uint32_t cds_atomic_compare_exchange32(void* addr, uint32_t expected, + uint32_t desire, int atomic_index_succ, int atomic_index_fail ); +uint64_t cds_atomic_compare_exchange64(void* addr, uint64_t expected, + uint64_t desire, int atomic_index_succ, int atomic_index_fail ); + +// cds atomic thread fence +void cds_atomic_thread_fence(int atomic_index); #if __cplusplus }