Roberto Guida wrote:
Hello!! i'm new at the list, so.. hello everyone!!
here is my /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 CPU 2.60GHz
stepping : 9
cpu MHz : 2598.151
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up cid
xtpr
bogomips : 5201.43
I would like to know what are the right FLAGS to put when i compile
something with gcc...
reading the gcc manual (not all, it is huge) i found (I think!) that
for my processor, I should put these ones:
-O3 -mtune=pentium4 -march=pentium4 -mfpmath=sse -malign-double
-m128bit-long-double -mmmx -msse -msse2 -maccumulate-outgoing-args
-mno-push-args
then maybe (i'm less sure here, i've to study more! :) ) these ones too:
-ffast-math -fstrength-reduce -fexpensive-optimizations -funroll-loops
-frerun-loop-opt -falign-loops
You're trying too hard. -march=pentium4 is appropriate, and includes
-mtune=pentium4.
-mfpmath=sse would be the usual choice (default for 64-bit), and would
imply -msse -msse2. As I understood it (you could look up past
references in gcc mailing list) -malign-double dealt with some odd
issues in long past versions, and would not be required for current gcc
releases. -m128bit-long-double is clearly inappropriate, unless you
have a corresponding software floating point library. You have not
given any reason why you would require most of the other arguments; some
of them are defaults for targets where they are advisable.
-ffast-math enables aggressive optimizations, some of which frequently
break applications, others could be desirable individually.
-funroll-loops is usually good when improved performance is more
important than small code size.