Hi On Wed, Jan 21, 2015 at 01:26:18AM +0530, supraja reddy wrote: > Hello, > > Thanks for you reviews. > > I see this is only use during init but if it still matters speedwise > > and assuming this is a galois field multiplication the it can be > > written as > > > > EXP_GF256[LOG_GF256[a] + LOG_GF256[b]] (for a!=0 && b!=0) > > > > Do you want me to insert tables EXP_GF256 and LOG_GF256 in the code or are > there any existing tables ?
i think there are no existing tables > > I have updated the patch with other changes suggested. Please let me know > if there is anything else to be changed. > [...] > +static uint32_t tf_h(uint32_t X, uint32_t L[4], int k) > +{ > + uint8_t y[4], l[4]; > + AV_WL32(y, X); > + if (k == 4) { > + AV_WL32(l, L[3]); > + y[0] = q1[y[0]] ^ l[0]; > + y[1] = q0[y[1]] ^ l[1]; > + y[2] = q0[y[2]] ^ l[2]; > + y[3] = q1[y[3]] ^ l[3]; > + } > + if (k >= 3) { > + AV_WL32(l, L[2]); > + y[0] = q1[y[0]] ^ l[0]; > + y[1] = q1[y[1]] ^ l[1]; > + y[2] = q0[y[2]] ^ l[2]; > + y[3] = q0[y[3]] ^ l[3]; > + } > + AV_WL32(l, L[1]); > + y[0] = q1[q0[q0[y[0]] ^ l[0]] ^ (L[0] & 0xff)]; > + y[1] = q0[q0[q1[y[1]] ^ l[1]] ^ ((L[0] >> 8) & 0xff)]; > + y[2] = q1[q1[q0[y[2]] ^ l[2]] ^ ((L[0] >> 16) & 0xff)]; > + y[3] = q0[q1[q1[y[3]] ^ l[3]] ^ (L[0] >> 24)]; > + > + l[0] = y[0] ^ MD2[y[1]] ^ MD1[y[2]] ^ MD1[y[3]]; > + l[1] = MD1[y[0]] ^ MD2[y[1]] ^ MD2[y[2]] ^ y[3]; > + l[2] = MD2[y[0]] ^ MD1[y[1]] ^ y[2] ^ MD2[y[3]]; > + l[3] = MD2[y[0]] ^ y[1] ^ MD2[y[2]] ^ MD1[y[3]]; > + > + return AV_RL32(l); > +} I think this can be implemented with a few 8bit->32bit LUTs which are computed during init [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB When you are offended at any man's fault, turn to yourself and study your own failings. Then you will forget your anger. -- Epictetus
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel