Hatena::ブログ(Diary)

WebService::Blog->new( user => ’hide_o_55’ )

2014-05-22

SSE 命令の使用可否チェックする CMake モジュールを単独リポジトリにした

以前書いた SSE 命令の使用可否を判定する CMake モジュールを Gist から単独のリポジトリに移動しました。

https://github.com/hideo55/CMake-FindSSE


Gistのままでもcloneできますが、リポジトリにしておいた方が他の人が利用しやすいだろうという考えによるものです。

利用する場合は以下のようにサブモジュールとするといいと思います。

git submodule add https://github.com/hideo55/CMake-FindSSE.git cmake/FindSSE

あとは、CMakeLists.txt に以下のように記述するだけです。

SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
INCLUDE(FindSSE/FindSSE)
FindSSE ()
IF(SSE3_FOUND)
    IF(SSSE3_FOUND)
            SET(CXX_DFLAGS -DHSDS_USE_SSE3 -msse3 -mssse3)
    ENDIF(SSSE3_FOUND)
ENDIF(SSE3_FOUND)

IF(SSE4_2_FOUND)
        SET(CXX_DFLAGS ${CXX_DFLAGS} -DHSDS_USE_POPCNT -msse4.2 -mpopcnt)
ENDIF(SSE4_2_FOUND)
ADD_DEFINITIONS(${CXX_DFLAGS})

2013-05-25

CMakeでSSEが使えるか調べる

CMakeで、その環境でSSE命令が使えるかどうかを調べるモジュールを作りました。ベースはこれですが、マクロ化、SSE4.2対応、-msse4.1やーmsse4.2を使えないgcc 4.3未満の場合の対応を追加してます。

あとは、CMakeLists.txtで以下のようにすればOKです。

INCLUDE(FindSSE)
FindSSE ()
IF(SSE4_2_FOUND)
    SET(SSE_DEFINITIONS -DUSE_SSE4_2 -msse4.2)
ENDIF(SSE4_2_FOUND)