diff --git a/builds/cmake/install-cmake.sh b/builds/cmake/install-cmake.sh index d7ea94e1..e5fc5a62 100755 --- a/builds/cmake/install-cmake.sh +++ b/builds/cmake/install-cmake.sh @@ -12,7 +12,9 @@ # Default: OFF # -Denable-avx512= Use Intel AVX512 intrinsics. # Default: OFF -# -Denable-ifma= Use Intel AVX512 IFMA intrinsics. +# -Denable-avx512ifma=Use Intel AVX512 IFMA intrinsics (implies AVX512VL). +# Default: OFF +# -Denable-avxifma= Use Intel AVX IFMA intrinsics (implies AVX2). # Default: OFF # -Denable-sse41= Use SSE4.1 hardware instructions. # Default: OFF @@ -20,6 +22,10 @@ # Default: OFF # -Denable-crypto= Use ARM Crypto Extensions. # Default: OFF +# -Denable-aesni= Use Intel AES-NI and PCLMULQDQ intrinsics. +# Default: OFF +# -Denable-vaes= Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2). +# Default: OFF # -Dwith-ultrafast= Use shrec/UltrafastSecp256k1 library. # Default: OFF # -Dwith-secp256k1= Use bitcoin-core/secp256k1 library. @@ -1058,7 +1064,9 @@ help() msg " Default: OFF" msg "-Denable-avx512= Use Intel AVX512 intrinsics." msg " Default: OFF" - msg "-Denable-ifma= Use Intel AVX512 IFMA intrinsics." + msg "-Denable-avx512ifma=Use Intel AVX512 IFMA intrinsics (implies AVX512VL)." + msg " Default: OFF" + msg "-Denable-avxifma= Use Intel AVX IFMA intrinsics (implies AVX2)." msg " Default: OFF" msg "-Denable-sse41= Use SSE4.1 hardware instructions." msg " Default: OFF" @@ -1066,6 +1074,10 @@ help() msg " Default: OFF" msg "-Denable-crypto= Use ARM Crypto Extensions." msg " Default: OFF" + msg "-Denable-aesni= Use Intel AES-NI and PCLMULQDQ intrinsics." + msg " Default: OFF" + msg "-Denable-vaes= Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2)." + msg " Default: OFF" msg "-Dwith-ultrafast= Use shrec/UltrafastSecp256k1 library." msg " Default: OFF" msg "-Dwith-secp256k1= Use bitcoin-core/secp256k1 library." diff --git a/builds/cmake/install-presets.sh b/builds/cmake/install-presets.sh index 5b672422..37df1ff2 100755 --- a/builds/cmake/install-presets.sh +++ b/builds/cmake/install-presets.sh @@ -12,7 +12,9 @@ # Default: OFF # -Denable-avx512= Use Intel AVX512 intrinsics. # Default: OFF -# -Denable-ifma= Use Intel AVX512 IFMA intrinsics. +# -Denable-avx512ifma=Use Intel AVX512 IFMA intrinsics (implies AVX512VL). +# Default: OFF +# -Denable-avxifma= Use Intel AVX IFMA intrinsics (implies AVX2). # Default: OFF # -Denable-sse41= Use SSE4.1 hardware instructions. # Default: OFF @@ -20,6 +22,10 @@ # Default: OFF # -Denable-crypto= Use ARM Crypto Extensions. # Default: OFF +# -Denable-aesni= Use Intel AES-NI and PCLMULQDQ intrinsics. +# Default: OFF +# -Denable-vaes= Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2). +# Default: OFF # -Dwith-ultrafast= Use shrec/UltrafastSecp256k1 library. # Default: OFF # -Dwith-secp256k1= Use bitcoin-core/secp256k1 library. @@ -1136,7 +1142,9 @@ help() msg " Default: OFF" msg "-Denable-avx512= Use Intel AVX512 intrinsics." msg " Default: OFF" - msg "-Denable-ifma= Use Intel AVX512 IFMA intrinsics." + msg "-Denable-avx512ifma=Use Intel AVX512 IFMA intrinsics (implies AVX512VL)." + msg " Default: OFF" + msg "-Denable-avxifma= Use Intel AVX IFMA intrinsics (implies AVX2)." msg " Default: OFF" msg "-Denable-sse41= Use SSE4.1 hardware instructions." msg " Default: OFF" @@ -1144,6 +1152,10 @@ help() msg " Default: OFF" msg "-Denable-crypto= Use ARM Crypto Extensions." msg " Default: OFF" + msg "-Denable-aesni= Use Intel AES-NI and PCLMULQDQ intrinsics." + msg " Default: OFF" + msg "-Denable-vaes= Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2)." + msg " Default: OFF" msg "-Dwith-ultrafast= Use shrec/UltrafastSecp256k1 library." msg " Default: OFF" msg "-Dwith-secp256k1= Use bitcoin-core/secp256k1 library." diff --git a/builds/gnu/install-gnu.sh b/builds/gnu/install-gnu.sh index d1b8d055..93561897 100755 --- a/builds/gnu/install-gnu.sh +++ b/builds/gnu/install-gnu.sh @@ -8,50 +8,56 @@ # Script managing the build and installation of libbitcoin-node and its dependencies. # # Script options: -# ---avx2 Use Intel AVX2 intrinsics. -# 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. -# Default: --disable-shani -# ---crypto Use ARM Crypto Extensions. -# Default: --disable-crypto -# ---ultrafast Use shrec/UltrafastSecp256k1 library. -# Default: --without-ultrafast -# ---secp256k1 Use bitcoin-core/secp256k1 library. -# Default: --with-secp256k1 -# ---ssl Use embedded ssl library. -# Default: --with-ssl -# --build-boost Build Boost libraries -# --build-secp256k1 Build libsecp256k1 libraries -# --build-ultrafast Build UltrafastSecp256k1 libraries -# --build-src-dir= Location for sources. -# Default: $(pwd) -# --build-obj-dir= Location for intermediate objects. -# Default: obj -# --build-obj-dir-relative Interpret build-obj-dir as relative to project sources. -# --build-config= Specifies the build configuration. -# Values: { debug, release } -# Toolchain default behavior will occur if no value specified. -# --build-link= Specifies the link mode. -# Values: { dynamic, static } -# Toolchain default behavior will occur if no value specified. -# --build-full-repositories Sync full github repositories. -# Default: git clone --depth 1 --single-branch -# --build-post-install-clean Clean dependencies after installation (saves space). -# --build-skip-tests Skip test compilation and execution. -# --build-parallel= Number of jobs to run simultaneously. -# Default: supported platforms use nproc/sysctl -# --build-use-local-src Use existing sources in relevant paths. -# --prefix= Installation destination. -# Default: /usr/local -# --noninteractive Disable any prompt using default. -# --verbose Display verbose script output. -# --help, -h Display usage, overriding script execution. +# ---avx2 Use Intel AVX2 intrinsics. +# Default: --disable-avx2 +# ---avx512 Use Intel AVX512 intrinsics. +# Default: --disable-avx512 +# ---avx512ifma Use Intel AVX512 IFMA intrinsics (implies AVX512VL). +# Default: --disable-avx512ifma +# ---avxifma Use Intel AVX IFMA intrinsics (implies AVX2). +# Default: --disable-avxifma +# ---sse41 Use SSE4.1 hardware instructions. +# Default: --disable-sse41 +# ---shani Use Intel/ARM SHA Extensions. +# Default: --disable-shani +# ---crypto Use ARM Crypto Extensions. +# Default: --disable-crypto +# ---aesni Use Intel AES-NI and PCLMULQDQ intrinsics. +# Default: --disable-aesni +# ---vaes Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2). +# Default: --disable-vaes +# ---ultrafast Use shrec/UltrafastSecp256k1 library. +# Default: --without-ultrafast +# ---secp256k1 Use bitcoin-core/secp256k1 library. +# Default: --with-secp256k1 +# ---ssl Use embedded ssl library. +# Default: --with-ssl +# --build-boost Build Boost libraries +# --build-secp256k1 Build libsecp256k1 libraries +# --build-ultrafast Build UltrafastSecp256k1 libraries +# --build-src-dir= Location for sources. +# Default: $(pwd) +# --build-obj-dir= Location for intermediate objects. +# Default: obj +# --build-obj-dir-relative Interpret build-obj-dir as relative to project sources. +# --build-config= Specifies the build configuration. +# Values: { debug, release } +# Toolchain default behavior will occur if no value specified. +# --build-link= Specifies the link mode. +# Values: { dynamic, static } +# Toolchain default behavior will occur if no value specified. +# --build-full-repositories Sync full github repositories. +# Default: git clone --depth 1 --single-branch +# --build-post-install-clean Clean dependencies after installation (saves space). +# --build-skip-tests Skip test compilation and execution. +# --build-parallel= Number of jobs to run simultaneously. +# Default: supported platforms use nproc/sysctl +# --build-use-local-src Use existing sources in relevant paths. +# --prefix= Installation destination. +# Default: /usr/local +# --noninteractive Disable any prompt using default. +# --verbose Display verbose script output. +# --help, -h Display usage, overriding script execution. # # All unrecognized options provided shall be passed as configuration # options for all dependencies. @@ -1289,50 +1295,56 @@ help() msg "Script managing the build and installation of libbitcoin-node and its dependencies." msg "" msg "Script options:" - msg "---avx2 Use Intel AVX2 intrinsics." - 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." - msg " Default: --disable-shani" - msg "---crypto Use ARM Crypto Extensions." - msg " Default: --disable-crypto" - msg "---ultrafast Use shrec/UltrafastSecp256k1 library." - msg " Default: --without-ultrafast" - msg "---secp256k1 Use bitcoin-core/secp256k1 library." - msg " Default: --with-secp256k1" - msg "---ssl Use embedded ssl library." - msg " Default: --with-ssl" - msg "--build-boost Build Boost libraries" - msg "--build-secp256k1 Build libsecp256k1 libraries" - msg "--build-ultrafast Build UltrafastSecp256k1 libraries" - msg "--build-src-dir= Location for sources." - msg " Default: $(pwd)" - msg "--build-obj-dir= Location for intermediate objects." - msg " Default: obj" - msg "--build-obj-dir-relative Interpret build-obj-dir as relative to project sources." - msg "--build-config= Specifies the build configuration." - msg " Values: { debug, release }" - msg " Toolchain default behavior will occur if no value specified." - msg "--build-link= Specifies the link mode." - msg " Values: { dynamic, static }" - msg " Toolchain default behavior will occur if no value specified." - msg "--build-full-repositories Sync full github repositories." - msg " Default: git clone --depth 1 --single-branch" - msg "--build-post-install-clean Clean dependencies after installation (saves space)." - msg "--build-skip-tests Skip test compilation and execution." - msg "--build-parallel= Number of jobs to run simultaneously." - msg " Default: supported platforms use nproc/sysctl" - msg "--build-use-local-src Use existing sources in relevant paths." - msg "--prefix= Installation destination." - msg " Default: /usr/local" - msg "--noninteractive Disable any prompt using default." - msg "--verbose Display verbose script output." - msg "--help, -h Display usage, overriding script execution." + msg "---avx2 Use Intel AVX2 intrinsics." + msg " Default: --disable-avx2" + msg "---avx512 Use Intel AVX512 intrinsics." + msg " Default: --disable-avx512" + msg "---avx512ifma Use Intel AVX512 IFMA intrinsics (implies AVX512VL)." + msg " Default: --disable-avx512ifma" + msg "---avxifma Use Intel AVX IFMA intrinsics (implies AVX2)." + msg " Default: --disable-avxifma" + msg "---sse41 Use SSE4.1 hardware instructions." + msg " Default: --disable-sse41" + msg "---shani Use Intel/ARM SHA Extensions." + msg " Default: --disable-shani" + msg "---crypto Use ARM Crypto Extensions." + msg " Default: --disable-crypto" + msg "---aesni Use Intel AES-NI and PCLMULQDQ intrinsics." + msg " Default: --disable-aesni" + msg "---vaes Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2)." + msg " Default: --disable-vaes" + msg "---ultrafast Use shrec/UltrafastSecp256k1 library." + msg " Default: --without-ultrafast" + msg "---secp256k1 Use bitcoin-core/secp256k1 library." + msg " Default: --with-secp256k1" + msg "---ssl Use embedded ssl library." + msg " Default: --with-ssl" + msg "--build-boost Build Boost libraries" + msg "--build-secp256k1 Build libsecp256k1 libraries" + msg "--build-ultrafast Build UltrafastSecp256k1 libraries" + msg "--build-src-dir= Location for sources." + msg " Default: $(pwd)" + msg "--build-obj-dir= Location for intermediate objects." + msg " Default: obj" + msg "--build-obj-dir-relative Interpret build-obj-dir as relative to project sources." + msg "--build-config= Specifies the build configuration." + msg " Values: { debug, release }" + msg " Toolchain default behavior will occur if no value specified." + msg "--build-link= Specifies the link mode." + msg " Values: { dynamic, static }" + msg " Toolchain default behavior will occur if no value specified." + msg "--build-full-repositories Sync full github repositories." + msg " Default: git clone --depth 1 --single-branch" + msg "--build-post-install-clean Clean dependencies after installation (saves space)." + msg "--build-skip-tests Skip test compilation and execution." + msg "--build-parallel= Number of jobs to run simultaneously." + msg " Default: supported platforms use nproc/sysctl" + msg "--build-use-local-src Use existing sources in relevant paths." + msg "--prefix= Installation destination." + msg " Default: /usr/local" + msg "--noninteractive Disable any prompt using default." + msg "--verbose Display verbose script output." + msg "--help, -h Display usage, overriding script execution." msg "" msg "All unrecognized options provided shall be passed as configuration" msg "options for all dependencies." diff --git a/builds/msvc/build-msvc.cmd b/builds/msvc/build-msvc.cmd index ead06757..c4d577a3 100644 --- a/builds/msvc/build-msvc.cmd +++ b/builds/msvc/build-msvc.cmd @@ -13,10 +13,13 @@ 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-avx512ifma Use Intel AVX512 IFMA intrinsics (implies AVX512VL). +REM --enable-avxifma Use Intel AVX IFMA intrinsics (implies AVX2). REM --enable-sse41 Use SSE4.1 hardware instructions. REM --enable-shani Use Intel/ARM SHA Extensions. REM --enable-crypto Use ARM Crypto Extensions. +REM --enable-aesni Use Intel AES-NI and PCLMULQDQ intrinsics. +REM --enable-vaes Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2). REM --build-config config Build configuration. REM --build-platform platform Build platform. REM --build-version version Build MSVC version. @@ -240,27 +243,33 @@ if "!libbitcoin_node_TAG!" == "" ( goto :end_parse_input ) else if "%~1" == "--enable-avx2" ( if "!libbitcoin-system_PARAMS!" == "" ( - set "libbitcoin-system_PARAMS=/p:Option-arch=AdvancedVectorExtensions2" + set "libbitcoin-system_PARAMS=/p:Option-avx2=true" ) else ( - set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-arch=AdvancedVectorExtensions2" + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-avx2=true" ) ) else if "%~1" == "--enable-avx512" ( if "!libbitcoin-system_PARAMS!" == "" ( - set "libbitcoin-system_PARAMS=/p:Option-arch=AdvancedVectorExtensions512" + set "libbitcoin-system_PARAMS=/p:Option-avx512=true" ) else ( - set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-arch=AdvancedVectorExtensions512" + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-avx512=true" ) - ) else if "%~1" == "--enable-ifma" ( + ) else if "%~1" == "--enable-avx512ifma" ( if "!libbitcoin-system_PARAMS!" == "" ( - set "libbitcoin-system_PARAMS=/p:Option-ifma=true" + set "libbitcoin-system_PARAMS=/p:Option-avx512ifma=true" ) else ( - set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-ifma=true" + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-avx512ifma=true" + ) + ) else if "%~1" == "--enable-avxifma" ( + if "!libbitcoin-system_PARAMS!" == "" ( + set "libbitcoin-system_PARAMS=/p:Option-avxifma=true" + ) else ( + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-avxifma=true" ) ) else if "%~1" == "--enable-sse41" ( if "!libbitcoin-system_PARAMS!" == "" ( - set "libbitcoin-system_PARAMS=/p:Option-arch=AdvancedVectorExtensions" + set "libbitcoin-system_PARAMS=/p:Option-sse41=true" ) else ( - set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-arch=AdvancedVectorExtensions" + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-sse41=true" ) ) else if "%~1" == "--enable-shani" ( if "!libbitcoin-system_PARAMS!" == "" ( @@ -274,6 +283,18 @@ if "!libbitcoin_node_TAG!" == "" ( ) else ( set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-sha=true" ) + ) else if "%~1" == "--enable-aesni" ( + if "!libbitcoin-system_PARAMS!" == "" ( + set "libbitcoin-system_PARAMS=/p:Option-aesni=true" + ) else ( + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-aesni=true" + ) + ) else if "%~1" == "--enable-vaes" ( + if "!libbitcoin-system_PARAMS!" == "" ( + set "libbitcoin-system_PARAMS=/p:Option-vaes=true" + ) else ( + set "libbitcoin-system_PARAMS=!libbitcoin-system_PARAMS! /p:Option-vaes=true" + ) ) else if "%~1" == "--build-config" ( set "BUILD_CONFIG=%~2" shift @@ -519,10 +540,13 @@ 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-avx512ifma Use Intel AVX512 IFMA intrinsics (implies AVX512VL)." + call :msg "--enable-avxifma Use Intel AVX IFMA intrinsics (implies AVX2)." 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." + call :msg "--enable-aesni Use Intel AES-NI and PCLMULQDQ intrinsics." + call :msg "--enable-vaes Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2)." call :msg "--build-config config Build configuration." call :msg "--build-platform platform Build platform." call :msg "--build-version version Build MSVC version." diff --git a/builds/msvc/properties/Common.props b/builds/msvc/properties/Common.props index 1622de8c..da4ae954 100644 --- a/builds/msvc/properties/Common.props +++ b/builds/msvc/properties/Common.props @@ -14,6 +14,22 @@ x64 + + + AdvancedVectorExtensions2 + + + + + + StreamingSIMDExtensions + StreamingSIMDExtensions2 + AdvancedVectorExtensions + AdvancedVectorExtensions2 + AdvancedVectorExtensions512 + + + UNICODE;_UNICODE;%(PreprocessorDefinitions) diff --git a/builds/msvc/properties/Release.props b/builds/msvc/properties/Release.props index d7482af8..51115961 100644 --- a/builds/msvc/properties/Release.props +++ b/builds/msvc/properties/Release.props @@ -11,11 +11,6 @@ - - - AdvancedVectorExtensions2 - - @@ -34,13 +29,6 @@ true MaxSpeed - - StreamingSIMDExtensions - StreamingSIMDExtensions2 - AdvancedVectorExtensions - AdvancedVectorExtensions2 - AdvancedVectorExtensions512 - ProgramDatabase true diff --git a/builds/msvc/vs2026/libbitcoin-system.import.props b/builds/msvc/vs2026/libbitcoin-system.import.props index 7f9ea8cf..1f30c8de 100644 --- a/builds/msvc/vs2026/libbitcoin-system.import.props +++ b/builds/msvc/vs2026/libbitcoin-system.import.props @@ -21,11 +21,21 @@ false - false + false + false + false + false true false false + + + + AdvancedVectorExtensions + AdvancedVectorExtensions2 + AdvancedVectorExtensions512 + @@ -40,7 +50,10 @@ - + + + + @@ -64,7 +77,10 @@ WITH_SHA;%(PreprocessorDefinitions) - WITH_IFMA;%(PreprocessorDefinitions) + WITH_AVX512IFMA;%(PreprocessorDefinitions) + WITH_AVXIFMA;%(PreprocessorDefinitions) + WITH_AESNI;%(PreprocessorDefinitions) + WITH_VAES;%(PreprocessorDefinitions) diff --git a/builds/msvc/vs2026/libbitcoin-system.import.xml b/builds/msvc/vs2026/libbitcoin-system.import.xml index e43fb528..d4ff526e 100644 --- a/builds/msvc/vs2026/libbitcoin-system.import.xml +++ b/builds/msvc/vs2026/libbitcoin-system.import.xml @@ -20,7 +20,11 @@ - + + + + + @@ -29,7 +33,25 @@ - + + + + + + + + + + + + + + + + + + +