1 |
On Freitag 29 Mai 2009, Graham Murray wrote: |
2 |
> Stroller <stroller@××××××××××××××××××.uk> writes: |
3 |
> > But, surely "-march=" also instructs gcc to support the additional |
4 |
> > instructions. Suggest you re-read Daniel's post that I was replying |
5 |
> > to. |
6 |
> > |
7 |
> > What's the difference between supporting the "certain set of |
8 |
> > instructions" with "-march=" and doing so with USEs? |
9 |
> > |
10 |
> > Or doesn't "-march=" support additional "certain sets of |
11 |
> > instructions". What does it do, then? |
12 |
> |
13 |
> I am not sure, |
14 |
> |
15 |
> $ gcc -Q --help=target -march=core2 |
16 |
> The following options are target specific: |
17 |
> -m128bit-long-double [disabled] |
18 |
> -m32 [enabled] |
19 |
> -m3dnow [disabled] |
20 |
> -m3dnowa [disabled] |
21 |
> -m64 [disabled] |
22 |
> -m80387 [enabled] |
23 |
> -m96bit-long-double [enabled] |
24 |
> -mabm [disabled] |
25 |
> -maccumulate-outgoing-args [disabled] |
26 |
> -maes [disabled] |
27 |
> -malign-double [disabled] |
28 |
> -malign-functions= |
29 |
> -malign-jumps= |
30 |
> -malign-loops= |
31 |
> -malign-stringops [enabled] |
32 |
> -march= core2 |
33 |
> -masm= |
34 |
> -mavx [disabled] |
35 |
> -mbranch-cost= |
36 |
> -mcld [disabled] |
37 |
> -mcmodel= |
38 |
> -mcx16 [disabled] |
39 |
> -mfancy-math-387 [enabled] |
40 |
> -mfma [disabled] |
41 |
> -mforce-drap [disabled] |
42 |
> -mfp-ret-in-387 [enabled] |
43 |
> -mfpmath= |
44 |
> -mfused-madd [enabled] |
45 |
> -mglibc [enabled] |
46 |
> -mhard-float [enabled] |
47 |
> -mieee-fp [enabled] |
48 |
> -mincoming-stack-boundary= |
49 |
> -minline-all-stringops [disabled] |
50 |
> -minline-stringops-dynamically [disabled] |
51 |
> -mintel-syntax [disabled] |
52 |
> -mlarge-data-threshold= |
53 |
> -mmmx [disabled] |
54 |
> -mms-bitfields [disabled] |
55 |
> -mno-align-stringops [disabled] |
56 |
> -mno-fancy-math-387 [disabled] |
57 |
> -mno-fused-madd [disabled] |
58 |
> -mno-push-args [disabled] |
59 |
> -mno-red-zone [disabled] |
60 |
> -mno-sse4 [enabled] |
61 |
> -momit-leaf-frame-pointer [disabled] |
62 |
> -mpc |
63 |
> -mpclmul [disabled] |
64 |
> -mpopcnt [disabled] |
65 |
> -mpreferred-stack-boundary= |
66 |
> -mpush-args [enabled] |
67 |
> -mrecip [disabled] |
68 |
> -mred-zone [enabled] |
69 |
> -mregparm= |
70 |
> -mrtd [disabled] |
71 |
> -msahf [disabled] |
72 |
> -msoft-float [disabled] |
73 |
> -msse [disabled] |
74 |
> -msse2 [disabled] |
75 |
> -msse2avx [disabled] |
76 |
> -msse3 [disabled] |
77 |
> -msse4 [disabled] |
78 |
> -msse4.1 [disabled] |
79 |
> -msse4.2 [disabled] |
80 |
> -msse4a [disabled] |
81 |
> -msse5 [disabled] |
82 |
> -msseregparm [disabled] |
83 |
> -mssse3 [disabled] |
84 |
> -mstack-arg-probe [disabled] |
85 |
> -mstackrealign [enabled] |
86 |
> -mstringop-strategy= |
87 |
> -mtls-dialect= |
88 |
> -mtls-direct-seg-refs [enabled] |
89 |
> -mtune= |
90 |
> -muclibc [disabled] |
91 |
> -mveclibabi= |
92 |
|
93 |
get this: |
94 |
dev.gentoo.org/~dirtyepic/bin/analyze-x86 |
95 |
|
96 |
and let it run, for example: |
97 |
/analyze-x86 /bin/gzip |
98 |
Checking vendor_id string... AuthenticAMD 64 |
99 |
Disassembling /bin/gzip, please wait... |
100 |
i486: 0 i586: 0 ppro: 36 mmx: 46 3dnow: 0 ext3dnow: 0 sse: |
101 |
0 sse2: 4 sse3: 0 |
102 |
/bin/gzip will run on AMD Athlon64 or higher processor. |
103 |
|
104 |
or this: |
105 |
/analyze-x86 /bin/bash |
106 |
Checking vendor_id string... AuthenticAMD 64 |
107 |
Disassembling /bin/bash, please wait... |
108 |
i486: 0 i586: 0 ppro: 369 mmx: 876 3dnow: 0 ext3dnow: 0 sse: |
109 |
120 sse2: 0 sse3: 0 |
110 |
/bin/bash will run on Pentium III (pentium3) or higher processor. |
111 |
|
112 |
and march=k8-sse3 -msse3 -O2 -pipe were my flags. Seems that a lot of stuff |
113 |
got turned on ;) |
114 |
|
115 |
mplayer is even more 'interessting': |
116 |
./analyze-x86 /usr/bin/mplayer |
117 |
Checking vendor_id string... AuthenticAMD 64 |
118 |
Disassembling /usr/bin/mplayer, please wait... |
119 |
i486: 3948 i586: 14 ppro: 7573 mmx: 164986 3dnow: 5331 ext3dnow: 768 sse: |
120 |
31407 sse2: 27712 sse3: 51 |
121 |
|
122 |
This binary was found to contain the cpuid instruction. |
123 |
It may be able to conditionally execute instructions if |
124 |
they are supported on the host (i586+). |
125 |
|
126 |
/usr/bin/mplayer will run on AMD Athlon64 w/ SSE3 or higher processor. |