Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SSE instruction set not enabled

I am getting trouble with this error: "SSE instruction set not enabled". How I can figure this out?

I have ACER i7, Ubuntu 11.10, please any one can help me?

Any help will be appreciated!


Also running:

 sudo cat /proc/cpuinfo | grep flags

Gives:

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clfl
ush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfm
on pebs bts xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl
vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt xsave avx lahf_lm 
ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid

Actually i was trying to install gazebo-1.0.0-RC2-x86_64, and getting this error.

/usr/lib/gcc/i686-linux-gnu/4.6.1/include/emmintrin.h:32:3: error: #error "SSE2 
instruction set not enabled"
In file included from /home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/
deps/opende/src/quickstep.cpp:39:0:
/usr/lib/gcc/i686-linux-gnu/4.6.1/include/xmmintrin.h:32:3: error: #error "SSE i
nstruction set not enabled"
/home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/deps/opende/src/quicks
tep.cpp: In function ‘dReal dot6(dRealPtr, dRealPtr)’:
/home/bkhelifa/Downloads/software/gazebo-1.0.0-RC2-x86_64/deps/opende/src/quicks
tep.cpp:537:3: error: ‘__m128d’ was not declared in this scope
...

I already have this option in my cmakefile

if (SSE3_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse3")
endif()
if (SSSE3_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -mssse3")
endif()
if (SSE4_1_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse4.1")
endif()
if (SSE4_2_FOUND)
  set (CMAKE_C_FLAGS_ALL "${CMAKE_C_FLAGS_ALL} -msse4.2")
endif()
like image 364
ksolid Avatar asked Feb 04 '12 21:02

ksolid


3 Answers

One of your header files checks to ensure that SSE is enabled. It appears that your if statements aren't working.

If you add -march=native it should pick the best CPU arch and flags to compile for based on your processor, or you can explicitly use -march=corei7 -mavx -mpclmul, which is useful for distcc. Also, -mfpmath=sse/-mfpmath=387 will tell the compiler to generate SSE/x87 instructions for floating point math. Depending on your processor, either could be faster, but I think Intel processors are usually better at SSE.

If you want to check what gcc is enabling using the native flag run gcc -march=native -Q --help=target -v.

like image 120
jbo5112 Avatar answered Sep 21 '22 07:09

jbo5112


I got the same error and I think I've found the proper solution!

The problem is that you are included the emmintrin.h. I did the same. What is more if I defined SSE2, SSE and MMX before including this file I got the following message: warning: "SSE2" redefined [enabled by default]

So I tried to investigate where SSE2 is defined and/or used I found that this file is included by x86intrin.h. So include this file and according to the -msse* flags the proper *intrin.h files will be included automatically!

It works for me nicely (g++ 4.7.2-5).

I hope I could help!

like image 40
TrueY Avatar answered Sep 20 '22 07:09

TrueY


I just built this on FreeBSD by adding this to the "Makefile" in /usr/ports/audio/soundtouch :

CC=             gcc46
CXX=            g++46
CPP=            cpp46
CFLAGS+=        -msse

I hope the rest of the "phonon-gstreamer" plugins compile with this.

like image 31
Overloaded_Operator Avatar answered Sep 19 '22 07:09

Overloaded_Operator