The predefined macro _M_IX86_FP is defined when compiling for 32-bit. The value of the macro is determined by the /arch switch:
/arch not used -> _M_IX86_FP == 0
/arch:SSE -> _M_IX86_FP == 1
/arch:SSE2 -> _M_IX86_FP == 2
VC2010 now supports /arch:AVX. However, _M_IX86_FP gets set to '2' which is the same value as /arch:SSE2. I don't know if this is a bug or by design. It would be nice if _M_IX86_FP had a new unique value when using /arch:AVX (=3 perhaps?).
_M_IX86_FP (or an equivilent x64 macro) is not defined when compiling for x64. I assume this decision was by design as SSE2 is the default architecture for SIMD code generation for x64 targets. However, with the advent of the /arch:AVX option, it follows that there should be a macro that can be queried by projects when enabling /arch:AVX for x64 builds.