This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

_lror_ doesn't work properly

Everytime I try to use the _lror_ it works fine several times... but if there's an overflow the variable is set to 0x00000000

//here's the test programm

void main(void)
{ unsigned long test = 0x80000000; test = _lror_(test,1);
}

//to get it working I created my own lror but it's a lot more bigger than the intrinsic _lror_

unsigned long lror(unsigned long input, unsigned int count)
{

unsigned int itmp1,itmp2; bit bit1,bit2;

while(count-->0) { itmp1 = input; input = input>>16; itmp2 = input; bit1 = itmp1 & 0x1; bit2 = itmp2 & 0x1; itmp1 &= 0xfffe; itmp2 &= 0xfffe; itmp1 |= bit2; itmp2 |= bit1; itmp1 = _iror_(itmp1,1); itmp2 = _iror_(itmp2,1); input = itmp2; input = input<<16; input |= itmp1; } return input;
}

Parents Reply Children