C ++ SSE3 instruction set not included

I am trying to handle some markov hidden code in C ++ using the HMMlib library from

http://www.cs.au.dk/~asand/?page_id=152 

I am using ubuntu 12.04, with gcc / g ++ 4.6

My compilation step command:

 g++ -I/usr/local/boost_1_52_0 -I../ MAIN.cpp 

This results in the following error:

 In file included from ../HMMlib/allocator_traits.hpp:25:0, from ../HMMlib/hmm_table.hpp:25, from MAIN.cpp:1: /usr/lib/gcc/i686-linux-gnu/4.6/include/pmmintrin.h:32:3: error: #error "SSE3 instruction set not enabled" In file included from ../HMMlib/hmm_table.hpp:25:0, from MAIN.cpp:1: ../HMMlib/allocator_traits.hpp:50:33: error: '__m128d' was not declared in this scope ../HMMlib/allocator_traits.hpp:50:40: error: template argument 2 is invalid ../HMMlib/allocator_traits.hpp:77:32: error: '__m128' was not declared in this scope ../HMMlib/allocator_traits.hpp:77:38: error: template argument 2 is invalid In file included from ../HMMlib/hmm_table.hpp:26:0, from MAIN.cpp:1: ../HMMlib/operator_traits.hpp:112:32: error: '__m128d' was not declared in this scope ../HMMlib/operator_traits.hpp:112:39: error: template argument 2 is invalid ../HMMlib/operator_traits.hpp:205:31: error: '__m128' was not declared in this scope ../HMMlib/operator_traits.hpp:205:37: error: template argument 2 is invalid In file included from ../HMMlib/hmm_table.hpp:27:0, from MAIN.cpp:1: ../HMMlib/float_traits.hpp:37:13: error: '__m128' does not name a type ../HMMlib/float_traits.hpp:43:13: error: '__m128d' does not name a type In file included from ../HMMlib/hmm.hpp:34:0, from MAIN.cpp:3: ../HMMlib/sse_operator_traits.hpp:63:35: error: '__m128' was not declared in this scope ../HMMlib/sse_operator_traits.hpp:63:41: error: template argument 2 is invalid ../HMMlib/sse_operator_traits.hpp:95:36: error: '__m128d' was not declared in this scope ../HMMlib/sse_operator_traits.hpp:95:43: error: template argument 2 is invalid 

I have no idea what these errors mean and how to resolve them.

+4
source share
1 answer

You must enable the gcc sse3 interface with a command line parameter. Try compiling with

 g++ -msse3 -I/usr/local/boost_1_52_0 -I../ MAIN.cpp 

or selection of a set of instructions by the processor

 g++ -march=core2 -I/usr/local/boost_1_52_0 -I../ MAIN.cpp 

Reply to your comment: -march=native selects the instruction set for the processor that you are currently using.

Note that -msse3 already selects a subset of -msse2 and -msse

+7
source

All Articles