Safe CFLAGS-improper translation-it
This page was improperly translated. If this content is still somewhat valid, it would be helpful if someone who can do Italian translations could use the content from this page to recreate an Italian translation using the standard wiki translation framework (click translation link at top of Safe CFLAGS). See Help:Translating.
Questo articolo tenta di sintetizzare le impostazioni 'sicure' per le opzioni (flag) di una CPU su Gentoo Linux.
Rilevamento automatico della CPU
Una scelta predefinita raccomandata per CFLAGS o CXXFLAGS è l'uso di -march=native
. Ciò abilita l'auto rilevamento dell'architettura della CPU. Un esempio di inserimento è questo:
CFLAGS="-O2 -pipe -march=native"
CXXFLAGS="${CFLAGS}"
Non si usi
-march=native
o -mtune=native
nelle variabili CFLAGS o CXXFLAGS in make.conf quando si compila con distcc. Consultare la pagina distcc per sapere come impostare correttamente CFLAGS/CXXFLAGS.Ulteriori informazioni si possono trovare sulla pagina Ottimizzazioni GCC.
Manuale
Trovare la CPU
Per identificare il modello della CPU, cercare su /proc/cpuinfo, per i numeri della "famiglia della cpu" e del "modello" scrivere quanto segue:
user $
grep -m1 -A3 "vendor_id" /proc/cpuinfo
Una volta che questa informazione è stata trovata, cercare la corrispondenza della CPU con una di quelle elencate in questa pagina, allo scopo di ricevere un suggerimento per un CFLAGS "sicuro".
Sotto segue una lista di CFLAGS considerati "sicuri" per i processori presentati. Ci sono le impostazioni che dovrebbero essere usate, specialmente se non si è certi di quali CFLAGS il processore necessita.
x86/amd64
Intel
Skylake
Core i3/i5/i7 and Xeon E3/E5 *V5
vendor_id : GenuineIntel cpu family : 6 model : 94 model name : Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=broadwell -O2 -pipe"
CXXFLAGS="${CFLAGS}"
Note
Skylake march support has been introduced with GCC 6. As Gentoo is still using an earlier version of GCC, we use -march=broadwell. Note
Even though they fit the family and model, this set of CFLAGS does NOT work for Skylake Pentium CPUs (e. g. G4400) producing invalid code. -march=native works. |
Haswell
Core i3/i5/i7 and Xeon E3/E5/E7 *V3
vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz … model : 60 model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=haswell -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Ivy Bridge
Core i3/i5/i7 and Xeon E3/E5/E7 *V2
vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=ivybridge -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Pentium
vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Pentium(R) CPU G2020 @ 2.90GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=ivybridge -mno-avx -mno-aes -mno-rdrnd -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Sandy Bridge
Core i3/i5/i7 and Xeon E3/E5/E7
vendor_id : GenuineIntel cpu family : 6 … model : 42 model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz … model : 45 model name : Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz … model : 42 model name : Intel(R) Xeon(R) CPU E31245 @ 3.30GHz … model : 45 model name : Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=sandybridge -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Pentium
vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Pentium(R) CPU B960 @ 2.20GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=sandybridge -mno-avx -mno-aes -mno-rdrnd -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Nehalem
Core i3/i5/i7
vendor_id : GenuineIntel cpu family : 6 model : 30 model name : Intel(R) Core(TM) i5-750 CPU @ 2.66GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nehalem -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Westmere
Core i3/i5/i7
vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Core(TM) i5-650 CPU @ 3.20GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=westmere -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Intel Core
vendor_id : GenuineIntel cpu family : 6 … model : 15 model name : Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz … model : 15 model name : Intel(R) Xeon(R) CPU 3040 @ 1.86GHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
Micro architetture più datate
Pentium M (Dothan)
vendor_id : GenuineIntel cpu family : 6 model : 13 model name : Intel(R) Pentium(R) M processor 2.13GHz |
CHOST="i686-pc-linux-gnu"
CFLAGS="-O2 -march=pentium-m -pipe"
CXXFLAGS="${CFLAGS}"
|
Pentium 4 (Prescott)
Note
Check the /proc/cpuinfo for the lm flag to detect 64-bit CPUs: user $ grep lm /proc/cpuinfo vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel(R) Pentium(R) 4 CPU XXXGHz |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=nocona -pipe"
CXXFLAGS="${CFLAGS}"
|
All other Prescotts
vendor_id : GenuineIntel cpu family : 15 model : 3 model name : Intel(R) Pentium(R) 4 CPU XXXGHz |
CHOST="i686-pc-linux-gnu"
CFLAGS="-O2 -march=prescott -pipe"
CXXFLAGS="${CFLAGS}"
|
AMD
Ryzen (Zen)
1700, 1700X, 1800X
vendor_id : AuthenticAMD cpu family : 23 model : 1 model name : AMD Ryzen 7 1800X Eight-Core Processor |
Please see Ryzen -article for recommended CFLAGS. Pay special attention to the troubleshooting -section. |
A6/A8/A9/A10/A12-8XXX/9XXX (Excavator)
Carrizo, Bristol Ridge, and Stoney Ridge
vendor_id : AuthenticAMD cpu family : 21 model : 96 or 101 or 112 model name : AMD A12-9800 RADEON R7, 12 COMPUTE CORES 4C+8G |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=bdver4 -pipe"
CXXFLAGS="${CFLAGS}"
|
A4/A6/A8/A10-7XXX/8XXX (Steamroller)
Kaveri and Godavari
vendor_id : AuthenticAMD cpu family : 21 model : 48 or 56 model name : AMD A10-7850K Radeon R7, 12 Compute Cores 4C+8G Important
Various lowpower AMD APUs branded as AX-7XXX (eg. A4-7210) don't belong to cpu family 21! |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=bdver3 -pipe"
CXXFLAGS="${CFLAGS}"
|
E1/E2-XXXX, A4/A6/A8/A10-XXXX (Jaguar, Puma)
Kabini, Temash, Beema, Mullins, and Carrizo-L
vendor_id : AuthenticAMD cpu family : 22 model : 0 or 48 model name : AMD A4-5000 APU with Radeon(TM) HD Graphics Important
Majority of AMD APUs branded as A4/A6/A8-XXXX (eg. A4-5300, A4-4000 or A6-5345M) don't belong to cpu family 22! They should use settings listed for AMD APU model given by the cpu family and model . |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=btver2 -pipe"
CXXFLAGS="${CFLAGS}"
|
A4/A6/A8/A10-4XXX/5XXX/6XXX (Piledriver)
Trinity and Richland
vendor_id : AuthenticAMD cpu family : 21 model : 16 or 19 model name : AMD A8-4500M APU with Radeon(tm) HD Graphics Important
Various low power AMD APUs branded as AX-5XXX/6XXX (eg. A4-5000, A4-5100 or A6-6310) don't belong to CPU family 21! |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=bdver2 -pipe"
CXXFLAGS="${CFLAGS}"
|
FX-XXXX
Bulldozer and Piledriver
vendor_id : AuthenticAMD cpu family : 21 model : 1 or 2 model name : AMD FX(tm)-8150 Eight-Core Processor Important
Make sure and check the number listed by model on the system, the -march flag should be bdverX where X is the model number. Important
Various AMD APUs branded as FX don't match model 1 or 2! They should use settings listed for AMD APU model given by the cpu family and model . |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=bdver1 -pipe"
CXXFLAGS="${CFLAGS}"
|
Z-XX, C-X0, E-XX0, E1/E2-1X00, E2-2000 (Bobcat)
Ontario, Hondo, Desna, and Zacate
vendor_id : AuthenticAMD cpu family : 20 model : 1 or 2 model name : AMD E-350 Processor |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=btver1 -pipe"
CXXFLAGS="${CFLAGS}"
|
A4/A6/A8-3XXX/3XXXM (12h)
Llano
vendor_id : AuthenticAMD cpu family : 18 model : 1 model name : AMD A8-3500M APU with Radeon(tm) HD Graphics |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=amdfam10 -mcx16 -mpopcnt -pipe"
CXXFLAGS="${CFLAGS}"
|
Phenom/Phenom II, Athlon II, Sempron (10h)
Agena, Deneb, Thuban, and derivatives
vendor_id : AuthenticAMD cpu family : 16 model : X model name : AMD Phenom(tm) II X6 1090T Processor |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=amdfam10 -pipe"
CXXFLAGS="${CFLAGS}"
|
Micro architetture più datate
Various AMD CPUs branded as Sempron (eg. Sempron 2200+ or Sempron 3000+) don't belong to cpu family 15!
E+ revisions - Athlon 64, Athlon 64 X2/FX, Sempron (0Fh)
vendor_id : AuthenticAMD cpu family : 15 model : >= 39 model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=opteron-sse3 -pipe"
CXXFLAGS="${CFLAGS}"
|
Geode LX
vendor_id : AuthenticAMD cpu family : 5 model : 10 model name : Geode(TM) Integrated Processor by AMD PCS |
CHOST="i486-pc-linux-gnu"
CFLAGS="-Os -pipe -march=geode -mmmx -m3dnow -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
|
Pre-E revisions - Athlon 64, Athlon 64 FX, Sempron (0Fh)
vendor_id : AuthenticAMD cpu family : 15 model : < 39 model name : AMD Athlon(tm) 64 Processor 3200+ |
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=opteron -pipe"
CXXFLAGS="${CFLAGS}"
|
ARM
To identify the respective ARM core of the SoC on your board, List of ARM microarchitectures and List of applications of ARM cores on Wikipedia may help.
Cortex-A
ARMv7-A/Cortex-A9 MPCore
with optional VFPv3 FPU
processor : 0 model name : ARMv7 Processor rev 0 (v7l) BogoMIPS : 2.00 Features : half thumb fastmult vfp edsp vfpv3 vfpv3d16 tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x1 CPU part : 0xc09 CPU revision : 0 processor : 1 model name : ARMv7 Processor rev 0 (v7l) BogoMIPS : 2.00 Features : half thumb fastmult vfp edsp vfpv3 vfpv3d16 tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x1 CPU part : 0xc09 CPU revision : 0 Hardware : NVIDIA Tegra SoC (Flattened Device Tree) Revision : 0000 Serial : 0000000000000000 Note
This ARM core (equipped with the optional vfpv3d16 FPU but missing the NEON extension) is used in the Toshiba AC100/Dynabook AZ/Compal Paz00 Board. |
CHOST="armv7a-hardfloat-linux-gnueabi"
CFLAGS="-O2 -march=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
|
ARMv8-A/BCM2837
This is the Broadcom chip used in the Raspberry Pi 3 Model B.
AArch32 with neon FPU
processor : 0-3 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 Hardware : BCM2709 Revision : 0000 Serial : 0000000000000000 |
CHOST="armv7a-hardfloat-linux-gnueabi"
CFLAGS="-O2 -pipe -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard"
CXXFLAGS="${CFLAGS}"
|
AArch64
processor : 0-3 BogoMIPS : 38.40 Features : fp asimd evtstrm crc32 CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 |
CHOST="aarch64-unknown-linux-gnu"
CFLAGS="-march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
|
ARM11
ARMv6/ARM1176JZF-S
Note
This ARM core is used in the first generation of the Raspberry Pi. processor : 0 model name : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 697.95 Features : half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2835 Revision : 0000 Serial : 000000000XXXXXXX |
CHOST="armv6j-hardfloat-linux-gnueabi"
CFLAGS="-O2 -pipe -march=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard"
CXXFLAGS="${CFLAGS}"
|
ARMv6/ARM1136JF-S
Processor : ARMv6-compatible processor rev 5 (v6l) BogoMIPS : 791.34 Features : swp half thumb fastmult vfp edsp java CPU implementer : 0x41 CPU architecture: 6TEJ CPU variant : 0x1 CPU part : 0xb36 CPU revision : 5 Hardware : IMAPX200 Revision : 0000 Serial : 0000000000000000 |
CHOST="armv6j-hardfloat-linux-gnueabi"
CFLAGS="-Os -march=arm1136jf-s -mfpu=vfp -mfloat-abi=hard -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
|
ppc/ppc64
-march=
is not supported on the PowerPC (and RS/6000) instruction set architecture (ISA). Use -mcpu=
and -mtune=
instead.Using
-mcpu=native
(and/or -mtune=native
) should work on PowerPC but is not recommended due to distcc.POWER8
processor : 0 cpu : POWER8E (raw), altivec supported clock : 3026.000000MHz revision : 2.1 (pvr 004b 0201) timebase : 512000000 platform : pSeries model : IBM pSeries (emulated by qemu) machine : CHRP IBM pSeries (emulated by qemu) |
Note
Currently Gentoo does not support POWER8, but safe CFLAGS for it would look like the following. CHOST="powerpc64le-linux-gnu"
CFLAGS="-mcpu=power8 -O2 -pipe -mabi=altivec -maltivec"
CXXFLAGS="${CFLAGS}"
|
Cell
processor : 0 cpu : Cell Broadband Engine, altivec supported clock : 3192.000000MHz revision : 5.1 (pvr 0070 0501) processor : 1 cpu : Cell Broadband Engine, altivec supported clock : 3192.000000MHz revision : 5.1 (pvr 0070 0501) timebase : 79800000 platform : PS3 model : SonyPS3 |
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=cell -O2 -pipe -mabi=altivec -maltivec"
CXXFLAGS="${CFLAGS}"
Note
GCC's -mspe and -mabi=spe options are not targetting PS3 systems and IBM Cell. Instead, those options are dedicated to IBM e500. More info: |
PPC 970 (G5)
Compatible processors are IBM PPC970, PPC970FX, PPC970MP and PPC970GX.
cpu : PPC970, altivec supported clock : 1800MHz revision : 2.2 (pvr 0039 0202) bogomips : 1127.21 machine : PowerMac7,2 motherboard : PowerMac7,2 MacRISC4 Power Macintosh board revision : 00000001 detected as : 336 (PowerMac G5) pmac flags : 00000000 L2 cache : 512K unified pmac-generation : NewWorld |
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=970 -O2 -maltivec -mabi=altivec -pipe"
CXXFLAGS="${CFLAGS}"
|
G4 (PPC 74xx)
PPC 7450 family
Compatible processors are Motorola/Freescale MPC7450, MPC7440, MPC7451, MPC7441, MPC7455, MPC7445, MPC7457, MPC7447, MPC7447/A, and MPC7448.
processor : 0 cpu : 7447A, altivec supported clock : 1666.666000MHz revision : 1.5 (pvr 8003 0105) bogomips : 33.28 timebase : 8320000 platform : PowerMac model : PowerBook5,9 machine : PowerBook5,9 motherboard : PowerBook5,9 MacRISC3 Power Macintosh detected as : 287 (PowerBook G4 17") pmac flags : 00000018 L2 cache : 512K unified pmac-generation : NewWorld |
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7450 -O2 -maltivec -mabi=altivec -fno-strict-aliasing -pipe"
CXXFLAGS="${CFLAGS}"
|
PPC 7400 family
Compatible processors are Motorola MPC7400 and MPC7410. Note: IBM manufactured the MPC7400 as 06K5319 and 10K8298 when Motorola was not able to fulfill Apple's demands.
processor : 0 cpu : 7400, altivec supported clock : 400.000000MHz revision : 2.9 (pvr 000c 0209) bogomips : 49.66 timebase : 24908583 platform : PowerMac machine : PowerMac3,1 motherboard : PowerMac3,1 MacRISC Power Macintosh detected as : 65 (PowerMac G4 AGP Graphics) pmac flags : 00000004 L2 cache : 1024K unified pmac-generation : NewWorld |
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7400 -O2 -maltivec -mabi=altivec -fno-strict-aliasing -pipe"
CXXFLAGS="${CFLAGS}"
|
G3 (PPC 7XX)
Compatible processors are Motorola/Freescale MPC750, MPC740, MPC755 and MPC745 as well as IBM PPC750, PPC740, PPC750L, PPC740L, PPC750CX, PPC750CXe, PPCDBK ("Gekko"), PPC750FX, PPC750GX, PPC750CXr, PPC750CL ("Broadway"), PPC750GL and PPC750FL. The BAE Systems RAD750 is a radiation hardened variant of the PPC750. The "Espresso" (following the "Gekko" and "Broadway") is also based on the PPC750.
For CPUs for embedded systems such as the Gekko (PPCDBK, used in the Nintendo GameCube) additional CFLAGS (like -meabi
) will be required.
processor : 0 cpu : 740/750 clock : 400.000000MHz revision : 131.0 (pvr 0008 8300) bogomips : 49.93 timebase : 24966218 platform : PowerMac model : PowerBook3,1 machine : PowerBook3,1 motherboard : PowerBook3,1 MacRISC2 MacRISC Power Macintosh detected as : 70 (PowerBook Pismo) pmac flags : 0000001f L2 cache : 1024K unified pmac-generation : NewWorld |
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=750 -Os -pipe -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"
|