/***** Worker thread *****/ void* worker(void* arg) { int iter = *((int*)arg); for (int i=0;i<iter;i++) { if (sync_m) { add_m(&counter,1); add_m(&counter,-1); } else if (sync_s) { add_s(&counter,1); add_s(&counter,-1); } else if (sync_c) { add_c(&counter,1); add_c(&counter,-1); } else { add(&counter,1); add(&counter,-1); } } }
extern "C" ENCODER_DECLARE_EXPORT char * encoder_mem(Mnemonic m, OpndSize size, int disp, int base_reg, bool isBasePhysical, char * stream) { EncoderBase::Operands args; add_m(args, base_reg, disp, size); char* stream_start = stream; stream = (char *)EncoderBase::encode(stream, m, args); #ifdef PRINT_ENCODER_STREAM printEncoderInst(m, args); decodeThenPrint(stream_start); #endif return stream; }
extern "C" ENCODER_DECLARE_EXPORT char * encoder_mem_fp(Mnemonic m, OpndSize size, int disp, int base_reg, bool isBasePhysical, int reg, char * stream) { EncoderBase::Operands args; // a fake FP register as operand add_fp(args, reg, size == OpndSize_64/*is_double*/); add_m(args, base_reg, disp, size); char* stream_start = stream; stream = (char *)EncoderBase::encode(stream, m, args); #ifdef PRINT_ENCODER_STREAM printEncoderInst(m, args); decodeThenPrint(stream_start); #endif return stream; }
void Date::add_d() { if (++dy >= current_dpm()) { dy = 0; add_m(); } }