Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

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

SergeyKostrov
Valued Contributor II
488 Views

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.
...

0 Kudos
5 Replies
Judith_W_Intel
Employee
488 Views

 

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

0 Kudos
SergeyKostrov
Valued Contributor II
488 Views
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!
0 Kudos
SergeyKostrov
Valued Contributor II
488 Views
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 ] ...
0 Kudos
SergeyKostrov
Valued Contributor II
488 Views
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 ] ...
0 Kudos
SergeyKostrov
Valued Contributor II
488 Views
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.
0 Kudos
Reply