Update of /cvsroot/pure-data/externals/grill/flext/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13886/source
Modified Files: flsimd.cpp Log Message: fixed severe Altivec bug
Index: flsimd.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/source/flsimd.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** flsimd.cpp 12 Mar 2005 04:56:34 -0000 1.20 --- flsimd.cpp 1 Sep 2005 23:29:52 -0000 1.21 *************** *** 336,343 **** vector unsigned char permuteVector = vec_lvsl( 0, (int*) v ); vector unsigned char low = vec_ld( 0, v ); ! vector unsigned char high = vec_ld( 16, v ); return vec_perm( low, high, permuteVector ); }
//! Store a vector to an unaligned location in memory inline void StoreUnaligned( vector unsigned char v, vector unsigned char *where) --- 336,344 ---- vector unsigned char permuteVector = vec_lvsl( 0, (int*) v ); vector unsigned char low = vec_ld( 0, v ); ! vector unsigned char high = vec_ld( 15, v ); return vec_perm( low, high, permuteVector ); }
+ /* //! Store a vector to an unaligned location in memory inline void StoreUnaligned( vector unsigned char v, vector unsigned char *where) *************** *** 362,365 **** --- 363,367 ---- vec_st( high, 16, where ); } + */
inline vector float LoadUnaligned(const float *v ) *************** *** 368,375 **** --- 370,379 ---- }
+ /* inline void StoreUnaligned( vector float v,float *where) { return StoreUnaligned((vector unsigned char)v,(vector unsigned char *)where); } + */
inline bool IsVectorAligned(const void *where) *************** *** 404,408 **** inline vector float LoadValue(const float &f) { ! return IsVectorAligned(&f)?vec_splat(vec_ld(0,(vector float *)&f),0):LoadUnaligned(&f); } #endif --- 408,412 ---- inline vector float LoadValue(const float &f) { ! return vec_splat(IsVectorAligned(&f)?vec_ld(0,(vector float *)&f):LoadUnaligned(&f),0); } #endif