Compatibility Issue detected: Intel C++ compiler does not support _M_IX86_FP macro

Compatibility Issue detected: Intel C++ compiler does not support _M_IX86_FP macro

Compatibility Issue detected: Intel C++ compiler does not support _M_IX86_FP macro. Take a look at 'Predefined Macros' topic on MSDN for more information.

...
_M_IX86_FP - Expands to a value indicating which /arch compiler option was used:

0 if /arch was not used.
1 if /arch:SSE was used.
2 if /arch:SSE2 was used.

See /arch (Minimum CPU Architecture) for more information.
...

6 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.

 

Thank you for reporting this. I have entered this as DPD200248334 in our internal bug tracking database.

BTW, it looks like Microsoft sets the value of this macro to 2 (not 0) if /arch is not specified... At least that's what i saw with MSVC++ 2008.

Judy

I actually detected that issue with VS 2005. I will do verifications with VS 2008, VS 2010 and VS 2012 some time later. Thanks, Judy!

Outputs for the Test Case 4 ( VS 2010 ):

cl.exe /MD Test016.cpp
...
_M_IX86_FP : [ 0 ]
...

cl.exe /MD /arch:SSE Test016.cpp
...
_M_IX86_FP : [ 1 ]
...

cl.exe /MD /arch:SSE2 Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:SSE3 Test016.cpp
...
_M_IX86_FP : [ 0 ]
...

cl.exe /MD /arch:SSSE3 Test016.cpp
...
_M_IX86_FP : [ 0 ]
...

cl.exe /MD /arch:SSE4.1 Test016.cpp
...
_M_IX86_FP : [ 0 ]
...

cl.exe /MD /arch:SSE4.2 Test016.cpp
...
_M_IX86_FP : [ 0 ]
...

cl.exe /MD /arch:AVX Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

Outputs for the Test Case 4 ( VS 2012 ):

cl.exe /MD Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:SSE Test016.cpp
...
_M_IX86_FP : [ 1 ]
...

cl.exe /MD /arch:SSE2 Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:SSE3 Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:SSSE3 Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:SSE4.1 Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:SSE4.2 Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

cl.exe /MD /arch:AVX Test016.cpp
...
_M_IX86_FP : [ 2 ]
...

Here are a couple of comments:

- I don't see a consistency with outputs and by some unexplained reason they are different ( just compare results... )

- Why does the macro have FP inside? ( Note: I would translate FP to as Floating-Point )

- I think Intel C++ compiler team should consider its own macro, something like, __INTEL_ISA_, or so

I will proceed with my own simple workaround based on an external macro and it will be initialized to an instruction set code ( like, SSE, SSE2, etc ) in a command line of a C++ compiler.

Connectez-vous pour laisser un commentaire.