Skip to content

Commit 29b5155

Browse files
committed
Build x86 algorithms, don't build AVX
1 parent a0ae87b commit 29b5155

File tree

6 files changed

+59
-61
lines changed

6 files changed

+59
-61
lines changed

Algorithms/BLAKE3/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ set(COMMON_FILES
1010
BLAKE3/c/blake3_portable.c
1111
)
1212
set(ARM64_FILES BLAKE3/c/blake3_neon.c)
13+
set(X86_FILES BLAKE3/c/blake3_sse2.c)
1314
set(SSE2_FILES BLAKE3/c/blake3_sse2_x86-64_windows_gnu.S)
14-
set(AVX_FILES BLAKE3/c/blake3_sse41_x86-64_windows_gnu.S)
1515
set(AVX2_FILES BLAKE3/c/blake3_avx2_x86-64_windows_gnu.S BLAKE3/c/blake3_sse41_x86-64_windows_gnu.S)
1616
set(AVX512_FILES BLAKE3/c/blake3_avx512_x86-64_windows_gnu.S)
1717

18-
if ("${OHT_FLAVOR}" STREQUAL "ARM64")
18+
if ("${OHT_FLAVOR}" STREQUAL "x86")
19+
set(FILES ${COMMON_FILES} ${X86_FILES})
20+
elseif ("${OHT_FLAVOR}" STREQUAL "ARM64")
1921
set(FILES ${COMMON_FILES} ${ARM64_FILES})
2022
elseif ("${OHT_FLAVOR}" STREQUAL "SSE2")
2123
set(FILES ${COMMON_FILES} ${SSE2_FILES})
22-
elseif ("${OHT_FLAVOR}" STREQUAL "AVX")
23-
set(FILES ${COMMON_FILES} ${AVX_FILES})
2424
elseif ("${OHT_FLAVOR}" STREQUAL "AVX2")
2525
set(FILES ${COMMON_FILES} ${AVX2_FILES})
2626
elseif ("${OHT_FLAVOR}" STREQUAL "AVX512")

Algorithms/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@ add_compile_definitions(
3535
)
3636

3737
if ("${OHT_FLAVOR}" STREQUAL "ARM64")
38+
elseif ("${OHT_FLAVOR}" STREQUAL "x86")
3839
elseif ("${OHT_FLAVOR}" STREQUAL "SSE2")
39-
elseif ("${OHT_FLAVOR}" STREQUAL "AVX")
40-
add_compile_options(/arch:AVX)
4140
elseif ("${OHT_FLAVOR}" STREQUAL "AVX2")
4241
add_compile_options(/arch:AVX2)
4342
elseif ("${OHT_FLAVOR}" STREQUAL "AVX512")

Algorithms/XKCP/CMakeLists.txt

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,6 @@ set(ARM64_FILES
3838
XKCP/lib/low/Ketje/OptimizedLE/Ket.c
3939
)
4040

