?? c8_3_1.c
字號:
int syn_acc_c
( const unsigned char *restrict byte_i,
unsigned char *s1,
unsigned char *s2,
const unsigned char *restrict beta,
const unsigned char *restrict beta_RS_N_4,
const unsigned char *restrict beta_RS_N_2,
const unsigned char *restrict beta_RS_3N_4,
const unsigned char *restrict beta_RS_5N_4,
int RS_N,
int RS_2T )
{
double betadword0, betadword1, beta4dword0, beta4dword1;
double beta2dword0, beta2dword1, beta3dword0, beta3dword1;
double beta5dword0;//, beta5dword1;
double *betaptr, *beta4ptr, *beta2ptr, *beta3ptr, *beta5ptr;
unsigned int betaword0, betaword1, betaword2, betaword3;
unsigned int beta4word0, beta4word1, beta4word2, beta4word3;
unsigned int beta2word0, beta2word1, beta2word2, beta2word3;
unsigned int beta3word0, beta3word1, beta3word2, beta3word3;
unsigned int beta5word0, beta5word1;
int N, i, offset1, offset2, offset3;
int offset4, offset5, offset6, offset7;
const unsigned char *byte_iptr, *byte_ioff1ptr, *byte_ioff2ptr;
const unsigned char *byte_ioff3ptr,*byte_ioff4ptr, *byte_ioff5ptr;
const unsigned char *byte_ioff6ptr, *byte_ioff7ptr;
unsigned int byteval, byteval1, byteval2, byteval3;
unsigned int byteval4, byteval5, byteval6, byteval7;
unsigned int s0_startval, s1_startval, s2_startval, s3_startval;
unsigned int s4_startval, s5_startval, s6_startval, s7_startval;
unsigned int s1_w0, s2_w0, s3_w0, s4_w0;
unsigned int s1_w1, s2_w1, s3_w1, s4_w1;
unsigned int s1_w2, s2_w2, s3_w2, s4_w2;
unsigned int s1_w3, s2_w3, s3_w3, s4_w3;
unsigned int iters;
int r, t, st, status, modval, diff, val;
int zero = 0;
int ret0, ret1, ret2, ret3, ret10, ret23, ret;
unsigned int byte_i0, byte_i1, byte_i2, byte_i3;
unsigned int byte_i4, byte_i5, byte_i6, byte_i7;
unsigned int tmp1w0, tmp1w1, tmp1w2, tmp1w3;
unsigned int tmp2w0, tmp2w1, tmp2w2, tmp2w3;
unsigned int tmp3w0, tmp3w1, tmp3w2, tmp3w3;
unsigned int tmp4w0, tmp4w1, tmp4w2, tmp4w3;
unsigned int temp;
unsigned int temp1w0, temp2w0, temp3w0, sum2w0, sum1w0, sumw0;
unsigned int temp1w1, temp2w1, temp3w1, sum2w1, sum1w1, sumw1;
unsigned int temp1w2, temp2w2, temp3w2, sum2w2, sum1w2, sumw2;
unsigned int temp1w3, temp2w3, temp3w3, sum2w3, sum1w3, sumw3;
unsigned int *s1ptr = (unsigned int *) (s1);
betaptr = (double *) (beta);
beta4ptr = (double *) (beta_RS_N_4);
beta2ptr = (double *) (beta_RS_N_2);
beta3ptr = (double *) (beta_RS_3N_4);
beta5ptr = (double *) (beta_RS_5N_4);
betadword0 = betaptr[0]; betadword1 = betaptr[1];
beta4dword0 = beta4ptr[0]; beta4dword1 = beta4ptr[1];
beta2dword0 = beta2ptr[0]; beta2dword1 = beta2ptr[1];
beta3dword0 = beta3ptr[0]; beta3dword1 = beta3ptr[1];
beta5dword0 = beta5ptr[0];
betaword0 = _lo(betadword0); betaword1 = _hi(betadword0);
betaword2 = _lo(betadword1); betaword3 = _hi(betadword1);
beta4word0 = _lo(beta4dword0); beta4word1 = _hi(beta4dword0);
beta4word2 = _lo(beta4dword1); beta4word3 = _hi(beta4dword1);
beta2word0 = _lo(beta2dword0); beta2word1 = _hi(beta2dword0);
beta2word2 = _lo(beta2dword1); beta2word3 = _hi(beta2dword1);
beta3word0 = _lo(beta3dword0); beta3word1 = _hi(beta3dword0);
beta3word2 = _lo(beta3dword1); beta3word3 = _hi(beta3dword1);
beta5word0 = _lo(beta5dword0); beta5word1 = _hi(beta5dword0);
N = RS_N;
r = 4;
t = RS_2T >> 1;
status = (t < 5) ? 1:0;
if (status) r = 8;
temp = N + r;
val = r - 1;
modval = temp & val;
if (!modval) modval = r;
diff = r - modval;
N = N + diff;
offset1 = N >> 3; offset2 = N >> 2; offset4 = N >> 1;
offset3 = offset1 + offset2; offset5 = offset1 + offset4; offset6 = offset2 + offset4; offset7 = offset1 + offset6; offset1 -= diff; offset2 -= diff;
offset3 -= diff; offset4 -= diff; offset5 -= diff; offset6 -= diff; offset7 -= diff;
byte_iptr = byte_i; byte_ioff1ptr = byte_iptr + offset1;
byte_ioff2ptr = byte_iptr + offset2; byte_ioff3ptr = byte_iptr + offset3;
byte_ioff4ptr = byte_iptr + offset4; byte_ioff5ptr = byte_iptr + offset5;
byte_ioff6ptr = byte_iptr + offset6; byte_ioff7ptr = byte_iptr + offset7;
byteval = 0;
if (!diff) byteval = *byte_iptr++;
if (diff) diff--;
byteval1 = *byte_ioff1ptr++; byteval2 = *byte_ioff2ptr++;
byteval3 = *byte_ioff3ptr++; byteval4 = *byte_ioff4ptr++;
byteval5 = *byte_ioff5ptr++; byteval6 = *byte_ioff6ptr++;
byteval7 = *byte_ioff7ptr++;
st = status;
iters = N >> 2;
if (st) iters = N >> 3;
iters--;
temp = _pack2(byteval,byteval);
s1_startval = _packl4(temp, temp);
s0_startval = s1_startval;
temp = _pack2(byteval1,byteval1);
if (st) s0_startval = _packl4(temp,temp);
temp = _pack2(byteval2,byteval2);
s3_startval = _packl4(temp, temp);
s2_startval = s3_startval;
temp = _pack2(byteval3,byteval3);
if (st) s2_startval = _packl4(temp,temp);
temp = _pack2(byteval4,byteval4);
s5_startval = _packl4(temp, temp);
s4_startval = s5_startval;
temp = _pack2(byteval5,byteval5);
if (st) s4_startval = _packl4(temp,temp);
temp = _pack2(byteval6,byteval6);
s7_startval = _packl4(temp, temp);
s6_startval = s7_startval;
temp = _pack2(byteval7,byteval7);
if (st) s6_startval = _packl4(temp,temp);
s1_w0 = s1_w1 = s1_startval; s2_w0 = s2_w1 = s3_startval;
s3_w0 = s3_w1 = s5_startval; s4_w0 = s4_w1 = s7_startval;
s1_w2 = s1_w3 = s0_startval; s2_w2 = s2_w3 = s2_startval;
s3_w2 = s3_w3 = s4_startval; s4_w2 = s4_w3 = s6_startval;
for ( i = 0; i < iters; i++)
{
if (!diff) byteval = *byte_iptr++;
if (diff) diff--;
byteval2 = *byte_ioff2ptr++;
byteval4 = *byte_ioff4ptr++;
byteval6 = *byte_ioff6ptr++;
if (st) byteval1 = *byte_ioff1ptr++;
if (st) byteval3 = *byte_ioff3ptr++;
if (st) byteval5 = *byte_ioff5ptr++;
if (st) byteval7 = *byte_ioff7ptr++;
temp = _pack2(byteval, byteval);
byte_i1 = byte_i0 = _packl4(temp,temp);
temp = _pack2(byteval1,byteval1);
if (st) byte_i1 = _packl4(temp,temp);
temp = _pack2(byteval2, byteval2);
byte_i3 = byte_i2 = _packl4(temp,temp);
temp = _pack2(byteval3,byteval3);
if (st) byte_i3 = _packl4(temp,temp);
temp = _pack2(byteval4, byteval4);
byte_i5 = byte_i4 = _packl4(temp,temp);
temp = _pack2(byteval5,byteval5);
if (st) byte_i5 = _packl4(temp,temp);
temp = _pack2(byteval6, byteval6);
byte_i7 = byte_i6 = _packl4(temp,temp);
temp = _pack2(byteval7,byteval7);
if (st) byte_i7 = _packl4(temp,temp);
tmp1w0 = _gmpy4(s1_w0, betaword0);
s1_w0 = tmp1w0 ^ byte_i0;
tmp2w0 = _gmpy4(s2_w0, betaword0);
s2_w0 = tmp2w0 ^ byte_i2;
tmp3w0 = _gmpy4(s3_w0, betaword0);
s3_w0 = tmp3w0 ^ byte_i4;
tmp4w0 = _gmpy4(s4_w0, betaword0);
s4_w0 = tmp4w0 ^ byte_i6;
tmp1w1 = _gmpy4(s1_w1, betaword1);
s1_w1 = tmp1w1 ^ byte_i0;
tmp2w1 = _gmpy4(s2_w1, betaword1);
s2_w1 = tmp2w1 ^ byte_i2;
tmp3w1 = _gmpy4(s3_w1, betaword1);
s3_w1 = tmp3w1 ^ byte_i4;
tmp4w1 = _gmpy4(s4_w1, betaword1);
tmp1w2 = _gmpy4(s1_w2, betaword2);
s1_w2 = tmp1w2 ^ byte_i1;
tmp2w2 = _gmpy4(s2_w2, betaword2);
s2_w2 = tmp2w2 ^ byte_i3;
tmp3w2 = _gmpy4(s3_w2, betaword2);
s3_w2 = tmp3w2 ^ byte_i5;
tmp4w2 = _gmpy4(s4_w2, betaword2);
s4_w2 = tmp4w2 ^ byte_i7;
tmp1w3 = _gmpy4(s1_w3, betaword3);
s1_w3 = tmp1w3 ^ byte_i1;
tmp2w3 = _gmpy4(s2_w3, betaword3);
s2_w3 = tmp2w3 ^ byte_i3;
tmp3w3 = _gmpy4(s3_w3, betaword3);
s3_w3 = tmp3w3 ^ byte_i5;
tmp4w3 = _gmpy4(s4_w3, betaword3);
s4_w3 = tmp4w3 ^ byte_i7;
temp2w0 = _gmpy4(s2_w0, beta2word0);
temp3w0 = _gmpy4(s3_w0, beta4word0);
sum2w0 = temp1w0 ^ temp2w0;
if (st) s4_w0 = _gmpy4(s4_w0,beta5word0);
sum1w0 = temp3w0 ^ s4_w0;
sumw0 = sum1w0 ^ sum2w0;
temp1w1 = _gmpy4(s1_w1, beta3word1);
temp2w1 = _gmpy4(s2_w1, beta2word1);
temp3w1 = _gmpy4(s3_w1, beta4word1);
sum2w1 = temp1w1 ^ temp2w1;
if (st) s4_w1 = _gmpy4(s4_w1,beta5word1);
sum1w1 = temp3w1 ^ s4_w1;
sumw1 = sum1w1 ^ sum2w1;
temp1w2 = _gmpy4(s1_w2, beta3word2);
temp2w2 = _gmpy4(s2_w2, beta2word2);
temp3w2 = _gmpy4(s3_w2, beta4word2);
sum2w2 = temp1w2 ^ temp2w2;
sum1w2 = temp3w2 ^ s4_w2;
sumw2 = sum1w2 ^ sum2w2;
temp1w3 = _gmpy4(s1_w3, beta3word3);
temp2w3 = _gmpy4(s2_w3, beta2word3);
temp3w3 = _gmpy4(s3_w3, beta4word3);
sum2w3 = temp1w3 ^ temp2w3;
sum1w3 = temp3w3 ^ s4_w3;
sumw3 = sum1w3 ^ sum2w3;
if (st) sumw0 = sumw0 ^ sumw2;
if (st) sumw1 = sumw1 ^ sumw3;
*s1ptr++ = sumw0; *s1ptr++ = sumw1;
ret0 = _cmpgtu4(sumw0, zero); ret1 = _cmpgtu4(sumw1, zero);
ret10 = ret0 + ret1;
if (!st) *s1ptr++ = sumw2; if (!st) *s1ptr++ = sumw3;
ret2 = _cmpgtu4(sumw2, zero); ret3 = _cmpgtu4(sumw3, zero);
ret23 = ret2 + ret3;
ret = 0;
if (!st) ret = ret10 + ret23;
if (st) ret = ret10;
if (ret) ret = 1;
return(ret);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -