Hi,

Could you open a pull request on
https://github.com/apache/arrow to review the patch?

See also:

  * 
https://arrow.apache.org/docs/developers/guide/step_by_step/pr_lifecycle.html#create-pr
  * 
https://arrow.apache.org/docs/developers/overview.html#pull-request-and-review


Thanks,
-- 
kou

In <629FA843012000EA00390001_0_66239@msllnjpmsgsv06>
  "Cpp Win32/MSVC build" on Tue, 7 Jun 2022 19:34:27 -0000,
  "Arkadiy Vertleyb (BLOOMBERG/ 120 PARK)" <avertl...@bloomberg.net> wrote:

> Hi all,
> 
> I just created ARROW-16778 to address C++ build issues under MSVC/Win32.  The 
> following patch can fix the issue:
> 
> index 8583e10b2..496bbb78b 100644
> --- a/cpp/src/arrow/util/bit_util.h
> +++ b/cpp/src/arrow/util/bit_util.h
> @@ -67,7 +67,14 @@ static constexpr uint8_t kBytePopcount[] = {
>      5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 
> 5, 4, 5, 5, 6,
>      4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8};
> 
> +#if defined(_MSC_VER) && !defined(_M_AMD64) && !defined(_M_X64)
> +static inline uint64_t PopCount(uint64_t bitmap) {
> +  uint32_t* p = reinterpret_cast<uint32_t*>(&bitmap);
> +  return ARROW_POPCOUNT32(*p) + ARROW_POPCOUNT32(*(p + 1));
> +}
> +#else
>  static inline uint64_t PopCount(uint64_t bitmap) { return 
> ARROW_POPCOUNT64(bitmap); }
> +#endif
>  static inline uint32_t PopCount(uint32_t bitmap) { return 
> ARROW_POPCOUNT32(bitmap); }
> 
>  //
> @@ -199,7 +206,7 @@ static inline int CountLeadingZeros(uint64_t value) {
>  #if defined(__clang__) || defined(__GNUC__)
>    if (value == 0) return 64;
>    return static_cast<int>(__builtin_clzll(value));
> -#elif defined(_MSC_VER)
> +#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_X64))
>    unsigned long index;                     // NOLINT
>    if (_BitScanReverse64(&index, value)) {  // NOLINT
>      return 63 - static_cast<int>(index);
> @@ -220,7 +227,7 @@ static inline int CountTrailingZeros(uint32_t value) {
>  #if defined(__clang__) || defined(__GNUC__)
>    if (value == 0) return 32;
>    return static_cast<int>(__builtin_ctzl(value));
> -#elif defined(_MSC_VER)
> +#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_X64))
>    unsigned long index;  // NOLINT
>    if (_BitScanForward(&index, value)) {
>      return static_cast<int>(index);
> @@ -245,7 +252,7 @@ static inline int CountTrailingZeros(uint64_t value) {
>  #if defined(__clang__) || defined(__GNUC__)
>    if (value == 0) return 64;
>    return static_cast<int>(__builtin_ctzll(value));
> -#elif defined(_MSC_VER)
> +#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_X64))
>    unsigned long index;  // NOLINT
>    if (_BitScanForward64(&index, value)) {
>      return static_cast<int>(index);
> 
> Please let me know how do I submit this issue for approval.
> 
> Thanks,
> Arkadiy

Reply via email to