/*---------------------------------------------------------------------------+ | shr_Xsig.S | | | | 12 byte right shift function | | | | Copyright (C) 1992,1994,1995 | | W. Metzenthen, 22 Parker St, Ormond, Vic 3163, | | Australia. E-mail billm@jacobi.maths.monash.edu.au | | | | | | Extended shift right function. | | Fastest for small shifts. | | Shifts the 12 byte quantity pointed to by the first arg (arg) | | right by the number of bits specified by the second arg (nr). | | | +---------------------------------------------------------------------------*/ #include "fpu_emu.h" #include "poly.h" void shr_Xsig(Xsig *arg, const int nr) { int n = nr; while ( n >= 32 ) { arg->lsw = arg->midw; arg->midw = arg->msw; arg->msw = 0; n -= 32; } if ( n <= 0 ) return; arg->lsw = (arg->lsw >> n) | (arg->midw << (32-n)); arg->midw = (arg->midw >> n) | (arg->msw << (32-n)); arg->msw >>= n; }