diff --git a/configure b/configure index 863e33b529..d59f5e45ac 100755 --- a/configure +++ b/configure @@ -276,6 +276,8 @@ Advanced options (experts only): Optimization options (experts only): --disable-asm disable all assembly optimizations --disable-altivec disable AltiVec optimizations + --disable-vsx disable VSX optimizations + --disable-power8 disable POWER8 optimizations --disable-amd3dnow disable 3DNow! optimizations --disable-amd3dnowext disable 3DNow! extended optimizations --disable-mmx disable MMX optimizations @@ -1339,7 +1341,9 @@ ARCH_EXT_LIST_PPC=" altivec dcbzl ldbrx + power8 ppc4xx + vsx " ARCH_EXT_LIST_X86=" @@ -1709,6 +1713,8 @@ map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM altivec_deps="ppc" ppc4xx_deps="ppc" +vsx_deps="altivec" +power8_deps="vsx" cpunop_deps="i686" x86_64_select="i686" @@ -3323,19 +3329,28 @@ elif enabled ppc; then ;; g4|745*|ppc745*|powerpc745*) cpuflags="-mcpu=7450" + disable vsx ;; 74*|ppc74*|powerpc74*) cpuflags="-mcpu=7400" + disable vsx ;; g5|970|ppc970|powerpc970) cpuflags="-mcpu=970" + disable vsx ;; - power[3-7]*) + power[3-6]*) cpuflags="-mcpu=$cpu" + disable vsx + ;; + power[7-8]*) + cpuflags="-mcpu=$cpu" + enable ldbrx ;; cell) cpuflags="-mcpu=cell" enable ldbrx + disable vsx ;; e500mc) cpuflags="-mcpu=e500mc" @@ -4012,6 +4027,15 @@ EOF enabled altivec || warn "Altivec disabled, possibly missing --cpu flag" fi + if enabled vsx; then + check_cflags -mvsx && + check_builtin vec_vsx_ld "altivec.h" "__builtin_vec_vsx_ld" || disable vsx + fi + + if enabled power8; then + check_cpp_condition "altivec.h" "defined(_ARCH_PWR8)" || disable power8 + fi + elif enabled x86; then check_builtin rdtsc intrin.h "__rdtsc()" @@ -4706,6 +4730,8 @@ if enabled arm; then fi if enabled ppc; then echo "AltiVec enabled ${altivec-no}" + echo "VSX enabled ${vsx-no}" + echo "POWER8 enabled ${power8-no}" echo "PPC 4xx optimizations ${ppc4xx-no}" echo "dcbzl available ${dcbzl-no}" fi