[linux-ileri] Re: gcc optimizasyon parametreleri

---------

From: Murat Koc (murat.koc@frontsite.com.tr)
Date: Wed 18 Feb 2004 - 11:41:16 EST

  • Next message: caglar.onur@tubitak.gov.tr: "[linux-ileri] Re: [linux-ileri]Re:kernel2.6.2sorundevam"

    On Wed, 2004-02-04 at 13:07, Volkan YAZICI wrote:
    > merhaba,
    >
    Selam,

    > herhangi bir program derlerken, madem programi paketi ile kurmayip kendim derliyorum, o zaman optimizasyonunu da kitabina gore yapalim ki bir ise yarasin diye dusundum.

    Elimdeki ufak bir script i paste edeceğim. İşinize yarayabilir.

    ------------------------------------------------------------------------

    #!/bin/sh

    # Author: pixelbeat

    #This script is Linux specific
    #It should work on any gcc >= 2.95 at least

    #these apply to any arch (just here for reference)
    unsafe_math_opts="-ffast-math -fno-math-errno -funsafe-math-optimizations -fno-trapping-math"

    gcc_version=`gcc -dumpversion | sed 's/\([0-9]\{1,\}\.[0-9]\{1,\}\)\.*\([0-9]\{1,\}\)\{0,1\}/\1\2/'`

    IFS=":"
    while read name value; do
        unset IFS
        name=`echo $name`
        value=`echo $value`
        IFS=":"
        if [ "$name" == "vendor_id" ]; then
            vendor_id="$value"
        elif [ "$name" == "cpu family" ]; then
            cpu_family="$value"
        elif [ "$name" == "model" ]; then
            cpu_model="$value"
        elif [ "$name" == "flags" ]; then
            flags="$value"
        fi
    done < /proc/cpuinfo
    unset IFS

    if [ "$vendor_id" == "AuthenticAMD" ]; then
        if [ "$cpu_family" == "4" ]; then
            _CFLAGS="$_CFLAGS -march=i486"
        elif [ "$cpu_family" == "5" ]; then
            if [ "$cpu_model" -lt "4" ]; then
                _CFLAGS="$_CFLAGS -march=pentium"
            elif [ "$cpu_model" == "6" ] || [ "$cpu_model" == "7" ]; then
                _CFLAGS="$_CFLAGS -march=k6"
            elif [ "$cpu_model" == "8" ] || [ "$cpu_model" == "12" ]; then
                if expr $gcc_version '>=' 3.1 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=k6-2"
                else
                    _CFLAGS="$_CFLAGS -march=k6"
                fi
            elif [ "$cpu_model" == "9" ] || [ "$cpu_model" == "13" ]; then
                if expr $gcc_version '>=' 3.1 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=k6-3"
                else
                    _CFLAGS="$_CFLAGS -march=k6"
                fi
            fi
        elif [ "$cpu_family" == "6" ]; then
            if [ "$cpu_model" -le "3" ]; then
                if expr $gcc_version '>=' 3.0 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=athlon"
                else
                    _CFLAGS="$_CFLAGS -march=k6"
                fi
            elif [ "$cpu_model" == "4" ]; then
                if expr $gcc_version '>=' 3.1 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=athlon-tbird"
                elif expr $gcc_version '>=' 3.0 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=athlon"
                else
                    _CFLAGS="$_CFLAGS -march=k6"
                fi
            elif [ "$cpu_model" -ge "6" ]; then #athlon-{4,xp,mp}
                if expr $gcc_version '>=' 3.1 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=athlon-xp"
                elif expr $gcc_version '>=' 3.0 >/dev/null; then
                    _CFLAGS="$_CFLAGS -march=athlon"
                else
                    _CFLAGS="$_CFLAGS -march=k6"
                fi
            fi
        fi
    else #everything else "GenuineIntel"
        if [ "$cpu_family" == "3" ]; then
            _CFLAGS="$_CFLAGS -march=i386"
        elif [ "$cpu_family" == "4" ]; then
            _CFLAGS="$_CFLAGS -march=i486"
        elif [ "$cpu_family" == "5" ] && expr $gcc_version '<' 3.1 >/dev/null; then
            _CFLAGS="$_CFLAGS -march=pentium"
        elif [ "$cpu_family" -ge "6" ] && expr $gcc_version '<' 3.1 >/dev/null; then
            _CFLAGS="$_CFLAGS -march=pentiumpro"
        elif [ "$cpu_family" == "5" ]; then
            if [ "$cpu_model" != "4" ]; then
                _CFLAGS="$_CFLAGS -march=pentium"
            else
                _CFLAGS="$_CFLAGS -march=pentium-mmx" #No overlap with other vendors
            fi
        elif [ "$cpu_family" == "6" ]; then
            if echo "$flags" | grep -vq cmov; then #gcc incorrectly assumes i686 always has cmov
                _CFLAGS="$_CFLAGS -march=pentium -mcpu=pentiumpro" #VIA CPUs exhibit this
            else
                if [ "$cpu_model" == "0" ] || [ "$cpu_model" == "1" ]; then
                    _CFLAGS="$_CFLAGS -march=pentiumpro"
                elif [ "$cpu_model" -ge "3" ] && [ "$cpu_model" -le "6" ]; then #4=TM5600 at least
                    _CFLAGS="$_CFLAGS -march=pentium2"
                elif [ "$cpu_model" -ge "7" ] && [ "$cpu_model" -le "11" ]; then #9 invalid
                    _CFLAGS="$_CFLAGS -march=pentium3"
                fi
            fi
        elif [ "$cpu_family" == "15" ]; then
            _CFLAGS="$_CFLAGS -march=pentium4"
        fi
    fi

    if expr $gcc_version '>=' 3.1 >/dev/null; then
        if echo "$flags" | grep -q sse2; then
            _CFLAGS="$_CFLAGS -mfpmath=sse -msse2"
        elif echo "$flags" | grep -q sse; then
            _CFLAGS="$_CFLAGS -mfpmath=sse -msse"
        fi
        if echo "$flags" | grep -q mmx; then
            _CFLAGS="$_CFLAGS -mmmx"
        fi
        if echo "$flags" | grep -q 3dnow; then
            _CFLAGS="$_CFLAGS -m3dnow"
        fi
    fi

    echo "$_CFLAGS"

    --------------------------------------------------------------------------------------

    -- 
     __________
    |          |
    |          |  Murat Koc
    |          |  Manager & IT Consultant
    |    FRONT |
    |==========|  FrontSITE Bilgi Teknolojisi A.S.
    |_____SITE_|  http://www.frontsite.com.tr/
    -- Attached file included as plaintext by Ecartis --
    -- File: signature.asc
    -- Desc: This is a digitally signed message part
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.4 (GNU/Linux)
    iD8DBQBAM5WryHJSQxPy7GoRAvJgAJ9L/LxUSv01F6xjEEVeVhoXFtWdsgCfTVko
    AOutrujfz/sXrus/YQspjtI=
    =ZNcU
    -----END PGP SIGNATURE-----
    

  • Next message: caglar.onur@tubitak.gov.tr: "[linux-ileri] Re: [linux-ileri]Re:kernel2.6.2sorundevam"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.