Cliff Kelley and I have developed a Free Software GPS receiver over the last few years. It originally was a hardware based receiver, but now we're excited about doing the correlations in software. We've got the entire correlator in integer math and I've try to optimize it the best I can. It runs about real-time now, but I was hoping someone with more assembly expertise could take a look at it and see if we can't squeeze some more speed out of it. About six lines of code use about 99% of the run time. Seems like someone who could help us use a few special instructions could really make a big impact. The code is on sourceforge under the project "osgps". The lines of code in question are in the file correlator.c from about lines 220 to 228. I can send you an input file, but you can also just make up some random data to feed it as an input file just to test the speed. Thanks, Rick Niles. Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls Ts/call Ts/call name 13.26 4.24 4.24 Sim_GP2021_int (correlator.c:220 @ 8056e9d) 9.21 7.17 2.94 Sim_GP2021_int (correlator.c:224 @ 8056ec9) 8.63 9.93 2.75 Sim_GP2021_int (correlator.c:212 @ 8056e68) 7.63 12.37 2.44 Sim_GP2021_int (correlator.c:216 @ 8056e8e) 6.45 14.43 2.06 Sim_GP2021_int (correlator.c:221 @ 8056eb8) 6.36 16.45 2.03 Sim_GP2021_int (correlator.c:224 @ 8056ec3) 6.14 18.41 1.96 Sim_GP2021_int (correlator.c:215 @ 8056e8a) 5.14 20.05 1.64 Sim_GP2021_int (correlator.c:226 @ 8056ecc) 4.40 21.46 1.41 Sim_GP2021_int (correlator.c:221 @ 8056eb2) 3.66 22.63 1.17 Sim_GP2021_int (correlator.c:241 @ 8056f1c) 3.60 23.78 1.15 Sim_GP2021_int (correlator.c:227 @ 8056ee1) 3.15 24.79 1.00 Sim_GP2021_int (correlator.c:235 @ 8056f00) 3.04 25.75 0.97 Sim_GP2021_int (correlator.c:220 @ 8056eb5) 2.82 26.66 0.90 Sim_GP2021_int (correlator.c:265 @ 8057030) 2.69 27.52 0.86 Sim_GP2021_int (correlator.c:225 @ 8056ed2) 2.69 28.38 0.86 Sim_GP2021_int (correlator.c:237 @ 8056f11) 2.49 29.17 0.80 Sim_GP2021_int (correlator.c:219 @ 8056e92) 1.55 29.66 0.49 Sim_GP2021_int (correlator.c:227 @ 8056ee8) 1.50 30.14 0.48 Sim_GP2021_int (correlator.c:231 @ 8056eee) 1.33 30.57 0.42 Sim_GP2021_int (correlator.c:216 @ 8056e87) 1.05 30.91 0.34 Sim_GP2021_int (correlator.c:219 @ 8056e77) 1.05 31.24 0.34 Sim_GP2021_int (correlator.c:232 @ 8056ef6)