aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhayati ayguen <h_ayguen@web.de>2021-04-19 19:29:46 +0200
committerMárton Danóczy <marton78@gmail.com>2022-04-04 13:32:31 +0200
commite9e028b88dbc188597a766ebc1a5bdb38467c560 (patch)
tree06cd49af95eb1d25a11b35b64ca8b9e1fbc6bd25
parent81a79bb7dfec57668752cd5600da35c5da6c76c5 (diff)
downloadpffft-upstream-master.tar.gz
add cross build scripts and github build actionsupstream-master
* build on Ubuntu Linux * cross build for Windows on Ubuntu Linux * build on Windows with MSVC (Visual Studio) * build on Windows with MINGW (gcc) see https://ariya.io/2020/07/on-github-actions-with-msys2 * build on MacOS (x64_64) * create artifacts for all build machines * allow finding MIPP headers below in $ENV{HOME}/.local Signed-off-by: hayati ayguen <h_ayguen@web.de>
-rw-r--r--.github/workflows/c-cpp.yml279
-rw-r--r--.gitignore1
-rw-r--r--CMakeLists.txt121
-rw-r--r--bench_conv.cpp2
-rw-r--r--cmake/FindMIPP.cmake13
-rw-r--r--cmake/target_optimizations.cmake1
-rwxr-xr-xcross_build_mingw32.sh25
-rwxr-xr-xcross_build_mingw64.sh25
-rw-r--r--mingw-w32-i686.cmake25
-rw-r--r--mingw-w64-x64_64.cmake25
-rw-r--r--pf_cic.cpp5
-rw-r--r--pf_conv.cpp8
-rw-r--r--pf_conv.h4
-rw-r--r--pf_conv_dispatcher.cpp8
-rw-r--r--pffft.hpp2
15 files changed, 477 insertions, 67 deletions
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
new file mode 100644
index 0000000..9a5430c
--- /dev/null
+++ b/.github/workflows/c-cpp.yml
@@ -0,0 +1,279 @@
+name: C/C++ CI
+
+on:
+ push:
+ branches:
+ - master
+ - github_actions
+ pull_request:
+ branches:
+ - master
+ - github_actions
+
+env:
+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+ BUILD_TYPE: Release
+
+jobs:
+ build_w_mipp_ubuntu-amd64:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: check out MIPP
+ uses: actions/checkout@master
+ with:
+ repository: hayguen/MIPP
+ path: ./MIPP
+ - name: cmake configure MIPP
+ run: cmake -S MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$HOME/.local
+ - name: cmake install MIPP headers
+ run: cmake --build MIPP_build --target install && ls -alh $HOME/.local/ && ls -alh $HOME/.local/include/
+
+ - uses: actions/checkout@v2
+ - name: cmake_make_simd_float_double
+ run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_full
+ - name: cmake_make_simd_float
+ run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_DOUBLE=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_float
+ - name: cmake_make_simd_double
+ run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_FLOAT=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_double
+ - name: cmake_make_no-simd_float_double
+ run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_full
+ - name: cmake_make_no-simd_scalar_float_double
+ run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_SCALAR_VECT=ON -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
+ - name: compress
+ run: tar zcvf pffft_w_mipp_ubuntu-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_ubuntu_builds
+ path: pffft_w_mipp_ubuntu-amd64.tar.gz
+
+ build_ubuntu-amd64:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: cmake_make_simd_float_double
+ run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_full
+ - name: cmake_make_simd_float
+ run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_DOUBLE=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_float
+ - name: cmake_make_simd_double
+ run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_FLOAT=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_double
+ - name: cmake_make_no-simd_float_double
+ run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_full
+ - name: cmake_make_no-simd_scalar_float_double
+ run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_SCALAR_VECT=ON -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
+ - name: compress
+ run: tar zcvf pffft_ubuntu-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_ubuntu_builds
+ path: pffft_ubuntu-amd64.tar.gz
+
+ cross_build_win_from_linux:
+ runs-on: ubuntu-20.04
+
+ steps:
+ - name: prerequisites
+ run: sudo apt -qq update && sudo apt -yqq install gcc-mingw-w64 g++-mingw-w64
+
+ - name: check out MIPP
+ uses: actions/checkout@master
+ with:
+ repository: hayguen/MIPP
+ path: ./MIPP
+ - name: cmake configure MIPP
+ working-directory: ${{runner.workspace}}
+ run: cmake -S pffft/MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$(pwd)
+ - name: cmake install MIPP headers
+ working-directory: ${{runner.workspace}}
+ run: cmake --build MIPP_build --target install
+
+ - uses: actions/checkout@v2
+ - name: build_w32_no-simd
+ working-directory: ${{runner.workspace}}
+ run: cd $GITHUB_WORKSPACE && bash ./cross_build_mingw32.sh no-simd -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF
+ - name: build_w32_simd_full
+ working-directory: ${{runner.workspace}}
+ run: X=$(pwd) && cd $GITHUB_WORKSPACE && bash ./cross_build_mingw32.sh simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=pentium4 -DTARGET_C_ARCH=pentium4 -DMIPP_INCLUDE_DIRS=$X/include/mipp
+
+ - name: build_w64_no-simd
+ working-directory: ${{runner.workspace}}
+ run: cd $GITHUB_WORKSPACE && bash ./cross_build_mingw64.sh no-simd -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF
+ - name: build_w64_simd_full
+ working-directory: ${{runner.workspace}}
+ run: X=$(pwd) && cd $GITHUB_WORKSPACE && bash ./cross_build_mingw64.sh simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=sandybridge -DTARGET_C_ARCH=sandybridge -DMIPP_INCLUDE_DIRS=$X/include/mipp
+
+ - name: compress
+ run: tar zcvf pffft_cross-build-windows-from-linux-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_w32_no-simd build_w32_simd_full build_w64_no-simd build_w64_simd_full
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_windows_from_cross_builds
+ path: pffft_cross-build-windows-from-linux-amd64.tar.gz
+
+
+ build_win_msvc:
+ # The CMake configure and build commands are platform agnostic and should work equally
+ # well on Windows or Mac. You can convert this to a matrix build if you need
+ # cross-platform coverage.
+ # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
+ runs-on: windows-2019
+
+ steps:
+ - name: check out MIPP
+ uses: actions/checkout@master
+ with:
+ repository: hayguen/MIPP
+ path: ./MIPP
+ - name: cmake configure MIPP
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ run: cmake -S pffft/MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$(pwd)
+ - name: cmake install MIPP headers
+ working-directory: ${{runner.workspace}}
+ run: cmake --build MIPP_build --target install
+
+ - uses: actions/checkout@v2
+
+ - name: Configure CMake No-SIMD
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ run: cmake -S $GITHUB_WORKSPACE -B build_no-simd -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DUSE_SIMD=OFF -DTARGET_CXX_ARCH=none -DTARGET_C_ARCH=none
+ - name: Build No-SIMD
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ # Execute the build. You can specify a specific target with "--target <NAME>"
+ run: cmake --build build_no-simd --config $BUILD_TYPE
+
+ - name: Configure CMake SSE2
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ run: cmake -S $GITHUB_WORKSPACE -B build_sse2 -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DTARGET_CXX_ARCH=SSE2 -DTARGET_C_ARCH=SSE2 -DMIPP_INCLUDE_DIRS=$(pwd)/include/mipp
+ - name: Build SSE2
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ # Execute the build. You can specify a specific target with "--target <NAME>"
+ run: cmake --build build_sse2 --config $BUILD_TYPE
+
+ - name: Configure CMake AVX
+ # Use a bash shell so we can use the same syntax for environment variable
+ # access regardless of the host operating system
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ run: cmake -S $GITHUB_WORKSPACE -B build_avx -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DTARGET_CXX_ARCH=AVX -DTARGET_C_ARCH=AVX -DMIPP_INCLUDE_DIRS=$(pwd)/include/mipp
+ - name: Build AVX
+ working-directory: ${{runner.workspace}}
+ shell: bash
+ # Execute the build. You can specify a specific target with "--target <NAME>"
+ run: cmake --build build_avx --config $BUILD_TYPE
+
+ - name: Configure CMake AVX2
+ # Use a bash shell so we can use the same syntax for environment variable
+ # access regardless of the host operating system
+ shell: bash
+ working-directory: ${{runner.workspace}}
+ run: cmake -S $GITHUB_WORKSPACE -B build_avx2 -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DENABLE_PFDSP=ON -DTARGET_CXX_ARCH=AVX2 -DTARGET_C_ARCH=AVX2 -DMIPP_INCLUDE_DIRS=$(pwd)/include/mipp
+ - name: Build AVX2
+ working-directory: ${{runner.workspace}}
+ shell: bash
+ # Execute the build. You can specify a specific target with "--target <NAME>"
+ run: cmake --build build_avx2 --config $BUILD_TYPE
+
+ - name: compress
+ working-directory: ${{runner.workspace}}
+ run: tar zcvf pffft_windows-msvc-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_no-simd build_sse2 build_avx build_avx2
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_windows_msvc_builds
+ path: ${{runner.workspace}}/pffft_windows-msvc-amd64.tar.gz
+
+
+ build_win_mingw:
+ runs-on: windows-2019
+ strategy:
+ matrix:
+ compiler: [gcc]
+ msystem: [MINGW64]
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: actions/checkout@v2
+ - uses: msys2/setup-msys2@v2
+ with:
+ msystem: MINGW64
+ install: gcc cmake make
+ - name: Configure cmake
+ run: CC=gcc cmake -DMINGW=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native -S . -B build_mgw64
+ - name: Build
+ run: cmake --build build_mgw64
+
+ - name: compress
+ run: tar zcvf pffft_windows-mingw-amd64.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_mgw64
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_windows_mingw_builds
+ path: pffft_windows-mingw-amd64.tar.gz
+
+
+ build_macos11:
+ # copied from build_ubuntu-amd64 with minor renaming
+ runs-on: macos-11
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: cmake_make_simd_float_double
+ run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_full
+ - name: cmake_make_simd_float
+ run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_DOUBLE=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_float
+ - name: cmake_make_simd_double
+ run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_FLOAT=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_double
+ - name: cmake_make_no-simd_float_double
+ run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_full
+ - name: cmake_make_no-simd_scalar_float_double
+ run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_SCALAR_VECT=ON -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
+ - name: compress
+ run: tar zcvf pffft_macos-11.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_macos_builds
+ path: pffft_macos-11.tar.gz
+
+ build_w_mipp_macos11:
+ # copied from build_w_mipp_ubuntu-amd64 with minor renaming
+ runs-on: macos-11
+
+ steps:
+ - name: check out MIPP
+ uses: actions/checkout@master
+ with:
+ repository: hayguen/MIPP
+ path: ./MIPP
+ - name: cmake configure MIPP
+ run: cmake -S MIPP -B MIPP_build -DCMAKE_INSTALL_PREFIX=$HOME/.local
+ - name: cmake install MIPP headers
+ run: cmake --build MIPP_build --target install && ls -alh $HOME/.local/ && ls -alh $HOME/.local/include/
+
+ - uses: actions/checkout@v2
+ - name: cmake_make_simd_float_double
+ run: mkdir build_simd_full && cmake -S . -B build_simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_full
+ - name: cmake_make_simd_float
+ run: mkdir build_simd_float && cmake -S . -B build_simd_float -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_DOUBLE=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_float
+ - name: cmake_make_simd_double
+ run: mkdir build_simd_double && cmake -S . -B build_simd_double -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_TYPE_FLOAT=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_simd_double
+ - name: cmake_make_no-simd_float_double
+ run: mkdir build_no-simd_full && cmake -S . -B build_no-simd_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_full
+ - name: cmake_make_no-simd_scalar_float_double
+ run: mkdir build_no-simd_scalar_full && cmake -S . -B build_no-simd_scalar_full -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUSE_SIMD=OFF -DUSE_SCALAR_VECT=ON -DUSE_BENCH_GREEN=OFF -DUSE_BENCH_KISS=OFF -DUSE_BENCH_POCKET=OFF -DTARGET_CXX_ARCH=native -DTARGET_C_ARCH=native && cmake --build build_no-simd_scalar_full
+ - name: compress
+ run: tar zcvf pffft_w_mipp_macos-11.tar.gz --exclude=CMakeFiles --exclude=*.cmake --exclude=Makefile --exclude=CMakeCache.txt build_simd_full build_simd_float build_simd_double build_no-simd_full build_no-simd_scalar_full
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: pffft_macos_builds
+ path: pffft_w_mipp_macos-11.tar.gz
diff --git a/.gitignore b/.gitignore
index bbf98fe..a476319 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
build
build_benches
+build_*
.vscode
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 572d276..fb985b4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,6 +63,22 @@ else()
set(ASANLIB "")
endif()
+message(STATUS "INFO: CMAKE_C_COMPILER_ID is ${CMAKE_C_COMPILER_ID}")
+message(STATUS "INFO: CMAKE_CXX_COMPILER_ID is ${CMAKE_CXX_COMPILER_ID}")
+if (WIN32)
+ message(STATUS "INFO: detected WIN32")
+else()
+ message(STATUS "INFO: NOT WIN32")
+endif()
+if (MINGW)
+ message(STATUS "INFO: detected MINGW with compiler ${CMAKE_C_COMPILER_ID}")
+else()
+ message(STATUS "INFO: NOT MINGW")
+endif()
+if ( CMAKE_C_COMPILER_ID MATCHES "MSVC" )
+ message(STATUS "INFO: detected MSVC with compiler ${CMAKE_C_COMPILER_ID}")
+endif()
+
if (USE_BENCH_GREEN)
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/greenffts/CMakeLists.txt")
@@ -180,7 +196,6 @@ endif()
######################################################
if (USE_TYPE_FLOAT)
-
add_library(PFDSP STATIC pf_mixer.cpp pf_mixer.h pf_cplx.h pf_carrier.cpp pf_carrier.h pf_cic.cpp pf_cic.h fmv.h )
set_property(TARGET PFDSP PROPERTY CXX_STANDARD 11)
set_property(TARGET PFDSP PROPERTY CXX_STANDARD_REQUIRED ON)
@@ -188,18 +203,20 @@ if (USE_TYPE_FLOAT)
target_compile_definitions(PFDSP PRIVATE _USE_MATH_DEFINES)
target_activate_cxx_compiler_warnings(PFDSP)
if (USE_DEBUG_ASAN)
- target_compile_options(PFDSP PRIVATE "-fsanitize=address")
+ target_compile_options(PFDSP PRIVATE "-fsanitize=address")
endif()
if (USE_SIMD)
- target_set_cxx_arch_flags(PFDSP)
+ target_set_cxx_arch_flags(PFDSP)
+ else()
+ target_compile_definitions(PFDSP PRIVATE PFFFT_SIMD_DISABLE=1)
endif()
target_link_libraries( PFDSP ${MATHLIB} )
set_property(TARGET PFDSP APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
if (INSTALL_PFDSP)
- set(INSTALL_TARGETS ${INSTALL_TARGETS} PFDSP)
- set(INSTALL_HEADERS ${INSTALL_HEADERS} pf_mixer.h pf_cplx.h pf_carrier.h pf_cic.h)
+ set(INSTALL_TARGETS ${INSTALL_TARGETS} PFDSP)
+ set(INSTALL_HEADERS ${INSTALL_HEADERS} pf_mixer.h pf_cplx.h pf_carrier.h pf_cic.h)
endif()
endif()
@@ -433,18 +450,18 @@ endif()
if (USE_TYPE_FLOAT)
- add_executable(bench_pf_mixer_float bench_mixers.cpp papi_perf_counter.h)
- target_compile_definitions(bench_pf_mixer_float PRIVATE _USE_MATH_DEFINES)
- target_compile_definitions(bench_pf_mixer_float PRIVATE PFFFT_ENABLE_FLOAT)
- target_link_libraries( bench_pf_mixer_float ${ASANLIB} )
- if (USE_DEBUG_ASAN)
- target_compile_options(bench_pf_mixer_float PRIVATE "-fsanitize=address")
- endif()
- if (PAPI_FOUND)
- target_compile_definitions(bench_pf_mixer_float PRIVATE HAVE_PAPI=1)
- target_link_libraries(bench_pf_mixer_float ${PAPI_LIBRARIES})
- endif()
- target_link_libraries( bench_pf_mixer_float PFDSP )
+ add_executable(bench_pf_mixer_float bench_mixers.cpp papi_perf_counter.h)
+ target_compile_definitions(bench_pf_mixer_float PRIVATE _USE_MATH_DEFINES)
+ target_compile_definitions(bench_pf_mixer_float PRIVATE PFFFT_ENABLE_FLOAT)
+ target_link_libraries( bench_pf_mixer_float ${ASANLIB} )
+ if (USE_DEBUG_ASAN)
+ target_compile_options(bench_pf_mixer_float PRIVATE "-fsanitize=address")
+ endif()
+ if (PAPI_FOUND)
+ target_compile_definitions(bench_pf_mixer_float PRIVATE HAVE_PAPI=1)
+ target_link_libraries(bench_pf_mixer_float ${PAPI_LIBRARIES})
+ endif()
+ target_link_libraries( bench_pf_mixer_float PFDSP $<$<CXX_COMPILER_ID:GNU>:stdc++> )
############################################################################
@@ -470,25 +487,23 @@ if (USE_TYPE_FLOAT)
if ((CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") OR (CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64"))
- if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
- set(PF_CONV_ARCHES "sse3;sse4;avx;avx2")
- set(PF_CONV_OPT_sse3 "core2") # emulate a map
- set(PF_CONV_OPT_sse4 "nehalem")
- set(PF_CONV_OPT_avx "sandybridge")
- set(PF_CONV_OPT_avx2 "haswell")
- target_compile_definitions(pf_conv_dispatcher PRIVATE CONV_ARCH_GCC_AMD64)
-
- elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
- set(PF_CONV_ARCHES "sse2;avx;avx2")
- set(PF_CONV_OPT_sse2 "SSE2") # emulate a map
- set(PF_CONV_OPT_avx "AVX")
- set(PF_CONV_OPT_avx2 "AVX2")
- target_compile_definitions(pf_conv_dispatcher PRIVATE CONV_ARCH_MSVC_AMD64)
-
- else()
- set(PF_CONV_ARCHES "")
- message(WARNING "unknown compiler ${CMAKE_CXX_COMPILER_ID} on CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}: can't do architecture specific compilation")
- endif()
+ if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ set(PF_CONV_ARCHES "sse3;sse4;avx;avx2")
+ set(PF_CONV_OPT_sse3 "core2") # emulate a map
+ set(PF_CONV_OPT_sse4 "nehalem")
+ set(PF_CONV_OPT_avx "sandybridge")
+ set(PF_CONV_OPT_avx2 "haswell")
+ target_compile_definitions(pf_conv_dispatcher PRIVATE CONV_ARCH_GCC_AMD64)
+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+ set(PF_CONV_ARCHES "sse2;avx;avx2")
+ set(PF_CONV_OPT_sse2 "SSE2") # emulate a map
+ set(PF_CONV_OPT_avx "AVX")
+ set(PF_CONV_OPT_avx2 "AVX2")
+ target_compile_definitions(pf_conv_dispatcher PRIVATE CONV_ARCH_MSVC_AMD64)
+ else()
+ set(PF_CONV_ARCHES "")
+ message(WARNING "unknown compiler ${CMAKE_CXX_COMPILER_ID} on CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}: can't do architecture specific compilation")
+ endif()
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
@@ -504,20 +519,20 @@ if (USE_TYPE_FLOAT)
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l")
- if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
- set(PF_CONV_ARCHES "neon_vfpv4;neon_rpi3_a53;neon_rpi4_a72")
- set(PF_CONV_OPT_neon_vfpv4 "armv7-a") # emulate a map for arch
- set(PF_CONV_EXTRA_neon_vfpv4 "neon_vfpv4") # emulate a map for additional options (EXTRA)
- set(PF_CONV_OPT_neon_rpi3_a53 "armv7-a")
- set(PF_CONV_EXTRA_neon_rpi3_a53 "neon_rpi3_a53")
- set(PF_CONV_OPT_neon_rpi4_a72 "armv7-a")
- set(PF_CONV_EXTRA_neon_rpi4_a72 "neon_rpi4_a72")
-
- target_compile_definitions(pf_conv_dispatcher PRIVATE CONV_ARCH_GCC_ARM32NEON)
- else()
- set(PF_CONV_ARCHES "")
- message(WARNING "unknown compiler ${CMAKE_CXX_COMPILER_ID} on CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}: can't do architecture specific compilation")
- endif()
+ if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ set(PF_CONV_ARCHES "neon_vfpv4;neon_rpi3_a53;neon_rpi4_a72")
+ set(PF_CONV_OPT_neon_vfpv4 "armv7-a") # emulate a map for arch
+ set(PF_CONV_EXTRA_neon_vfpv4 "neon_vfpv4") # emulate a map for additional options (EXTRA)
+ set(PF_CONV_OPT_neon_rpi3_a53 "armv7-a")
+ set(PF_CONV_EXTRA_neon_rpi3_a53 "neon_rpi3_a53")
+ set(PF_CONV_OPT_neon_rpi4_a72 "armv7-a")
+ set(PF_CONV_EXTRA_neon_rpi4_a72 "neon_rpi4_a72")
+
+ target_compile_definitions(pf_conv_dispatcher PRIVATE CONV_ARCH_GCC_ARM32NEON)
+ else()
+ set(PF_CONV_ARCHES "")
+ message(WARNING "unknown compiler ${CMAKE_CXX_COMPILER_ID} on CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}: can't do architecture specific compilation")
+ endif()
else()
message(WARNING "this is unforseen CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}: can't do architecture specific compilation")
@@ -560,7 +575,6 @@ if (USE_TYPE_FLOAT)
############################################################################
-
add_executable(bench_pf_conv_float bench_conv.cpp papi_perf_counter.h)
set_property(TARGET bench_pf_conv_float PROPERTY CXX_STANDARD 11)
set_property(TARGET bench_pf_conv_float PROPERTY CXX_STANDARD_REQUIRED ON)
@@ -577,8 +591,7 @@ if (USE_TYPE_FLOAT)
if(MIPP_FOUND)
target_link_libraries(bench_pf_conv_float MIPP)
endif()
-
- target_link_libraries( bench_pf_conv_float pf_conv_dispatcher PFDSP )
+ target_link_libraries( bench_pf_conv_float pf_conv_dispatcher PFDSP $<$<CXX_COMPILER_ID:GNU>:stdc++> )
endif()
diff --git a/bench_conv.cpp b/bench_conv.cpp
index 3fbbcb5..a42d8ef 100644
--- a/bench_conv.cpp
+++ b/bench_conv.cpp
@@ -13,7 +13,7 @@
//#if defined(HAVE_MIPP) && !defined(NO_MIPP)
#if defined(HAVE_MIPP)
-#include <mipp/mipp.h>
+#include <mipp.h>
#define MIPP_VECTOR mipp::vector
#else
diff --git a/cmake/FindMIPP.cmake b/cmake/FindMIPP.cmake
index 60e97d9..afd840d 100644
--- a/cmake/FindMIPP.cmake
+++ b/cmake/FindMIPP.cmake
@@ -3,17 +3,24 @@ if(MIPP_INCLUDE_DIRS)
set(MIPP_FIND_QUIETLY TRUE)
endif()
-find_path(MIPP_INCLUDE_DIRS NAMES mipp.h HINTS ${MIPP_ROOT} PATH_SUFFIXES include/mipp)
+find_path(MIPP_INCLUDE_DIRS NAMES mipp.h
+ HINTS
+ ${MIPP_ROOT}
+ $ENV{HOME}/.local
+ PATH_SUFFIXES include/mipp
+)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MIPP DEFAULT_MSG MIPP_INCLUDE_DIRS)
if(MIPP_FOUND AND NOT TARGET MIPP)
- message(STATUS "MIPP_FOUND -> creating interface library MIPP")
+ message(STATUS "MIPP_FOUND -> creating interface library MIPP at ${MIPP_INCLUDE_DIRS}")
add_library(MIPP INTERFACE)
target_compile_definitions(MIPP INTERFACE HAVE_MIPP=1)
- target_include_directories(MIPP INTERFACE MIPP_INCLUDE_DIRS)
+ target_include_directories(MIPP INTERFACE ${MIPP_INCLUDE_DIRS})
target_compile_features(MIPP INTERFACE cxx_std_11)
+else()
+ message(WARNING "MIPP not found.")
endif()
mark_as_advanced(MIPP_INCLUDE_DIRS)
diff --git a/cmake/target_optimizations.cmake b/cmake/target_optimizations.cmake
index 23160ee..6d19fdb 100644
--- a/cmake/target_optimizations.cmake
+++ b/cmake/target_optimizations.cmake
@@ -54,6 +54,7 @@ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l")
set(GCC_MARCH_VALUES "none;native;armv7-a" CACHE INTERNAL "List of possible architectures")
set(GCC_EXTRA_VALUES "none;neon_vfpv4;neon_rpi3_a53;neon_rpi4_a72" CACHE INTERNAL "List of possible additional options")
else()
+ message(WARNING "unsupported CMAKE_SYSTEM_PROCESSOR '${CMAKE_SYSTEM_PROCESSOR}'")
# other PROCESSORs could be "ppc", "ppc64", "arm" - or something else?!
set(GCC_MARCH_DESC "native")
set(GCC_MARCH_VALUES "none;native" CACHE INTERNAL "List of possible architectures")
diff --git a/cross_build_mingw32.sh b/cross_build_mingw32.sh
new file mode 100755
index 0000000..94f05f9
--- /dev/null
+++ b/cross_build_mingw32.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# requires debian/ubuntu packages: zip gcc-mingw-w64
+
+if [ -z "$1" ]; then
+ echo "usage: $0 <zip-post> <any other cmake options>"
+ exit 1
+fi
+
+ZIP_POST="$1"
+shift
+
+CROSS="i686-w64-mingw32"
+WN="w32"
+TOOLCHAIN="mingw-w32-i686.cmake"
+
+rm -rf build_${WN}_${ZIP_POST}
+echo -e "\n\n********************************************************"
+echo "start build of pffft_${WN}_${ZIP_POST}"
+mkdir build_${WN}_${ZIP_POST} && \
+cmake -S . -B build_${WN}_${ZIP_POST} \
+ -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} \
+ -DCMAKE_INSTALL_PREFIX=pffft_bin-${WN}_${ZIP_POST} \
+ "$@" && \
+cmake --build build_${WN}_${ZIP_POST}
diff --git a/cross_build_mingw64.sh b/cross_build_mingw64.sh
new file mode 100755
index 0000000..23c251f
--- /dev/null
+++ b/cross_build_mingw64.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# requires debian/ubuntu packages: zip gcc-mingw-w64
+
+if [ -z "$1" ]; then
+ echo "usage: $0 <zip-post> <any other cmake options>"
+ exit 1
+fi
+
+ZIP_POST="$1"
+shift
+
+# CROSS="x86_64-w64-mingw32"
+WN="w64"
+TOOLCHAIN="mingw-w64-x64_64.cmake"
+
+rm -rf build_${WN}_${ZIP_POST}
+echo -e "\n\n********************************************************"
+echo "start build of pffft_${WN}_${ZIP_POST}"
+mkdir build_${WN}_${ZIP_POST} && \
+cmake -S . -B build_${WN}_${ZIP_POST} \
+ -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} \
+ -DCMAKE_INSTALL_PREFIX=pffft_bin-${WN}_${ZIP_POST} \
+ "$@" && \
+cmake --build build_${WN}_${ZIP_POST}
diff --git a/mingw-w32-i686.cmake b/mingw-w32-i686.cmake
new file mode 100644
index 0000000..eecd236
--- /dev/null
+++ b/mingw-w32-i686.cmake
@@ -0,0 +1,25 @@
+# Sample toolchain file for building for Windows from an Ubuntu Linux system.
+#
+# Typical usage:
+# *) install cross compiler: `sudo apt-get install mingw-w64`
+# *) cd build
+# *) cmake -DCMAKE_TOOLCHAIN_FILE=~/mingw-w32-i686.cmake ..
+#
+# build for Windows' 32 bit architecture
+
+set(CMAKE_SYSTEM_NAME Windows)
+set(CMAKE_SYSTEM_PROCESSOR x86_64)
+set(TOOLCHAIN_PREFIX i686-w64-mingw32)
+
+# cross compilers to use for C, C++ and Fortran
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
+set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
+
+# target environment on the build host system
+set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
+
+# modify default behavior of FIND_XXX() commands
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/mingw-w64-x64_64.cmake b/mingw-w64-x64_64.cmake
new file mode 100644
index 0000000..1ed08f0
--- /dev/null
+++ b/mingw-w64-x64_64.cmake
@@ -0,0 +1,25 @@
+# Sample toolchain file for building for Windows from an Ubuntu Linux system.
+#
+# Typical usage:
+# *) install cross compiler: `sudo apt-get install mingw-w64`
+# *) cd build
+# *) cmake -DCMAKE_TOOLCHAIN_FILE=~/mingw-w64-x86_64.cmake ..
+#
+# build for Windows' 64 bit architecture
+
+set(CMAKE_SYSTEM_NAME Windows)
+set(CMAKE_SYSTEM_PROCESSOR x86_64)
+set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
+
+# cross compilers to use for C, C++ and Fortran
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
+set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
+
+# target environment on the build host system
+set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
+
+# modify default behavior of FIND_XXX() commands
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/pf_cic.cpp b/pf_cic.cpp
index 34b90c5..2362853 100644
--- a/pf_cic.cpp
+++ b/pf_cic.cpp
@@ -28,6 +28,9 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+/* gcc requires this for M_PI !? */
+#undef __STRICT_ANSI__
+
/* include own header first, to see missing includes */
#include "pf_cic.h"
#include "fmv.h"
@@ -70,7 +73,7 @@ void *cicddc_init(int factor) {
s->gain = 1.0f / SHRT_MAX / sineamp / factor / factor / factor; // compensate for gain of 3 integrators
s->sinetable = (int16_t *)malloc(sinesize2 * sizeof(*s->sinetable));
- double f = 2.0*M_PI / (double)SINESIZE;
+ double f = 2.0 * M_PI / (double)SINESIZE;
for(i = 0; i < sinesize2; i++) {
s->sinetable[i] = sineamp * cos(f * i);
}
diff --git a/pf_conv.cpp b/pf_conv.cpp
index eb362c1..45e56d5 100644
--- a/pf_conv.cpp
+++ b/pf_conv.cpp
@@ -17,7 +17,7 @@
#ifdef HAVE_MIPP
-#include <mipp/mipp.h>
+#include <mipp.h>
#endif
@@ -315,6 +315,8 @@ const conv_f_ptrs* ARCHFUNCNAME(conv_ptrs)()
return nullptr;
}
-
-[[maybe_unused]] static f_conv_ptrs test_f_ptrs = ARCHFUNCNAME(conv_ptrs);
+#if defined(__cplusplus) && (__cplusplus >= 201703L)
+[[maybe_unused]]
+#endif
+static f_conv_ptrs test_f_ptrs = ARCHFUNCNAME(conv_ptrs);
diff --git a/pf_conv.h b/pf_conv.h
index 7757e9a..0194b98 100644
--- a/pf_conv.h
+++ b/pf_conv.h
@@ -98,6 +98,10 @@ extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, sse4)();
extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, avx)();
extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, avx2)();
+extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, sse2)();
+//extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, avx)(); // already declared
+//extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, avx2)(); // already declared
+
extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, neon_vfpv4)(); // for armv7l / 32-bit ARM
extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, neon_rpi3_a53)();
extern const conv_f_ptrs* CONV_FN_ARCH(conv_ptrs, neon_rpi4_a72)();
diff --git a/pf_conv_dispatcher.cpp b/pf_conv_dispatcher.cpp
index 0b1c223..8a5f725 100644
--- a/pf_conv_dispatcher.cpp
+++ b/pf_conv_dispatcher.cpp
@@ -32,10 +32,10 @@ ptr_to_conv_f_ptrs * get_all_conv_arch_ptrs(int * p_num_arch)
conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, avx2)();
#elif defined(CONV_ARCH_MSVC_AMD64)
static const conv_f_ptrs *conv_arch_ptrs[N_DEFAULT_ARCHES+3] = {0};
- DPRINT("CONV_ARCH_MSVC_AMD64: SSE2, AVX, AVX2\n");
- conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, SSE2)();
- conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, AVX) ();
- conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, AVX2)();
+ DPRINT("CONV_ARCH_MSVC_AMD64: sse2, avx, avx2\n");
+ conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, sse2)();
+ conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, avx) ();
+ conv_arch_ptrs[n_arch++] = CONV_FN_ARCH(conv_ptrs, avx2)();
#elif defined(CONV_ARCH_GCC_ARM32NEON)
static const conv_f_ptrs *conv_arch_ptrs[N_DEFAULT_ARCHES+3] = {0};
DPRINT("CONV_ARCH_GCC_ARM32NEON: neon_vfpv4, neon_rpi3_a53\n");
diff --git a/pffft.hpp b/pffft.hpp
index 12a3f47..49fd0cb 100644
--- a/pffft.hpp
+++ b/pffft.hpp
@@ -1018,7 +1018,7 @@ class PFAlloc {
// allocate but don't initialize num elements of type T
pointer allocate (size_type num, const void* = 0) {
- pointer ret = (pointer)( alignedAlloc<T>(num) );
+ pointer ret = (pointer)( alignedAlloc<T>(int(num)) );
return ret;
}