//$WW,1$You may wonder why I use "&" instead of "%".

#define SAMPLE_SIZE 		100000000

U0 TimeIns()
{
	I64 start1, end1, start2, end2, overhead_time, test_time;
	I64 reg i, reg tmp;

	CPURep;

	//Measure Loop Overhead
	start1 = TSCGet;
	for (i = 0; i < SAMPLE_SIZE; i++)
	{
	}
	end1 = TSCGet;
	overhead_time = end1 - start1;

	//Measure remainder...
	start2 = TSCGet;
	for (i = 0; i < SAMPLE_SIZE; i++)
		tmp = i % 0x400;
	end2 = TSCGet;
	test_time = end2 - start2;
	"Remainder Version #1 Cycles\t: %10.5f\n", ToF64(test_time - overhead_time) / SAMPLE_SIZE;

	//Measure remainder...
	start2 = TSCGet;
	for (i = 0; i < SAMPLE_SIZE; i++)
		tmp = i & 0x3FF;
	end2 = TSCGet;
	test_time = end2 - start2;
	"Remainder Version #2 Cycles\t: %10.5f\n", ToF64(test_time - overhead_time) / SAMPLE_SIZE;
}

TimeIns;

/*	Program Output$HL,0$$WW+H,1$$FD,1$
8 Cores 2.660GHz
Remainder Version #1 Cycles 		: 	26.85345
Remainder Version #2 Cycles 		: 	-0.00800
$HL,1$*/
