Linkowanie statyczne.

Pawel Sikora pluto w pld-linux.org
Czw, 4 Lis 2004, 11:42:06 CET


On Thu, 4 Nov 2004, Roman Werpachowski wrote:

> Pawel Sikora wrote:
>> On Thu, 4 Nov 2004, Piotr Wawrzyniak wrote:
>> 
>>> glibc kompilowa³em z trochê innymi flagami ni¿ jest to robione w pld, mo¿e 
>>> to
>>> jest problemem.
>>> [piotr w timemachine ~/programowanie]$ echo $CFLAGS
>>> -Os -march=pentium4 -mcpu=pentium4 -mfpmath=sse -msse2 -mmmx -s -pipe -z
>>> combreloc -DBDEBUG -DG_DISABLE_ASSERT -fomit-frame-pointer
>> 
>> 
>> -msse2 -mmmx sa wlaczane przez -march=pentium4 wiec ich podawanie
>> jest w tym przypadku zbedne.
>
> Tak na marginesie, to co daje? Wg info gcc przeczniki jedynie umoliwiaj 
> korzystanie z rozszerzonych instrukcji, tak wic nie wystarczy programu 
> przekompilowa, trzeba go przepisa.

no bo umozliwiaja. ot prosty przyklad:

typedef double d2[2];
d2 x, y, z;

void test()
{
     z[0] = x[0] + y[0];
     z[1] = x[1] + y[1];
}

gcc -s -S e.c -O2 -fomit-frame-pointer -ffast-math -march=pentium4

test:
         fldl    y
         faddl   x
         fstpl   z
         fldl    y+8
         faddl   x+8
         fstpl   z+8
         ret

gcc -s -S e.c -O2 -fomit-frame-pointer -ffast-math -march=pentium4
-mfpmath=sse

test:
         movsd   y, %xmm0
         addsd   x, %xmm0
         movsd   %xmm0, z
         movsd   y+8, %xmm0
         addsd   x+8, %xmm0
         movsd   %xmm0, z+8
         ret


jak widac kompilator umie skorzystac takze z sseX.
jednakoz duzo lepsze efekty daje przepisanie kodu pod katem
rownoleglych obliczen. przydatne sa wtedy typy i metody
zdefiniowane w plikach:

/usr/lib/gcc/pentium3-pld-linux/3.4.3/include/emmintrin.h
/usr/lib/gcc/pentium3-pld-linux/3.4.3/include/mmintrin.h
/usr/lib/gcc/pentium3-pld-linux/3.4.3/include/pmmintrin.h
/usr/lib/gcc/pentium3-pld-linux/3.4.3/include/xmmintrin.h


Więcej informacji o liście dyskusyjnej pld-devel-pl