On Tue, 1 Aug 2006, james tittle wrote:
...sounds good: I've just been learning about templates and generic programming in general...on my to-do list, I've long dreamed of adding macstl (don't be fooled by the name, it supports altivec/sse/sse2) support to pd and friends: you might wanna take a look, it's just some headers :-)
I've been using manual (that is, non-gcc) loop unrolling since 2001 in GridFlow, using macros, and indeed it's a lot faster than without unrolling. You don't need C++ templates to do generic programming.
At one point I replaced part of the macros by C++ templates to make it easier to swallow for C++ dudes. Turns out it's more complicated and it's not any faster and then there are still macros left for doing the things that C++ templates just can't do. The only alternative for the remaining macros is to copy and paste.
Btw GridFlow doesn't do much SIMD and has some problems with alignment, which may explain some of its speed problems... but GridFlow surely does nice loop-unrolling.
(note: Recent versions of GCC do better loop-unrolling on their own than GCC 2.95 did back when I started)
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju | Freelance Digital Arts Engineer, Montréal QC Canada