Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

SSE 3.0, SSE 4.2 in visual studio 2010 ultimate

arrahul
Beginner
1,539 Views
Hai

Please help me in enbaling the SSE 3 and SSE 4.2 in visual studio 2010 ultimate. I am currently working on a sandy bridge processor based desktopplatform running on win 7 SP1. The AVX option is getting enabled through /arch:AVX command line option, but not SSE options. I just have options of enabling SSE and SSE2, not higher versions. I tried with/QxAVX, /QaxAVX,/arch:SSE, /arch:SSE2...when I tried to compile the code , it is ignoring these options. It is just accepting /arch:AVX. I want the SSE 3.0 and higheroptionsto be enabled in this tool.Please help.

Thanks
Rahul
0 Kudos
12 Replies
Alexander_W_Intel
1,539 Views
Hi Rahul,

I think this is a double post: http://software.intel.com/en-us/forums/showthread.php?t=84683 . There you can already find an answer.

Thanks,
Alex
0 Kudos
zhou__patrick
Beginner
1,539 Views

This problem solved?

0 Kudos
TimP
Honored Contributor III
1,539 Views

If you are running a Visual Studio project, you must select Intel C++ in order to use Intel compiler and associated options.

When you made a similar post on Intel C++ forum, the assumption was that you had selected or at least installed Intel C++, but your post here leaves it in doubt.  Please choose a single forum most appropriate to your question.

VS2012 supports /arch:SSE2 and /arch:AVX, but not options which aren't applicable to AMD platforms.  I guess VS2010 may accept /arch:AVX but not do much useful with it.

0 Kudos
andysem
New Contributor III
1,539 Views

AFAIK, MSVC doesn't generate any advanced SSE code (VS2012 is claimed to have a vectorizer, but I don't know how clever it is and what instruction set it uses). The /arch: switches mostly control how the floating point computations are compiled - to be performed by x87 FPU or SSE (the latter being the default). I think, /arch:AVX is mostly equivalent to /arch:SSE2, except it makes SSE code VEX-encoded, but I didn't verify that.

Anyway, unlike GCC, in MSVC all SSE/AVX intrinsics are available regardless of this compiler switch, you just have to include immintrin.h. It is your responsibility though to perform a CPU check and dispatch to the code version that suits the CPU.

0 Kudos
SergeyKostrov
Valued Contributor II
1,539 Views
>>...when I tried to compile the code , it is ignoring these options. It is just accepting /arch:AVX... By the way, the user is right and this is what Microsoft C++ compiler help displays: cl.exe -help ... /arch: minimum CPU architecture requirements, one of: SSE - enable use of instructions available with SSE enabled CPUs SSE2 - enable use of instructions available with SSE2 enabled CPUs AVX - enable use of Intel(R) Advanced Vector Extensions instructions ... Please try to contact Microsoft's C++ compiler support.
0 Kudos
Bernard
Valued Contributor I
1,539 Views

So there is no support of SSE3 and SSE4 instructions set? I thought that /arch:SSE2 switch means minimal ISA supported.

0 Kudos
SergeyKostrov
Valued Contributor II
1,539 Views
>>...So there is no support of SSE3 and SSE4 instructions set? Yes as you can see. >>...I thought that /arch:SSE2 switch means minimal ISA supported. It means that SSE2 is supported ( take a look at MSDN ). By the way, I just found in MSDN the following statement: ... /arch is only available when compiling for the x86 platform. This compiler option is not available when compiling for x64 or Itanium. ...
0 Kudos
SergeyKostrov
Valued Contributor II
1,539 Views
Rahul, Are you compiling your project for x86 or x64 platform?
0 Kudos
Bernard
Valued Contributor I
1,539 Views

Thanks Sergey

0 Kudos
Sukruth_H_Intel
Employee
1,539 Views

Hi Rahul,

             Can i know what is the processor that you are using? Is it intel or non-intel processor? However you can install CPU-Z and see the  instructions specified by this tool. See if you have SSE3 and SSE4.x.

Regards,

Sukruth H V 

0 Kudos
Sukruth_H_Intel
Employee
1,539 Views

Hi Rahul,

             I am sorry i missed the word sandy bridge mentioned in the question. Let me investigate this and get back to you.

Regards,

Sukruth H V

0 Kudos
Sukruth_H_Intel
Employee
1,539 Views

Hi Rahul,

             So the issue here is that, You have not selected the Intel C++ compiler and you are using the Visual C++ compiler. Please select Intel C++ compiler and then goto Properties --> Code Generation [Intel C++] --> Intel Processor-Specific Optimization and then select the SIMD instruction set that you desire. This is what even Tim P wanted to convey.

Regards,

Sukruth H V

0 Kudos
Reply