Hi all, on the hunt for more CPU efficiency i changed the SIMD functionality of the devel_0_37 branch completely. Now there's a modular interface for SIMD implementations for different platforms... the main file is m_simd.h where the choice is made which implementation to choose. Currently there's only compile-time selection of platform and compiler, no actual detection of SIMD features like SSE or Altivec. For the different implementations the files m_simd_sse_vc.{h,c} for Intel/Visualc, m_simd_sse_gcc.{h,c} for Intel/gcc and m_simd_ve_gcc.{h,c} for Altivec/gcc have been added. Only the sse/vc implementation is almost complete (with the exception of [/~] ), the sse/gcc ports should be easy to add on that basis.
Interestingly, when updating my cvs directories on linux and OSX the new files weren't added.... i had to do a checkout for that. I hope it works for you. The other thing is that i'm not sure if the prefix m_* for the new file is according to the pd file naming standard. Please correct it if not (or tell me).
Furthermore there seems to be an inconsistency in the PD code for [/~]. For the slow (non perf8-) implementation there's no check for division by 0, whereas that is made for the unrolled version. It seems that such a check is very difficult for SIMD code, that why that function is still lacking.
best greetings, Thomas