Имею:
- amd64
- процессор Dual core Intel Core i3-2350M
-
-march=sandybridge -mmmx -mno-3dnow -msse -msse2 -msse3 -mssse3 -mno-sse4a -mcx16 -msahf -mno-movbe -mno-aes -mno-sha -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mavx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt -mno-rtm -mno-hle -mno-rdrnd -mno-f16c -mno-fsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt -mno-avx512f -mno-avx512er -mno-avx512cd -mno-avx512pf -mno-prefetchwt1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=3072 -mtune=sandybridge
-
mmx: 114236 sse: 47786 sse2: 153737 sse3: 24 ssse3: 2746 sse4.1: 191 3dnow!: 612 3dnowext: 5270 avx: 28832
Составил примерно следующее для оптимизации именно под свой процессор:
CPU_FLAGS_X86="mmx sse sse2 ssse3 sse4_1 sse4_2" # Это на глаз, потом воспользуюсь cpuinfo2cpuflags.
CFLAGS="-O2 -march=sandybridge -mtune=generic -pipe -mmmx -msse -msse2 -msse3 -mssse3"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
MAKEOPTS="-j5"
PORTAGE_NICENESS=19
PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}"
- Обязательно ли перечислять все инструкции
-mmmx -msse -msse2 -msse3 -mssse3
в CFLAGS? - Нужен ли
-pipe
или можно обойтись без него - нужен ли
-mtune=generic
? - И самое главное, достаточно ли будет этих флагов или нет - https://bpaste.net/show/4349c768cadf или нужно будет включить еще какие-то флаги?
Прошу специалистов посмотреть, и если что подсказать: что убрать, что добавить, что нужно, что не нужно. Буду благодарен любым советам. Пользовался данной статьёй. Гугл смотрел, но там ведь не скажут правильно или не правильно, и не посоветуют что добавить, что убавить. Может у кого то такой же проц и скажет какие флаги лучше использовать, ну и тд.