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