- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm targeting my App only for hardware that supports SSE3 or later and am using the -xSSE3 compiler option. When I run my App on an AMD Opteron 6100 series processor it indicates the processor doesn't have the required instructions:
Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2 and SSE3 instructions.
The processor is a number of years old, but it supports SSE3. In fact, I checked the cpuid instruction and it supported all the instructions listed in the message:
cpuid(EAX=1):
ECX: 0x802009
EDX: 0x178bfbff
Does anyone know exactly which cpuid flags are checked when compiling with -xSSE3? I'm using C++ compiler 2016.2.181
Thanks,
Adam
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Please refer to the following URL: https://software.intel.com/en-us/node/581749#260BF03D-0E6C-462F-A087-98512013B489 in Intel C++ Compiler 16.0 User's guide and you can see the following documented:
"Compiler options m and arch produce binaries that should run on processors not made by Intel that implement the same capabilities as the corresponding Intel® processors.
The -x and /Qx options enable additional optimizations not enabled with options -m or /arch (nor with options –ax and/Qax)."
Could you please try using /arch:SSE3 compiler option instead -xSSE3. The documentation for this option is available at https://software.intel.com/en-us/node/581724.
Thanks and Regards
Anoop
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Please refer to the following URL: https://software.intel.com/en-us/node/581749#260BF03D-0E6C-462F-A087-98512013B489 in Intel C++ Compiler 16.0 User's guide and you can see the following documented:
"Compiler options m and arch produce binaries that should run on processors not made by Intel that implement the same capabilities as the corresponding Intel® processors.
The -x and /Qx options enable additional optimizations not enabled with options -m or /arch (nor with options –ax and/Qax)."
Could you please try using /arch:SSE3 compiler option instead -xSSE3. The documentation for this option is available at https://software.intel.com/en-us/node/581724.
Thanks and Regards
Anoop
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Anoop, that solves my problem. The -msse3 works fine on an AMD processor. I guess I didn't read far enough into the details of the docs for -x. Seems like this detail is important enough that it could be mentioned in the brief description for for the -x option.
Also seems like the error message that is added to the cpu check could be a little more clear. I now understand that the "Intel" in the error message is supposed to apply to all the instructions, ie Intel X87, Intel CMOV ...Intel SSE3, and that Intel SSE3 is not the same as SSE3. It'd be a lot clearer to just say "you need an Intel brand processor that supports the mentioned instruction sets".
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There are only a few minor differences between intel and amd sse3, but there have been major problems in the past with detection of isa support on amd. On the other hand, if no cpus have been made without full sse3 support in a decade, the msse3 option is fairly safe. You have additional options to avoid use of the instructions which differ, such as prec-div prec-sqrt imf-arch-consistency. As you began to see, there are opportunities for study and reading between the lines.

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