-
Notifications
You must be signed in to change notification settings - Fork 7.3k
[arrow] enable building on Windows ARM64 #47750
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
515c015 to
83b40db
Compare
- vendored pcg is patched to support msvc arm64 intrinsics - ARROW_SIMD_LEVEL is set to NONE to disable the use of xsimd, which does not yet support msvc arm64 intrinsics (non-trivial to add)
83b40db to
82acc18
Compare
| + uint64_t lo = a.d.v01 * b.d.v01; | ||
| + uint64_t hi = __umulh(a.d.v01, b.d.v01); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there an upstream PR for these changes? Additionally, vendored libraries should be devendored as much as possible in vcpkg. I do see we have a pcg port. Should this be using that instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this change is correct but I would still like to see upstream at least notified before merging this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the upstream PR is here: apache/arrow#47779
JavierMatosD
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See comment
|
Thanks! |
|
Thanks for the merge @BillyONeal! |
…nsics (#47779) ### Rationale for this change This change enables building Arrow C++ for Windows ARM64 with MSVC when setting `ARROW_SIMD_LEVEL` to `NONE`. This is useful to be able to build Arrow with `vcpkg` and use it as a dependency. Setting `ARROW_SIMD_LEVEL` to `NONE` is done to disable the use of `xsimd`, which does not yet support msvc arm64 intrinsics, and is non-trivial to fix. ### What changes are included in this PR? A patch to the vendored `pcg` library, based on imneme/pcg-cpp#99. The upstream pcg library has not been updated in the past 3 years, so this may never get merged. ### Are these changes tested? Yes, the changes have been tested in microsoft/vcpkg#47750 (the same patch for `vcpkg`, which this change would alleviate) and in https://github.com/jgiannuzzi/ParquetSharp/actions/runs/18354286294 (a full run of the ParquetSharp CI, using this patch to build Arrow with `vcpkg`). ### Are there any user-facing changes? Not really, unless you consider adding the ability to build Arrow on Windows ARM64 user-facing? * GitHub Issue: #47784 Authored-by: Jonathan Giannuzzi <jonathan@giannuzzi.me> Signed-off-by: Antoine Pitrou <antoine@python.org>
… intrinsics (apache#47779) ### Rationale for this change This change enables building Arrow C++ for Windows ARM64 with MSVC when setting `ARROW_SIMD_LEVEL` to `NONE`. This is useful to be able to build Arrow with `vcpkg` and use it as a dependency. Setting `ARROW_SIMD_LEVEL` to `NONE` is done to disable the use of `xsimd`, which does not yet support msvc arm64 intrinsics, and is non-trivial to fix. ### What changes are included in this PR? A patch to the vendored `pcg` library, based on imneme/pcg-cpp#99. The upstream pcg library has not been updated in the past 3 years, so this may never get merged. ### Are these changes tested? Yes, the changes have been tested in microsoft/vcpkg#47750 (the same patch for `vcpkg`, which this change would alleviate) and in https://github.com/jgiannuzzi/ParquetSharp/actions/runs/18354286294 (a full run of the ParquetSharp CI, using this patch to build Arrow with `vcpkg`). ### Are there any user-facing changes? Not really, unless you consider adding the ability to build Arrow on Windows ARM64 user-facing? * GitHub Issue: apache#47784 Authored-by: Jonathan Giannuzzi <jonathan@giannuzzi.me> Signed-off-by: Antoine Pitrou <antoine@python.org>
Changes
pcgis patched to support msvc arm64 intrinsicsARROW_SIMD_LEVELis set toNONEto disable the use ofxsimd, whichdoes not yet support msvc arm64 intrinsics (non-trivial to add)
Port update checklist
./vcpkg x-add-version --alland committing the result.