LINUX.ORG.RU
ФорумTalks

2Silvy


0

0
megabaks@localhost ~ $ ./optimize /usr/bin/mplayer
instructions:
 cpuid: 13	 nop: 25701	 call: 55218	 count: 1668410
 i486:	 3684
 i586:	 3
 i686:	 7047
 mmx:	 120560
 sse:	 5414
 sse2:	 4853
 sse3:	 755
 ssse3:	 247
 sse4.1:	 1003
 3dnow!:	 1904
 3dnowext:	 13

откуда 3Dnow*??? optimize - бинарник собранный из твоего *.c

★★★★

Ответ на: комментарий от Sylvia

ps: Qt )

$ analyze-x86 /usr/lib/qt4/libQtGui.so
instructions:
cpuid: 3    nop: 15341    call: 177469    count: 1876685
i686:    10252
mmx:    4653
sse:    151
sse2:    3332
3dnow!:    76

Sylvia ★★★★★
()
Ответ на: комментарий от megabaks

USE не контролирует все и вся

./configure --prefix=/usr --confdir=/etc/mplayer --codecsdir=/usr/lib/codecs \ --libdir=/usr/lib --enable-gl --enable-xv --enable-x11 --enable-xshape \ --language=en,ru --charset=utf8 \ --enable-mmx --enable-mmxext --enable-sse --enable-sse2 --disable-3dnow --disable-3dnowext \ --enable-theora --enable-shm --enable-radio --enable-vdpau

даже в таком варианте будет 3dnow(ext) они все равно не используются, делается cpuid а дальше уже работает тот код который подходит, mplayer - комбайн из ffmpeg и других библиотек, так что у него конфигурация не слишком гибкая

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

хм

megabaks@localhost ~ $ ./optimize /usr/lib/qt4/libQtGui.so
instructions:
cpuid: 3    nop: 47666    call: 191907    count: 2167855
i686:    10686
mmx:    4942
sse:    175
sse2:    515
sse3:    3374
sse4.1:    55
3dnow!:    79

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

в qt тоже используются вставки )
в целом если программа или библиотека использует мультимедиа или требует быстрой обработки графики, то с высокой степенью вероятности там окажется mmx , 3dnow или sse вставка на asm

Sylvia ★★★★★
()
Ответ на: комментарий от megabaks

соберите и без первого и без второго
и все равно будет и sse и 3dnow, там явно написаный кусок кода на asm

-mfpmath=sse включает sse (sse/sse2) генератор инструкций для математики
-ftree-vectorize - для остального кода, где возможно.

флаги компилятора не влияют на вставки, если там написано 3dnow, значит так и будет включен этот кусок, если там sse - значит даже если соберете с -mno-sse , в бинарике все равно будет sse

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

это да - но нафига тогда математика? тем более она не знает про sse4.1 например...

megabaks ★★★★
() автор топика

:)

~$ ./analyze /usr/bin/mplayer
instructions:                             
 cpuid: 17       nop: 28972      call: 64951     count: 2243883
 486:    4552                                                  
 586:    3                                                     
 686:    6                                                     
 MMX:    158344                                                
 SSE:    5926                                                  
 SSE2:   158495                                                
 SSE3:   18                                                    
 3DNOW:  3390                                                  
 3DNOWEXT:       5002                                          
 SSSE3:  317
~$ cat /etc/issue
Debian GNU/Linux squeeze/sid 

To Silvy: thx за программку

fluorite ★★★★★
()
Ответ на: комментарий от megabaks

Кхм. Т.е., компилятор не умеет определять, есть ли определенные инструкции у тебя в процессоре? Что-то я тогда не понял, зачем march=native например.

NekoExMachina
()
Ответ на: комментарий от NekoExMachina

во-первых натив не умеет например атомы
во-вторых даже если я говорю что у мну корка - оно всё равно генерит 3dnow*
если тока запретить...хотя если это «железно» в коде, то хоть оботключайся (

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

>натив не умеет например атомы
GCC 4.5 умеет, и патченные версии 4.4 тоже

во-вторых даже если я говорю что у мну корка - оно всё равно генерит 3dnow*

если тока запретить...хотя если это «железно» в коде, то хоть оботключайся (




разве я это не написала выше? Это «железно» в коде, в виде asm вставки, которую написали вручную как asm

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

if (gCpuCaps.has3DNow) {
__asm__ volatile («femms\n\t»:::«memory»);
}
else if (gCpuCaps.hasMMX) {
__asm__ volatile («emms\n\t»:::«memory»);
}


вот например кусок кода, если есть 3DNow то будет выполнена femms ,
если нет - emms.
GCC это никак не обрабатывает, а включает как есть


Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

4.5 еще не зарелизили - или я это проспал?
4.4 патчить тоже будет далеко не каждый
итого искаропки атомы гцц пока не умеет :)

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

в генте же кажется в багзилле висели патчи на атом?
в дебиане (shimon пишет) патча на атом нет


в redhat ( fedora ) - есть

Sylvia ★★★★★
()
Ответ на: комментарий от megabaks

> да-да - в том числе и флудят/оффтопят!

по делу есть что сказать?

(извините, не могу удержаться:)

есть, вот: Cильвия, что вы делаете сегодня вечером?

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

>есть, вот: Cильвия, что вы делаете сегодня вечером?

В школу она пойдет, на родительское собрание. Отдыхай, мальчик.

Sun-ch
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.