- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
...
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 ]
...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 ]
...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page