diff --git a/.github/workflows/ci-expanded.yml b/.github/workflows/ci-expanded.yml index 94eb7f25..f2a21344 100644 --- a/.github/workflows/ci-expanded.yml +++ b/.github/workflows/ci-expanded.yml @@ -543,7 +543,7 @@ jobs: working-directory: 'libbitcoin-node' run: | lcov --ignore-errors version,gcov,mismatch,mismatch --directory . --capture --output-file coverage.info - lcov --ignore-errors unused --remove coverage.info "${{ github.workspace }}/prefix/*" "${{ github.workspace }}/libbitcoin-node/examples/*" "${{ github.workspace }}/libbitcoin-node/test/*" --output-file coverage.info + lcov --ignore-errors unused --extract coverage.info "${{ github.workspace }}/libbitcoin-node/include/*" "${{ github.workspace }}/libbitcoin-node/src/*" --output-file coverage.info - name: Coveralls.io upload if: ${{ matrix.coverage == 'lcov' }} @@ -1118,7 +1118,7 @@ jobs: working-directory: 'libbitcoin-node' run: | lcov --ignore-errors version,gcov,mismatch,mismatch --directory . --capture --output-file coverage.info - lcov --ignore-errors unused --remove coverage.info "${{ github.workspace }}/prefix/*" "${{ github.workspace }}/libbitcoin-node/examples/*" "${{ github.workspace }}/libbitcoin-node/test/*" --output-file coverage.info + lcov --ignore-errors unused --extract coverage.info "${{ github.workspace }}/libbitcoin-node/include/*" "${{ github.workspace }}/libbitcoin-node/src/*" --output-file coverage.info - name: Coveralls.io upload if: ${{ matrix.coverage == 'lcov' }} @@ -1616,7 +1616,7 @@ jobs: working-directory: 'libbitcoin-node' run: | lcov --ignore-errors version,gcov,mismatch,mismatch --directory . --capture --output-file coverage.info - lcov --ignore-errors unused --remove coverage.info "${{ github.workspace }}/prefix/*" "${{ github.workspace }}/libbitcoin-node/examples/*" "${{ github.workspace }}/libbitcoin-node/test/*" --output-file coverage.info + lcov --ignore-errors unused --extract coverage.info "${{ github.workspace }}/libbitcoin-node/include/*" "${{ github.workspace }}/libbitcoin-node/src/*" --output-file coverage.info - name: Coveralls.io upload if: ${{ matrix.coverage == 'lcov' }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c750e0e6..2e593976 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -239,7 +239,7 @@ jobs: working-directory: 'libbitcoin-node' run: | lcov --ignore-errors version,gcov,mismatch,mismatch --directory . --capture --output-file coverage.info - lcov --ignore-errors unused --remove coverage.info "${{ github.workspace }}/prefix/*" "${{ github.workspace }}/libbitcoin-node/examples/*" "${{ github.workspace }}/libbitcoin-node/test/*" --output-file coverage.info + lcov --ignore-errors unused --extract coverage.info "${{ github.workspace }}/libbitcoin-node/include/*" "${{ github.workspace }}/libbitcoin-node/src/*" --output-file coverage.info - name: Coveralls.io upload if: ${{ matrix.coverage == 'lcov' }} @@ -507,7 +507,7 @@ jobs: working-directory: 'libbitcoin-node' run: | lcov --ignore-errors version,gcov,mismatch,mismatch --directory . --capture --output-file coverage.info - lcov --ignore-errors unused --remove coverage.info "${{ github.workspace }}/prefix/*" "${{ github.workspace }}/libbitcoin-node/examples/*" "${{ github.workspace }}/libbitcoin-node/test/*" --output-file coverage.info + lcov --ignore-errors unused --extract coverage.info "${{ github.workspace }}/libbitcoin-node/include/*" "${{ github.workspace }}/libbitcoin-node/src/*" --output-file coverage.info - name: Coveralls.io upload if: ${{ matrix.coverage == 'lcov' }} @@ -733,7 +733,7 @@ jobs: working-directory: 'libbitcoin-node' run: | lcov --ignore-errors version,gcov,mismatch,mismatch --directory . --capture --output-file coverage.info - lcov --ignore-errors unused --remove coverage.info "${{ github.workspace }}/prefix/*" "${{ github.workspace }}/libbitcoin-node/examples/*" "${{ github.workspace }}/libbitcoin-node/test/*" --output-file coverage.info + lcov --ignore-errors unused --extract coverage.info "${{ github.workspace }}/libbitcoin-node/include/*" "${{ github.workspace }}/libbitcoin-node/src/*" --output-file coverage.info - name: Coveralls.io upload if: ${{ matrix.coverage == 'lcov' }} diff --git a/builds/cmake/install-cmake.sh b/builds/cmake/install-cmake.sh index 6f8eff21..d7ea94e1 100755 --- a/builds/cmake/install-cmake.sh +++ b/builds/cmake/install-cmake.sh @@ -12,6 +12,8 @@ # Default: OFF # -Denable-avx512= Use Intel AVX512 intrinsics. # Default: OFF +# -Denable-ifma= Use Intel AVX512 IFMA intrinsics. +# Default: OFF # -Denable-sse41= Use SSE4.1 hardware instructions. # Default: OFF # -Denable-shani= Use Intel/ARM SHA Extensions. @@ -1056,6 +1058,8 @@ help() msg " Default: OFF" msg "-Denable-avx512= Use Intel AVX512 intrinsics." msg " Default: OFF" + msg "-Denable-ifma= Use Intel AVX512 IFMA intrinsics." + msg " Default: OFF" msg "-Denable-sse41= Use SSE4.1 hardware instructions." msg " Default: OFF" msg "-Denable-shani= Use Intel/ARM SHA Extensions." diff --git a/builds/cmake/install-presets.sh b/builds/cmake/install-presets.sh index 39a732d6..5b672422 100755 --- a/builds/cmake/install-presets.sh +++ b/builds/cmake/install-presets.sh @@ -12,6 +12,8 @@ # Default: OFF # -Denable-avx512= Use Intel AVX512 intrinsics. # Default: OFF +# -Denable-ifma= Use Intel AVX512 IFMA intrinsics. +# Default: OFF # -Denable-sse41= Use SSE4.1 hardware instructions. # Default: OFF # -Denable-shani= Use Intel/ARM SHA Extensions. @@ -1134,6 +1136,8 @@ help() msg " Default: OFF" msg "-Denable-avx512= Use Intel AVX512 intrinsics." msg " Default: OFF" + msg "-Denable-ifma= Use Intel AVX512 IFMA intrinsics." + msg " Default: OFF" msg "-Denable-sse41= Use SSE4.1 hardware instructions." msg " Default: OFF" msg "-Denable-shani= Use Intel/ARM SHA Extensions." diff --git a/builds/gnu/install-gnu.sh b/builds/gnu/install-gnu.sh index 88acc5f5..d1b8d055 100755 --- a/builds/gnu/install-gnu.sh +++ b/builds/gnu/install-gnu.sh @@ -12,6 +12,8 @@ # Default: --disable-avx2 # ---avx512 Use Intel AVX512 intrinsics. # Default: --disable-avx512 +# ---ifma Use Intel AVX512 IFMA intrinsics. +# Default: --disable-ifma # ---sse41 Use SSE4.1 hardware instructions. # Default: --disable-sse41 # ---shani Use Intel/ARM SHA Extensions. @@ -1291,6 +1293,8 @@ help() msg " Default: --disable-avx2" msg "---avx512 Use Intel AVX512 intrinsics." msg " Default: --disable-avx512" + msg "---ifma Use Intel AVX512 IFMA intrinsics." + msg " Default: --disable-ifma" msg "---sse41 Use SSE4.1 hardware instructions." msg " Default: --disable-sse41" msg "---shani Use Intel/ARM SHA Extensions." diff --git a/builds/msvc/build-msvc.cmd b/builds/msvc/build-msvc.cmd index bd8b8b43..ead06757 100644 --- a/builds/msvc/build-msvc.cmd +++ b/builds/msvc/build-msvc.cmd @@ -13,6 +13,7 @@ REM REM Script options: REM --enable-avx2 Use Intel AVX2 intrinsics. REM --enable-avx512 Use Intel AVX512 intrinsics. +REM --enable-ifma Use Intel AVX512 IFMA intrinsics. REM --enable-sse41 Use SSE4.1 hardware instructions. REM --enable-shani Use Intel/ARM SHA Extensions. REM --enable-crypto Use ARM Crypto Extensions. @@ -249,6 +250,12 @@ if "!libbitcoin_node_TAG!" == "" ( ) else ( set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-arch=AdvancedVectorExtensions512" ) + ) else if "%~1" == "--enable-ifma" ( + if "!libbitcoin-system_PARAMS!" == "" ( + set "libbitcoin-system_PARAMS=/p:Option-ifma=true" + ) else ( + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-ifma=true" + ) ) else if "%~1" == "--enable-sse41" ( if "!libbitcoin-system_PARAMS!" == "" ( set "libbitcoin-system_PARAMS=/p:Option-arch=AdvancedVectorExtensions" @@ -512,6 +519,7 @@ if "!libbitcoin_node_TAG!" == "" ( call :msg "Script options:" call :msg "--enable-avx2 Use Intel AVX2 intrinsics." call :msg "--enable-avx512 Use Intel AVX512 intrinsics." + call :msg "--enable-ifma Use Intel AVX512 IFMA intrinsics." call :msg "--enable-sse41 Use SSE4.1 hardware instructions." call :msg "--enable-shani Use Intel/ARM SHA Extensions." call :msg "--enable-crypto Use ARM Crypto Extensions." diff --git a/builds/msvc/properties/Release.props b/builds/msvc/properties/Release.props index 9fc03897..d7482af8 100644 --- a/builds/msvc/properties/Release.props +++ b/builds/msvc/properties/Release.props @@ -35,8 +35,6 @@ MaxSpeed - NotSet - NoExtensions StreamingSIMDExtensions StreamingSIMDExtensions2 AdvancedVectorExtensions diff --git a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj index b4bbe735..27562ec3 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj @@ -13,30 +13,6 @@ libbitcoin-node-test - - DebugDEXE - ARM - - - ReleaseDEXE - ARM - - - DebugLEXE - ARM - - - ReleaseLEXE - ARM - - - DebugSEXE - ARM - - - ReleaseSEXE - ARM - DebugDEXE ARM64 diff --git a/builds/msvc/vs2026/libbitcoin-node.sln b/builds/msvc/vs2026/libbitcoin-node.sln index f94a45f0..947beb4d 100644 --- a/builds/msvc/vs2026/libbitcoin-node.sln +++ b/builds/msvc/vs2026/libbitcoin-node.sln @@ -9,8 +9,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbitcoin-node-test", "lib EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - StaticDebug|ARM = StaticDebug|ARM - StaticRelease|ARM = StaticRelease|ARM StaticDebug|ARM64 = StaticDebug|ARM64 StaticRelease|ARM64 = StaticRelease|ARM64 StaticDebug|Win32 = StaticDebug|Win32 @@ -19,10 +17,6 @@ Global StaticRelease|x64 = StaticRelease|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM.ActiveCfg = DebugLIB|ARM - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM.Build.0 = DebugLIB|ARM - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM.ActiveCfg = ReleaseLIB|ARM - {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM.Build.0 = ReleaseLIB|ARM {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM64.ActiveCfg = DebugLIB|ARM64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|ARM64.Build.0 = DebugLIB|ARM64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|ARM64.ActiveCfg = ReleaseLIB|ARM64 @@ -35,10 +29,6 @@ Global {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticDebug|x64.Build.0 = DebugLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.ActiveCfg = ReleaseLIB|x64 {5FFB5F52-0772-4404-BB2F-39BE5F82A158}.StaticRelease|x64.Build.0 = ReleaseLIB|x64 - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM.ActiveCfg = DebugSEXE|ARM - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM.Build.0 = DebugSEXE|ARM - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM.ActiveCfg = ReleaseSEXE|ARM - {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM.Build.0 = ReleaseSEXE|ARM {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM64.ActiveCfg = DebugSEXE|ARM64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticDebug|ARM64.Build.0 = DebugSEXE|ARM64 {4BD50864-D3BC-4F64-AEBB-DDEB8A622FA8}.StaticRelease|ARM64.ActiveCfg = ReleaseSEXE|ARM64 diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj index e1463564..9093cd0e 100644 --- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj @@ -12,30 +12,6 @@ libbitcoin-node - - DebugDLL - ARM - - - ReleaseDLL - ARM - - - DebugLTCG - ARM - - - ReleaseLTCG - ARM - - - DebugLIB - ARM - - - ReleaseLIB - ARM - DebugDLL ARM64 diff --git a/builds/msvc/vs2026/libbitcoin-system.import.props b/builds/msvc/vs2026/libbitcoin-system.import.props index 6aaae20b..7f9ea8cf 100644 --- a/builds/msvc/vs2026/libbitcoin-system.import.props +++ b/builds/msvc/vs2026/libbitcoin-system.import.props @@ -21,6 +21,7 @@ false + false true false false @@ -39,6 +40,7 @@ + @@ -62,6 +64,7 @@ WITH_SHA;%(PreprocessorDefinitions) + WITH_IFMA;%(PreprocessorDefinitions) diff --git a/builds/msvc/vs2026/libbitcoin-system.import.xml b/builds/msvc/vs2026/libbitcoin-system.import.xml index 1501f8df..e43fb528 100644 --- a/builds/msvc/vs2026/libbitcoin-system.import.xml +++ b/builds/msvc/vs2026/libbitcoin-system.import.xml @@ -20,6 +20,7 @@ + @@ -28,6 +29,10 @@ + + + +