comparison configure @ 35101:3e1a4184b70e

Add SSE3, SSE4, SSE4.2 and AVX detection. Patch by Xidorn Quan, quanxunzhen gmail
author cehoyos
date Fri, 14 Sep 2012 14:16:08 +0000
parents bc7b006732c0
children 006375b8c072
comparison
equal deleted inserted replaced
35100:bc7b006732c0 35101:3e1a4184b70e
579 --enable-mmxext enable MMX2 (Pentium III, Athlon) [autodetect] 579 --enable-mmxext enable MMX2 (Pentium III, Athlon) [autodetect]
580 --enable-3dnow enable 3DNow! [autodetect] 580 --enable-3dnow enable 3DNow! [autodetect]
581 --enable-3dnowext enable extended 3DNow! [autodetect] 581 --enable-3dnowext enable extended 3DNow! [autodetect]
582 --enable-sse enable SSE [autodetect] 582 --enable-sse enable SSE [autodetect]
583 --enable-sse2 enable SSE2 [autodetect] 583 --enable-sse2 enable SSE2 [autodetect]
584 --enable-sse3 enable SSE3 [autodetect]
584 --enable-ssse3 enable SSSE3 [autodetect] 585 --enable-ssse3 enable SSSE3 [autodetect]
586 --enable-sse4 enable SSE4 [autodetect]
587 --enable-sse42 enable SSE4.2 [autodetect]
588 --enable-avx enable AVX [autodetect]
585 --enable-shm enable shm [autodetect] 589 --enable-shm enable shm [autodetect]
586 --enable-altivec enable AltiVec (PowerPC) [autodetect] 590 --enable-altivec enable AltiVec (PowerPC) [autodetect]
587 --enable-armv5te enable DSP extensions (ARM) [autodetect] 591 --enable-armv5te enable DSP extensions (ARM) [autodetect]
588 --enable-armv6 enable ARMv6 (ARM) [autodetect] 592 --enable-armv6 enable ARMv6 (ARM) [autodetect]
589 --enable-armv6t2 enable ARMv6t2 (ARM) [autodetect] 593 --enable-armv6t2 enable ARMv6t2 (ARM) [autodetect]
632 _3dnow=auto 636 _3dnow=auto
633 _3dnowext=auto 637 _3dnowext=auto
634 _mmxext=auto 638 _mmxext=auto
635 _sse=auto 639 _sse=auto
636 _sse2=auto 640 _sse2=auto
641 _sse3=auto
637 _ssse3=auto 642 _ssse3=auto
643 _sse4_1=auto
644 _sse4_2=auto
645 _avx=auto
638 _cmov=auto 646 _cmov=auto
639 _fast_cmov=auto 647 _fast_cmov=auto
640 _fast_clz=auto 648 _fast_clz=auto
641 _armv5te=auto 649 _armv5te=auto
642 _armv6=auto 650 _armv6=auto
1439 1447
1440 --enable-sse) _sse=yes ;; 1448 --enable-sse) _sse=yes ;;
1441 --disable-sse) _sse=no ;; 1449 --disable-sse) _sse=no ;;
1442 --enable-sse2) _sse2=yes ;; 1450 --enable-sse2) _sse2=yes ;;
1443 --disable-sse2) _sse2=no ;; 1451 --disable-sse2) _sse2=no ;;
1452 --enable-sse3) _sse3=yes ;;
1453 --disable-sse3) _sse3=no ;;
1444 --enable-ssse3) _ssse3=yes ;; 1454 --enable-ssse3) _ssse3=yes ;;
1445 --disable-ssse3) _ssse3=no ;; 1455 --disable-ssse3) _ssse3=no ;;
1456 --enable-sse4) _sse4_1=yes;;
1457 --disable-sse4) _sse4_1=no;;
1458 --enable-sse42) _sse4_2=yes;;
1459 --disable-sse42) _sse4_2=no;;
1460 --enable-avx) _avx=yes;;
1461 --disable-avx) _avx=no;;
1446 --enable-mmxext) _mmxext=yes ;; 1462 --enable-mmxext) _mmxext=yes ;;
1447 --disable-mmxext) _mmxext=no ;; 1463 --disable-mmxext) _mmxext=no ;;
1448 --enable-3dnow) _3dnow=yes ;; 1464 --enable-3dnow) _3dnow=yes ;;
1449 --disable-3dnow) _3dnow=no _3dnowext=no ;; 1465 --disable-3dnow) _3dnow=no _3dnowext=no ;;
1450 --enable-3dnowext) _3dnow=yes _3dnowext=yes ;; 1466 --enable-3dnowext) _3dnow=yes _3dnowext=yes ;;
1814 pstepping=$($_cpuinfo | grep 'stepping' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1) 1830 pstepping=$($_cpuinfo | grep 'stepping' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1815 1831
1816 exts=$($_cpuinfo | egrep 'features|flags' | cut -d ':' -f 2 | head -n 1) 1832 exts=$($_cpuinfo | egrep 'features|flags' | cut -d ':' -f 2 | head -n 1)
1817 1833
1818 pparam=$(echo $exts | sed -e s/k6_mtrr/mtrr/ -e s/cyrix_arr/mtrr/ -e s/centaur_mcr/mtrr/ \ 1834 pparam=$(echo $exts | sed -e s/k6_mtrr/mtrr/ -e s/cyrix_arr/mtrr/ -e s/centaur_mcr/mtrr/ \
1819 -e s/xmm/sse/ -e s/kni/sse/) 1835 -e s/xmm/sse/ -e s/kni/sse/ -e s/pni/sse3/)
1820 # SSE implies MMX2, but not all SSE processors report the mmxext CPU flag. 1836 # SSE implies MMX2, but not all SSE processors report the mmxext CPU flag.
1821 pparam=$(echo $pparam | sed -e 's/sse/sse mmxext/') 1837 pparam=$(echo $pparam | sed -e 's/sse/sse mmxext/')
1822 1838
1823 for ext in $pparam ; do 1839 for ext in $pparam ; do
1824 eval test \"\$_$ext\" = auto 2>/dev/null && eval _$ext=kernel_check 1840 eval test \"\$_$ext\" = auto 2>/dev/null && eval _$ext=kernel_check
1867 extcheck $_mmxext "mmxext" "sfence" 1883 extcheck $_mmxext "mmxext" "sfence"
1868 extcheck $_3dnow "3dnow" "femms" 1884 extcheck $_3dnow "3dnow" "femms"
1869 extcheck $_3dnowext "3dnowext" "pswapd %%mm0, %%mm0" 1885 extcheck $_3dnowext "3dnowext" "pswapd %%mm0, %%mm0"
1870 extcheck $_sse "sse" "xorps %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse" 1886 extcheck $_sse "sse" "xorps %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse"
1871 extcheck $_sse2 "sse2" "xorpd %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse2" 1887 extcheck $_sse2 "sse2" "xorpd %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse2"
1888 extcheck $_sse3 "sse3" "addsubps %%xmm0, %%xmm0"
1872 extcheck $_ssse3 "ssse3" "pabsd %%xmm0, %%xmm0" 1889 extcheck $_ssse3 "ssse3" "pabsd %%xmm0, %%xmm0"
1890 extcheck $_sse4_1 "sse4_1" "pmaxsb %%xmm0, %%xmm0"
1891 extcheck $_sse4_2 "sse4_2" "pcmpgtq %%xmm0, %%xmm0"
1892 extcheck $_avx "avx" "vpabsw %%xmm0, %%xmm0"
1873 extcheck $_cmov "cmov" "cmovb %%eax, %%ebx" 1893 extcheck $_cmov "cmov" "cmovb %%eax, %%ebx"
1874 1894
1875 echocheck "mtrr support" 1895 echocheck "mtrr support"
1876 if test "$_mtrr" = kernel_check ; then 1896 if test "$_mtrr" = kernel_check ; then
1877 _mtrr="yes" 1897 _mtrr="yes"
2519 test "$_3dnow" != no && _3dnow=yes 2539 test "$_3dnow" != no && _3dnow=yes
2520 test "$_3dnowext" != no && _3dnowext=yes 2540 test "$_3dnowext" != no && _3dnowext=yes
2521 test "$_mmxext" != no && _mmxext=yes 2541 test "$_mmxext" != no && _mmxext=yes
2522 test "$_sse" != no && _sse=yes 2542 test "$_sse" != no && _sse=yes
2523 test "$_sse2" != no && _sse2=yes 2543 test "$_sse2" != no && _sse2=yes
2544 test "$_sse3" != no && _sse3=yes
2524 test "$_ssse3" != no && _ssse3=yes 2545 test "$_ssse3" != no && _ssse3=yes
2546 test "$_sse4_1" != no && _sse4_1=yes
2547 test "$_sse4_2" != no && _sse4_2=yes
2548 test "$_avx" != no && _avx=yes
2525 test "$_mtrr" != no && _mtrr=yes 2549 test "$_mtrr" != no && _mtrr=yes
2526 fi 2550 fi
2527 if ppc; then 2551 if ppc; then
2528 _altivec=yes 2552 _altivec=yes
2529 fi 2553 fi
3001 inline_asm_check '"wunpckelub wr6, wr4"' && _iwmmxt=yes 3025 inline_asm_check '"wunpckelub wr6, wr4"' && _iwmmxt=yes
3002 fi 3026 fi
3003 echores "$_iwmmxt" 3027 echores "$_iwmmxt"
3004 fi 3028 fi
3005 3029
3006 cpuexts_all='ALTIVEC AVX MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 FAST_CMOV CMOV FAST_CLZ ARMV5TE ARMV6 ARMV6T2 ARMVFP VFPV3 NEON IWMMXT MMI VIS MVI' 3030 cpuexts_all='ALTIVEC AVX MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE42 FAST_CMOV CMOV FAST_CLZ ARMV5TE ARMV6 ARMV6T2 ARMVFP VFPV3 NEON IWMMXT MMI VIS MVI'
3007 test "$_altivec" = yes && cpuexts="ALTIVEC $cpuexts" 3031 test "$_altivec" = yes && cpuexts="ALTIVEC $cpuexts"
3008 test "$_mmx" = yes && cpuexts="MMX $cpuexts" 3032 test "$_mmx" = yes && cpuexts="MMX $cpuexts"
3009 test "$_mmxext" = yes && cpuexts="MMX2 $cpuexts" 3033 test "$_mmxext" = yes && cpuexts="MMX2 $cpuexts"
3010 test "$_mmxext" = yes && cpuexts="MMXEXT $cpuexts" 3034 test "$_mmxext" = yes && cpuexts="MMXEXT $cpuexts"
3011 test "$_3dnow" = yes && cpuexts="AMD3DNOW $cpuexts" 3035 test "$_3dnow" = yes && cpuexts="AMD3DNOW $cpuexts"
3012 test "$_3dnowext" = yes && cpuexts="AMD3DNOWEXT $cpuexts" 3036 test "$_3dnowext" = yes && cpuexts="AMD3DNOWEXT $cpuexts"
3013 test "$_sse" = yes && cpuexts="SSE $cpuexts" 3037 test "$_sse" = yes && cpuexts="SSE $cpuexts"
3014 test "$_sse2" = yes && cpuexts="SSE2 $cpuexts" 3038 test "$_sse2" = yes && cpuexts="SSE2 $cpuexts"
3039 test "$_sse3" = yes && cpuexts="SSE3 $cpuexts"
3015 test "$_ssse3" = yes && cpuexts="SSSE3 $cpuexts" 3040 test "$_ssse3" = yes && cpuexts="SSSE3 $cpuexts"
3041 test "$_sse4_1" = yes && cpuexts="SSE4 $cpuexts"
3042 test "$_sse4_2" = yes && cpuexts="SSE42 $cpuexts"
3043 test "$_avx" = yes && cpuexts="AVX $cpuexts"
3016 test "$_cmov" = yes && cpuexts="CMOV $cpuexts" 3044 test "$_cmov" = yes && cpuexts="CMOV $cpuexts"
3017 test "$_fast_cmov" = yes && cpuexts="FAST_CMOV $cpuexts" 3045 test "$_fast_cmov" = yes && cpuexts="FAST_CMOV $cpuexts"
3018 test "$_fast_clz" = yes && cpuexts="FAST_CLZ $cpuexts" 3046 test "$_fast_clz" = yes && cpuexts="FAST_CLZ $cpuexts"
3019 test "$_armv5te" = yes && cpuexts="ARMV5TE $cpuexts" 3047 test "$_armv5te" = yes && cpuexts="ARMV5TE $cpuexts"
3020 test "$_armv6" = yes && cpuexts="ARMV6 $cpuexts" 3048 test "$_armv6" = yes && cpuexts="ARMV6 $cpuexts"