From: abv Date: Thu, 10 Oct 2013 10:41:01 +0000 (+0400) Subject: 0024227: Enable SS2 instructions for OCCT building X-Git-Tag: V6_7_0_beta~81 X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff_plain;h=11fca7c1778d8f40ee108ba35bcadc7c9a806cf2 0024227: Enable SS2 instructions for OCCT building Test for exceptions corrected to handle FPE when built with with SSE2 option on Windows (NumericError raised instead of specific exceptions) New test for performance of bspline intersections added sse2 added; build bitness hardlinked to compiler "bitness" variable was hidden --- diff --git a/CMakeLists.txt b/CMakeLists.txt index f765036cdd..e2ad451358 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,16 +13,13 @@ set_property(GLOBAL PROPERTY 3RDPARTY_USE_FOLDERS ON) set(BUILD_SHARED_LIBS ON) -IF("${BUILD_TYPE}" STREQUAL "${CMAKE_BUILD_TYPE}" AND "${BUILD_BITNESS}" STREQUAL "${BUILD_BITNESS1}") +IF("${BUILD_TYPE}" STREQUAL "${CMAKE_BUILD_TYPE}") SET(CHANGES_ARE_NEEDED OFF) ELSE() SET(CHANGES_ARE_NEEDED ON) ENDIF() -set(BUILD_BITNESS 32 CACHE STRING "Bitness of the OCCT project") -SET_PROPERTY(CACHE BUILD_BITNESS PROPERTY STRINGS 32 64) - -SET(BUILD_BITNESS1 ${BUILD_BITNESS} CACHE INTERNAL "Temporary bitness is created to check whether change 3rdparty paths or not" FORCE) +MATH(EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)") SET( CMAKE_BUILD_TYPE ${BUILD_TYPE} CACHE INTERNAL "Build type of the OCCT" FORCE ) @@ -54,7 +51,7 @@ else() SET(COMPILER ${CMAKE_GENERATOR}) endif() -if (${BUILD_BITNESS} STREQUAL 64) +if (${COMPILER_BITNESS} STREQUAL 64) add_definitions(-D_OCC64) endif() @@ -80,7 +77,10 @@ IF(WIN32) ENDIF() ENDIF() -# set warning level 4 +# sse2 +add_definitions(/arch:SSE2) + +# warning level 4 IF(MSVC) if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") @@ -135,9 +135,9 @@ ENDFUNCTION() FUNCTION(FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT) string( TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME ) - LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${BUILD_BITNESS}") - LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${BUILD_BITNESS}") - LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${BUILD_BITNESS}") + LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${COMPILER_BITNESS}") + LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}") + LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER_BITNESS}") LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+") LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}") @@ -356,7 +356,7 @@ ENDIF() IF (3RDPARTY_USE_TBB) ADD_DEFINITIONS(-DHAVE_TBB) - IF(${BUILD_BITNESS} STREQUAL 32) + IF(${COMPILER_BITNESS} STREQUAL 32) SET (TBB_ARCH_NAME ia32) ELSE() SET (TBB_ARCH_NAME intel64) diff --git a/src/QABugs/QABugs_11.cxx b/src/QABugs/QABugs_11.cxx index 69ab34dfad..06694ba2b7 100755 --- a/src/QABugs/QABugs_11.cxx +++ b/src/QABugs/QABugs_11.cxx @@ -2464,13 +2464,13 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co di << " 4.0 / 0.0 = " << res << " Does not Caught... KO"<< "\n"; Succes = Standard_False; } -#if defined(SOLARIS) || defined(WNT) - catch(Standard_DivideByZero) -#else - catch(Standard_NumericError) -#endif + catch(Standard_DivideByZero) // Solaris, Windows w/o SSE2 { - di << " Ok"<< "\n"; + di << " Ok" << "\n"; + } + catch(Standard_NumericError) // Linux, Windows with SSE2 + { + di << " Ok" << "\n"; } catch(Standard_Failure) { //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl; @@ -2519,13 +2519,13 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co di << "-- "<