рдПрдЖрд░рдПрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдореБрдЭреЗ рд╡рд┐рдзрд╡рд╛рдУрдВ рдкрд░ xxh3.h
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ __emulu
рдПрдХ x64/x86 рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдЖрдВрддрд░рд┐рдХ рдореИрдХреНрд░реЛ ( рдПрдордПрд╕ рдбреЙрдХреНрд╕ ) рд╣реИред
/* U64 XXH_mult32to64(U32 a, U64 b) { return (U64)a * (U64)b; } */
#ifdef _MSC_VER
# include <intrin.h>
/* MSVC doesn't do a good job with the mull detection. */
# define XXH_mult32to64 __emulu
#else
# define XXH_mult32to64(x, y) ((U64)((x) & 0xFFFFFFFF) * (U64)((y) & 0xFFFFFFFF))
#endif
рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ _MSC_VER
рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рднреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХреЗред рдПрдЖрд░рдПрдо рдпрд╛ рдХреЗрд╡рд▓ x64/x86 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рди рдХрд░рдХреЗ рдХрд╣реЗрдВред рдзрдиреНрдпрд╡рд╛рджред
рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ, @carstenskyboxlabs рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХреЛрдб рдкрде рдХреЗрд╡рд▓ x86
/ x64
рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА рд╡рд╣ рд▓рдХреНрд╖реНрдп рд╣реИ рдЬрд╣рд╛рдВ __emulu
рдирд┐рд░реНрджреЗрд╢ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рд╕рд╛рдЗрдб рдиреЛрдЯ: рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореБрдЭреЗ рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрдХрд▓рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЬрд╛рдП, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ AppveyorCI рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ ред рдЗрд╕рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рднрд╡рд┐рд╖реНрдп рд╡рд╛рд▓реЗред
рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрднреА рднреА AppveyorCI рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ VS/MSBuild UWP ARM рдмрд┐рд▓реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдореИрдВ рд╕реАрдПрдордХреЗ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ:
cd cmake_unofficial
mkdir build
cd build
cmake -G "Visual Studio 16 2019" -A ARM ..
cmake --build .
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
xxhash.obj : error LNK2019: unresolved external symbol __emulu referenced in function XXH3_mul128_fold64 [C:\Users\steve\Do
cuments\xxHash\cmake_unofficial\build\xxhash.vcxproj]
C:\Users\steve\Documents\xxHash\cmake_unofficial\build\Debug\xxhash.dll : fatal error LNK1120: 1 unresolved externals [C:\U
sers\steve\Documents\xxHash\cmake_unofficial\build\xxhash.vcxproj]
рдореЗрд░реЗ рдкрд╛рд╕ appveyor.yml рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдФрд░ рдЪрд▓рд╛рдиреЗ рджреЗрдЧрд╛:
- if "%PLATFORM%"=="visual_arm" (
cd cmake_unofficial &&
cmake . -DCMAKE_BUILD_TYPE=Release -A ARM &&
cmake --build . --config Release
)
рдзрдиреНрдпрд╡рд╛рдж @ рд╡реА-рд╕реНрдЯреНрд░реЛрдм рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП! рдкреНрд░рдпрд╛рд╕ рдпреЛрдЧреНрдп !
рдпрд╣ рд╢рд╛рдпрдж рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдПрдЖрд░рдПрдо рд╕рдВрдХрд▓рди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реЗ x64 рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
#if defined(_MSC_VER) && defined(_M_IX86)
# include <intrin.h>
# define XXH_mult32to64 __emulu
#else
# define XXH_mult32to64(x, y) ((U64)((x) & 0xFFFFFFFF) * (U64)((y) & 0xFFFFFFFF))
#endif
dev
рд╢рд╛рдЦрд╛ рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЬрдм рдореИрдВ рд╕реАрдПрдордХреЗ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ:
cd cmake_unofficial
mkdir build
cd build
cmake -G "Visual Studio 16 2019" -A ARM ..
cmake --build .
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
рдореЗрд░реЗ рдкрд╛рд╕ appveyor.yml рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдФрд░ рдЪрд▓рд╛рдиреЗ рджреЗрдЧрд╛: