Thanks for the feedback again! I'll try it. My only fear with check_cxx_compiler_flag was that I guess having the flag available in the compiler doesn't necessarily means your processor supports it. On Tue, Mar 23, 2010 at 12:56 PM, Rosen Diankov wrote: > i'm pasting cmake code i use for sse checks. it checks for both sse1 > and sse2, although similar checks can be used for sse3-5, there's also > a check for msvc > > # check for SSE extensions > include(CheckCXXSourceRuns) > if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) >  set(SSE_FLAGS) > >  set(CMAKE_REQUIRED_FLAGS "-msse2") >  check_cxx_source_runs(" >    #include > >    int main() >    { >        __m128d a, b; >        double vals[2] = {0}; >        a = _mm_loadu_pd(vals); >        b = _mm_add_pd(a,a); >        _mm_storeu_pd(vals,b); >        return 0; >     }" >     HAS_SSE2_EXTENSIONS) > >  set(CMAKE_REQUIRED_FLAGS "-msse") >  check_cxx_source_runs(" >    #include >    int main() >    { >        __m128 a, b; >        float vals[4] = {0}; >        a = _mm_loadu_ps(vals); >        b = a; >        b = _mm_add_ps(a,b); >        _mm_storeu_ps(vals,b); >        return 0; >    }" >    HAS_SSE_EXTENSIONS) > >  set(CMAKE_REQUIRED_FLAGS) > >  if(HAS_SSE2_EXTENSIONS) >    message(STATUS "Using SSE2 extensions") >    set(SSE_FLAGS "-msse2 -mfpmath=sse") >  elseif(HAS_SSE_EXTENSIONS) >    message(STATUS "Using SSE extensions") >    set(SSE_FLAGS "-msse -mfpmath=sse") >  endif() > >  add_definitions(${SSE_FLAGS}) > elseif(MSVC) >  check_cxx_source_runs(" >    #include > >    int main() >    { >        __m128d a, b; >        double vals[2] = {0}; >        a = _mm_loadu_pd(vals); >        b = _mm_add_pd(a,a); >        _mm_storeu_pd(vals,b); >        return 0; >     }" >     HAS_SSE2_EXTENSIONS) >  if( HAS_SSE2_EXTENSIONS ) >    message(STATUS "Using SSE2 extensions") >    add_definitions( "/arch:SSE2 /fp:fast -D__SSE__ -D__SSE2__" ) >  endif() > endif() > > > > > > 2010/3/24 Jose Gonzalez : >> Thanks for the comments? >> >> What about  check_cxx_compiler_flag("-msse2" COMPILER_SUPPORT_SSE2)? >> Have you ever tried it? >> >> On Tue, Mar 23, 2010 at 12:16 PM, Radu Bogdan Rusu >> wrote: >>> Depending on what compiler and cpu you use, some of these flags might be already turned on by default. You can check >>> that using: >>> >>> $ gcc -Q -O3 --help=target >>> >>> for example. >>> >>> Other than that, we don't have a proper way to enable/disable different SSE optimizations for now. Most ROS packages >>> cram a add_definitions ("-msse... etc") in their CMakeLists.txt. >>> >>> Patches to make this more standard across multiple platforms and enable/disable SSE1-5 automatically would be great! >>> >>> Cheers, >>> Radu. >>> >>> Jose Gonzalez wrote: >>>> Hi, >>>> >>>> Doing some experiments in the past with OpenCV (linux/g++) I realized >>>> that there is a significant performance difference between the >>>> versions compiled with autoconf and cmake. Digging in the compilation >>>> scripts I came to the conclusion that the only extra flags that were >>>> added by the autoconf scripts were the SSE optimizations (and openMP). >>>> >>>> Talking about the SSE optimizations, I can see how ROS sets the flags >>>> in a similar way. When the detected platform is i686, all the SSE >>>> optimizations are disabled by default (there is a comment "SSE/SSE2 >>>> might probably be not available for some old AMD or VIA processors"). >>>> Before finding out a solution by myself I'd like to ask the list if >>>> somebody knows a standard way of testing for SSE optimizations in >>>> cmake. >>>> >>>> Thanks, >>>> Jose >>>> >>>> ------------------------------------------------------------------------------ >>>> Download Intel® Parallel Studio Eval >>>> Try the new software tools for yourself. Speed compiling, find bugs >>>> proactively, and fine-tune applications for parallel performance. >>>> See why Intel Parallel Studio got high marks during beta. >>>> http://p.sf.net/sfu/intel-sw-dev >>>> _______________________________________________ >>>> ros-users mailing list >>>> ros-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/ros-users >>>> _______________________________________________ >>>> ros-users mailing list >>>> ros-users@code.ros.org >>>> https://code.ros.org/mailman/listinfo/ros-users >>> >>> -- >>> | Radu Bogdan Rusu | http://rbrusu.com/ >>> _______________________________________________ >>> ros-users mailing list >>> ros-users@code.ros.org >>> https://code.ros.org/mailman/listinfo/ros-users >>> >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users >> > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users >