Author: j16sdiz
Date: 2009-03-31 01:27:30 +0000 (Tue, 31 Mar 2009)
New Revision: 26263

Modified:
   trunk/contrib/fec/src/csrc/Makefile
   trunk/contrib/fec/src/csrc/fec.c
Log:
Use -funroll-loop instead of manual unrolling.

Modern GCC unroll 32-levels for this, which give the simliar performance.
(aka "my compiler is smarter then you" optimization)

Modified: trunk/contrib/fec/src/csrc/Makefile
===================================================================
--- trunk/contrib/fec/src/csrc/Makefile 2009-03-31 01:27:19 UTC (rev 26262)
+++ trunk/contrib/fec/src/csrc/Makefile 2009-03-31 01:27:30 UTC (rev 26263)
@@ -10,7 +10,7 @@
 
 CC?=gcc
 # COPT= -O9 -funroll-loops
-COPT= -O1
+COPT= -O1 -funroll-loops
 CFLAGS?=$(COPT) -Wall -fPIC
 SRCS= fec.c Makefile test.c
 DOCS= README fec.3

Modified: trunk/contrib/fec/src/csrc/fec.c
===================================================================
--- trunk/contrib/fec/src/csrc/fec.c    2009-03-31 01:27:19 UTC (rev 26262)
+++ trunk/contrib/fec/src/csrc/fec.c    2009-03-31 01:27:30 UTC (rev 26263)
@@ -334,42 +334,16 @@
 #define addmul(dst, src, c, sz) \
     if (c != 0) addmul1(dst, src, c, sz)
 
-#define UNROLL 16 /* 1, 4, 8, 16 */
 static void
 addmul1(gf *dst1, gf *src1, gf c, int sz)
 {
     USE_GF_MULC ;
     register gf *dst = dst1, *src = src1 ;
-    gf *lim = &dst[sz - UNROLL + 1] ;
+    gf *lim = &dst[sz] ;
 
     GF_MULC0(c) ;
 
-#if (UNROLL > 1) /* unrolling by 8/16 is quite effective on the pentium */
-    for (; dst < lim ; dst += UNROLL, src += UNROLL ) {
-       GF_ADDMULC( dst[0] , src[0] );
-       GF_ADDMULC( dst[1] , src[1] );
-       GF_ADDMULC( dst[2] , src[2] );
-       GF_ADDMULC( dst[3] , src[3] );
-#if (UNROLL > 4)
-       GF_ADDMULC( dst[4] , src[4] );
-       GF_ADDMULC( dst[5] , src[5] );
-       GF_ADDMULC( dst[6] , src[6] );
-       GF_ADDMULC( dst[7] , src[7] );
-#endif
-#if (UNROLL > 8)
-       GF_ADDMULC( dst[8] , src[8] );
-       GF_ADDMULC( dst[9] , src[9] );
-       GF_ADDMULC( dst[10] , src[10] );
-       GF_ADDMULC( dst[11] , src[11] );
-       GF_ADDMULC( dst[12] , src[12] );
-       GF_ADDMULC( dst[13] , src[13] );
-       GF_ADDMULC( dst[14] , src[14] );
-       GF_ADDMULC( dst[15] , src[15] );
-#endif
-    }
-#endif
-    lim += UNROLL - 1 ;
-    for (; dst < lim; dst++, src++ )           /* final components */
+    for (; dst < lim; dst++, src++ )
        GF_ADDMULC( *dst , *src );
 }
 

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to