Pawel Sikora wrote:

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.

Nie o tym mÃwiÅem. Same -msse2 -mmmx (bez -mpfpmath) nie dajÄ tego, a -mfpmath=sse ustawia te przeÅÄczniki i tak.


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





_______________________________________________
pld-devel-pl mailing list
[EMAIL PROTECTED]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl

Odpowiedź listem elektroniczym