Hi,
I just started to work on some loop vectorizing for my project. Some weeks ago I got a snapshot of GCC-4.1-20050313. It compiled my code but I was not able to get the auto-vectorization working. (Yes, I understand why)
I decided to try sse intrinsics (X86 Built-in Functions as the manual says) instead of auto-vectorization.
I wrote some lines:
typedef int v4sf __attribute__ ((mode(V4SF)));
typedef union _vec4f { v4sf v; float f[4]; } vec4f;
Blah bla
for( j = 32; j ; j--, prW += 4, pr += 4 ){ vec0 = __builtin_ia32_loadups(pr); vec1 = __builtin_ia32_loadups(prW); vec3 = __builtin_ia32_mulps(vec0, vec1); sum.v = __builtin_ia32_addps(sum.v, vec3); }
and this works fine when I compile with GCC 3.4.2
However... If I try to compile this with the GCC 4.1 snapshot I get errors and warnings:
/msys/1.0/local/bin/gcc.exe -O3 -msse -Wall -DHAVE_CONFIG_H -I. -I.. -c -o neuralnet.o neuralnet.c
neuralnet.c:447: warning: specifying vector types with __attribute__ ((mode)) is deprecated
neuralnet.c:447: warning: use __attribute__ ((vector_size)) instead
neuralnet.c:447: error: mode 'V4SF' applied to inappropriate type
neuralnet.c: In function 'Evaluate':
neuralnet.c:510: error: incompatible type for argument 1 of '__builtin_ia32_xorps'
neuralnet.c:510: error: incompatible type for argument 2 of '__builtin_ia32_xorps'
neuralnet.c:510: error: incompatible types in assignment
neuralnet.c:512: error: incompatible types in assignment
neuralnet.c:513: error: incompatible types in assignment
neuralnet.c:514: error: incompatible type for argument 1 of '__builtin_ia32_mulps'
neuralnet.c:514: error: incompatible type for argument 2 of '__builtin_ia32_mulps'
neuralnet.c:514: error: incompatible types in assignment
neuralnet.c:515: error: incompatible type for argument 1 of '__builtin_ia32_addps'
neuralnet.c:515: error: incompatible type for argument 2 of '__builtin_ia32_addps'
neuralnet.c:515: error: incompatible types in assignment
make: *** [neuralnet.o] Error 1
So... from when was __attribute__ ((mode)) deprecated? How do I declear the v4sf vector type?
Will the right declaration of v4sf type fix the incompatible type in assignment and argument problems?
Thanks for any help! -Øystein