如果我們查詢:-march=native
擴展到,結果似乎理所應當的爲什麼`gcc -Q -march = corei7-avx --help = target`謊言?
$ gcc -Q -march=native --help=target | grep -E '^\s+-.*(sse|march)'
-march= corei7-avx
-mno-sse4 [disabled]
-msse [enabled]
-msse2 [enabled]
-msse2avx [disabled]
-msse3 [enabled]
-msse4 [enabled]
-msse4.1 [enabled]
-msse4.2 [enabled]
-msse4a [disabled]
-msse5
-msseregparm [disabled]
-mssse3 [enabled]
但如果是直接指定的架構,GCC下降上證所標誌,將啓用native
,爲什麼呢?
$ gcc -Q -march=corei7-avx --help=target | grep -E '^\s+-.*sse'
-mno-sse4 [enabled]
-msse [disabled]
-msse2 [disabled]
-msse2avx [disabled]
-msse3 [disabled]
-msse4 [disabled]
-msse4.1 [disabled]
-msse4.2 [disabled]
-msse4a [disabled]
-msse5
-msseregparm [disabled]
-mssse3 [disabled]
然而,編譯與-march=corei7-avx
表明,它們將被啓用。
$ echo | gcc -march=corei7-avx -dM -E - | grep -i sse
#define __SSE4_1__ 1
#define __SSE4_2__ 1
#define __SSE2_MATH__ 1
#define __SSE_MATH__ 1
#define __SSE2__ 1
#define __SSSE3__ 1
#define __SSE__ 1
#define __SSE3__ 1
Lie意味着欺騙的意圖,我懷疑是這種情況,使用*不正確*或其他類似的詞似乎更合適。 – 2014-12-11 02:47:28