Xxhash: XXH3 dan Windows ARM build

Dibuat pada 27 Jun 2019  ·  6Komentar  ·  Sumber: Cyan4973/xxHash

Saya memiliki masalah dengan menggunakan xxh3.h pada Janda saat membangun arsitektur ARM.
Masalahnya adalah __emulu adalah makro internal windows x64/x86 saja ( MS Docs ).

/* 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

Di mana itu didefinisikan hanya memeriksa _MSC_VER sebelum menggunakannya. Akan sangat membantu jika ini dapat memeriksa arsitektur juga. Katakan baik dengan tidak memasukkannya saat ARM atau hanya menggunakannya pada prosesor x64/x86. Terima kasih.

bug

Komentar yang paling membantu

Ketika saya menjalankan langkah-langkah ini menggunakan CMake dan Visual Studio 2019:

  1. cd cmake_unofficial
  2. mkdir build
  3. cd build
  4. cmake -G "Visual Studio 16 2019" -A ARM ..
  5. cmake --build .

Saya mendapatkan kesalahan ini:

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]

Saya tidak punya banyak pengalaman dengan appveyor.yml, tetapi mengikuti pola yang ada, saya pikir ini akan memungkinkan Anda menghasilkan dan menjalankan untuk ARM:

- if "%PLATFORM%"=="visual_arm" (
      cd cmake_unofficial &&
      cmake . -DCMAKE_BUILD_TYPE=Release -A ARM &&
      cmake --build . --config Release
  )

Semua 6 komentar

Poin bagus, terima kasih atas pemberitahuannya @carstenskyboxlabs !

Kita mungkin harus menegakkan bahwa jalur kode ini hanya valid untuk x86 / x64 , karena itulah target di mana instruksi __emulu didefinisikan .

Catatan tambahan: akan sangat bagus jika saya dapat menemukan cara untuk menguji kompilasi Visual Studio untuk ARM, dan mengotomatiskan pengujian semacam itu ke AppveyorCI . Itu akan menangkap masalah ini, dan yang potensial di masa depan.

Terima kasih atas tanggapannya.
Saya tidak yakin saya belum pernah menggunakan AppveyorCI, tetapi saya tahu bahwa VS/MSBuild mendukung build UWP ARM.

Ketika saya menjalankan langkah-langkah ini menggunakan CMake dan Visual Studio 2019:

  1. cd cmake_unofficial
  2. mkdir build
  3. cd build
  4. cmake -G "Visual Studio 16 2019" -A ARM ..
  5. cmake --build .

Saya mendapatkan kesalahan ini:

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]

Saya tidak punya banyak pengalaman dengan appveyor.yml, tetapi mengikuti pola yang ada, saya pikir ini akan memungkinkan Anda menghasilkan dan menjalankan untuk ARM:

- if "%PLATFORM%"=="visual_arm" (
      cd cmake_unofficial &&
      cmake . -DCMAKE_BUILD_TYPE=Release -A ARM &&
      cmake --build . --config Release
  )

Terima kasih @v-strob atas petunjuknya! Layak untuk dicoba!

Ini mungkin harus bekerja. Itu harus memperbaiki kompilasi ARM, dan itu harus meningkatkan kinerja 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

Diperbaiki di cabang dev

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

boazsegev picture boazsegev  ·  6Komentar

witedragen picture witedragen  ·  3Komentar

xinglin picture xinglin  ·  6Komentar

eloff picture eloff  ·  6Komentar

make-github-pseudonymous-again picture make-github-pseudonymous-again  ·  3Komentar