コンパイラオプションを変更した時に、プリプロセッサが見る定義済みマクロを表示する方法について簡単にまとめてみた。
例えば、下記は-mavx
と-mavx512f
での違い。
$ gcc -mavx -dM -E - </dev/null |sort > /tmp/1
$ gcc -mavx512f -dM -E - </dev/null |sort > /tmp/2
$ diff -u /tmp/1 /tmp/2
--- /tmp/1 2016-12-03 02:51:15.202904893 -0800
+++ /tmp/2 2016-12-03 02:51:21.768152014 -0800
@@ -9,7 +9,9 @@
#define __ATOMIC_RELEASE 3
#define __ATOMIC_SEQ_CST 5
#define __AVX__ 1
-#define __BIGGEST_ALIGNMENT__ 32
+#define __AVX2__ 1
+#define __AVX512F__ 1
+#define __BIGGEST_ALIGNMENT__ 64
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __CHAR16_TYPE__ short unsigned int
#define __CHAR32_TYPE__ unsigned int
@@ -72,6 +74,8 @@
#define __FLT_MIN__ 1.17549435082228750797e-38F
#define __FLT_MIN_EXP__ (-125)
#define __FLT_RADIX__ 2
+#define __FP_FAST_FMA 1
+#define __FP_FAST_FMAF 1
#define __FXSR__ 1
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
こんなのもあった。
- https://sourceforge.net/p/predef/wiki/Home/