41-
set(AVX_FILES
42-
XKCP/lib/low/KeccakP-200/ref/KeccakP-200-reference.c
43-
XKCP/lib/low/KeccakP-400/ref/KeccakP-400-reference.c
44-
XKCP/lib/low/KeccakP-800/plain/KeccakP-800-opt32.c
45-
XKCP/lib/low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c
46-
XKCP/lib/low/KeccakP-1600-times2/SIMD128/KeccakP-1600-times2-SIMD128.c
47-
XKCP/lib/low/KeccakP-1600-times4/fallback-on2/KeccakP-1600-times4-on2.c
48-
XKCP/lib/low/KeccakP-1600-times8/fallback-on2/KeccakP-1600-times8-on2.c
49-
XKCP/lib/low/Xoodoo/SSE2/Xoodoo-SIMD128.c
50-
XKCP/lib/low/Xoodoo/SSE2/Xoodyak-full-block-SIMD128.c
51-
XKCP/lib/low/Xoodoo-times4/SSSE3/Xoodoo-times4-SIMD128.c
52-
XKCP/lib/low/Xoodoo-times8/fallback-on1/Xoodoo-times8-on1.c
53-
XKCP/lib/low/Xoodoo-times16/fallback-on1/Xoodoo-times16-on1.c
54-
XKCP/lib/low/Ketje/SnP-compliant/Ket.c
55-
)
56-
5741
set(AVX2_FILES
5842
XKCP/lib/low/KeccakP-200/ref/KeccakP-200-reference.c
5943
XKCP/lib/low/KeccakP-400/ref/KeccakP-400-reference.c
@@ -138,27 +122,6 @@ set(ARM64_INCLUDES
138122
XKCP/lib/low/Ketje/OptimizedLE
139123
)
140124

141-
set(AVX_INCLUDES
142-
XKCP/lib/low/KeccakP-200/ref
143-
XKCP/lib/low/KeccakP-400/ref
144-
XKCP/lib/low/KeccakP-800/plain
145-
XKCP/lib/low/KeccakP-800/plain/lcua
146-
XKCP/lib/low/KeccakP-1600/common
147-
XKCP/lib/low/KeccakP-1600/plain-64bits
148-
XKCP/lib/low/common
149-
XKCP/lib/low/KeccakP-1600/plain-64bits/lcua-shld
150-
XKCP/lib/low/KeccakP-1600-times2/SIMD128
151-
XKCP/lib/low/KeccakP-1600-times2/SIMD128/SSSE3-ua
152-
XKCP/lib/low/KeccakP-1600-times4/fallback-on2
153-
XKCP/lib/low/KeccakP-1600-times8/fallback-on2
154-
XKCP/lib/low/Xoodoo
155-
XKCP/lib/low/Xoodoo/SSE2
156-
XKCP/lib/low/Xoodoo-times4/SSSE3
157-
XKCP/lib/low/Xoodoo-times8/fallback-on1
158-
XKCP/lib/low/Xoodoo-times16/fallback-on1
159-
XKCP/lib/low/Ketje/SnP-compliant
160-
)
161-
162125
set(AVX2_INCLUDES
163126
XKCP/lib/low/KeccakP-200/ref
164127
XKCP/lib/low/KeccakP-400/ref
@@ -225,12 +188,9 @@ set(GENERIC_INCLUDES
225188
if ("${OHT_FLAVOR}" STREQUAL "ARM64")
226189
set(FILES ${COMMON_FILES} ${ARM64_FILES})
227190
set(INCLUDES ${COMMON_INCLUDES} ${ARM64_INCLUDES})
228-
elseif ("${OHT_FLAVOR}" STREQUAL "SSE2")
191+
elseif ("${OHT_FLAVOR}" STREQUAL "SSE2" OR "${OHT_FLAVOR}" STREQUAL "x86")
229192
set(FILES ${COMMON_FILES} ${GENERIC_FILES})
230193
set(INCLUDES ${COMMON_INCLUDES} ${GENERIC_INCLUDES})
231-
elseif ("${OHT_FLAVOR}" STREQUAL "AVX")
232-
set(FILES ${COMMON_FILES} ${AVX_FILES})
233-
set(INCLUDES ${COMMON_INCLUDES} ${AVX_INCLUDES})
234194
elseif ("${OHT_FLAVOR}" STREQUAL "AVX2")
235195
set(FILES ${COMMON_FILES} ${AVX2_FILES})
236196
set(INCLUDES ${COMMON_INCLUDES} ${AVX2_INCLUDES})

AlgorithmsDlls/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ cmake_minimum_required(VERSION 3.14)
1818

1919
project(AlgorithmsDlls)
2020

21-
if (MSVC_C_ARCHITECTURE_ID STREQUAL "x64")
22-
set(FLAVORS "SSE2" "AVX" "AVX2" "AVX512")
21+
if (MSVC_C_ARCHITECTURE_ID STREQUAL "X86")
22+
set(FLAVORS "x86")
23+
elseif (MSVC_C_ARCHITECTURE_ID STREQUAL "x64" OR MSVC_C_ARCHITECTURE_ID STREQUAL "ARM64EC")
24+
set(FLAVORS "SSE2" "AVX2" "AVX512")
2325
elseif (MSVC_C_ARCHITECTURE_ID STREQUAL "ARM64")
2426
set(FLAVORS "ARM64")
2527
else ()
26-
message(FATAL_ERROR "Unsupported architecture")
28+
message(FATAL_ERROR "Unsupported architecture ${MSVC_C_ARCHITECTURE_ID}")
2729
endif ()
2830

2931
add_library(AlgorithmsDlls INTERFACE)

LegacyAlgorithms/LegacyHasher.cpp

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ enum : uint32_t {
3838

3939
enum CPUFeatureLevel {
4040
CPU_None,
41+
CPU_X86,
4142
CPU_SSE2,
4243
CPU_AVX,
4344
CPU_AVX2,
@@ -51,7 +52,7 @@ enum CPUFeatureLevel {
5152
static CPUFeatureLevel get_cpu_level() {
5253
auto best = CPU_None;
5354
#if defined(_M_IX86)
54-
best = CPU_SSE2;
55+
best = CPU_X86;
5556
#elif defined(_M_X64)
5657
int abcdi[4];
5758
// Check how many CPUID pages we have
@@ -132,26 +133,59 @@ static CPUFeatureLevel get_cpu_level() {
132133
return best;
133134
}
134135

136+
extern "C" const HashAlgorithm* get_algorithms_begin_x86();
137+
extern "C" const HashAlgorithm* get_algorithms_end_x86();
135138
extern "C" const HashAlgorithm* get_algorithms_begin_SSE2();
136139
extern "C" const HashAlgorithm* get_algorithms_end_SSE2();
137-
extern "C" const HashAlgorithm* get_algorithms_begin_AVX();
138-
extern "C" const HashAlgorithm* get_algorithms_end_AVX();
139140
extern "C" const HashAlgorithm* get_algorithms_begin_AVX2();
140141
extern "C" const HashAlgorithm* get_algorithms_end_AVX2();
141142
extern "C" const HashAlgorithm* get_algorithms_begin_AVX512();
142143
extern "C" const HashAlgorithm* get_algorithms_end_AVX512();
143144
extern "C" const HashAlgorithm* get_algorithms_begin_ARM64();
144145
extern "C" const HashAlgorithm* get_algorithms_end_ARM64();
145146

146-
#if defined(_M_X64)
147+
#if defined(_M_IX86)
148+
const HashAlgorithm* get_algorithms_begin(CPUFeatureLevel level) {
149+
switch (level) {
150+
case CPU_None:
151+
case CPU_NEON:
152+
case CPU_SSE2:
153+
case CPU_AVX2:
154+
case CPU_AVX512:
155+
case CPU_MAX:
156+
default:
157+
return nullptr;
158+
case CPU_X86:
159+
return get_algorithms_begin_x86();
160+
}
161+
}
162+
163+
const HashAlgorithm* get_algorithms_end(CPUFeatureLevel level) {
164+
switch (level) {
165+
case CPU_None:
166+
case CPU_NEON:
167+
case CPU_SSE2:
168+
case CPU_AVX2:
169+
case CPU_AVX512:
170+
case CPU_MAX:
171+
default:
172+
return nullptr;
173+
case CPU_X86:
174+
return get_algorithms_end_x86();
175+
}
176+
}
177+
#elif defined(_M_X64)
147178
static const HashAlgorithm* get_algorithms_begin(CPUFeatureLevel level) {
148179
switch (level) {
180+
case CPU_None:
181+
case CPU_X86:
182+
case CPU_NEON:
183+
case CPU_MAX:
149184
default:
150185
return nullptr;
151186
case CPU_SSE2:
152-
return get_algorithms_begin_SSE2();
153187
case CPU_AVX:
154-
return get_algorithms_begin_AVX();
188+
return get_algorithms_begin_SSE2();
155189
case CPU_AVX2:
156190
return get_algorithms_begin_AVX2();
157191
case CPU_AVX512:
@@ -162,14 +196,14 @@ static const HashAlgorithm* get_algorithms_begin(CPUFeatureLevel level) {
162196
static const HashAlgorithm* get_algorithms_end(CPUFeatureLevel level) {
163197
switch (level) {
164198
case CPU_None:
199+
case CPU_X86:
165200
case CPU_NEON:
166201
case CPU_MAX:
167202
default:
168203
return nullptr;
169204
case CPU_SSE2:
170-
return get_algorithms_end_SSE2();
171205
case CPU_AVX:
172-
return get_algorithms_end_AVX();
206+
return get_algorithms_end_SSE2();
173207
case CPU_AVX2:
174208
return get_algorithms_end_AVX2();
175209
case CPU_AVX512:
@@ -180,8 +214,8 @@ static const HashAlgorithm* get_algorithms_end(CPUFeatureLevel level) {
180214
const HashAlgorithm* get_algorithms_begin(CPUFeatureLevel level) {
181215
switch (level) {
182216
case CPU_None:
217+
case CPU_X86:
183218
case CPU_SSE2:
184-
case CPU_AVX:
185219
case CPU_AVX2:
186220
case CPU_AVX512:
187221
case CPU_MAX:
@@ -232,6 +266,7 @@ LegacyHashAlgorithm::LegacyHashAlgorithm(
232266
: _name(name)
233267
, _extensions(extensions)
234268
, _params(params) {
269+
UNREFERENCED_PARAMETER(expected_size);
235270
auto& dll = get_algorithms_dll();
236271
for (auto it = dll.algorithms_begin; it != dll.algorithms_end; ++it) {
237272
if (0 == strcmp(alg_name, it->name)) {

build_algorithms.ps1

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@ function Invoke-CmdScript {
3131

3232
$Environment = (Get-ChildItem Env:);
3333

34-
"SSE2", "AVX", "AVX2", "AVX512", "ARM64" | ForEach-Object {
34+
"x86", "SSE2", "AVX2", "AVX512", "ARM64" | ForEach-Object {
3535
$ExtraFlags = "";
36-
If ($_ -eq "ARM64") {
36+
If ($_ -eq "x86") {
37+
Invoke-CmdScript "$VSRoot\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
38+
} Elseif ($_ -eq "ARM64") {
3739
Invoke-CmdScript "$VSRoot\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
3840
$ExtraFlags = "--target=arm64-pc-windows-msvc";
3941
} Else {

0 commit comments

Comments
 (0)