Skip to content

Conversation

@jgiannuzzi
Copy link
Contributor

@jgiannuzzi jgiannuzzi commented Oct 10, 2025

Changes

  • 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)

Port update checklist

  • Changes comply with the maintainer guide.
  • SHA512s are updated for each updated download.
  • The "supports" clause reflects platforms that may be fixed by this new version.
  • Any fixed CI baseline entries are removed from that file.
  • Any patches that are no longer applied are deleted from the port's directory.
  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
  • Only one version is added to each modified port's versions file.

- 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)
Comment on lines +36 to +37
+ uint64_t lo = a.d.v01 * b.d.v01;
+ uint64_t hi = __umulh(a.d.v01, b.d.v01);
Copy link
Contributor

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?

Copy link
Member

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.

Copy link
Contributor Author

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

Copy link
Contributor

@JavierMatosD JavierMatosD left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment

@JavierMatosD JavierMatosD marked this pull request as draft October 13, 2025 16:23
@BillyONeal BillyONeal dismissed JavierMatosD’s stale review October 13, 2025 19:58

Upstream was notified.

@BillyONeal BillyONeal marked this pull request as ready for review October 13, 2025 19:58
@BillyONeal BillyONeal merged commit 71f1234 into microsoft:master Oct 13, 2025
18 checks passed
@BillyONeal
Copy link
Member

Thanks!

@jgiannuzzi jgiannuzzi deleted the arrow-windows-arm64 branch October 13, 2025 21:09
@jgiannuzzi
Copy link
Contributor Author

Thanks for the merge @BillyONeal!

pitrou pushed a commit to apache/arrow that referenced this pull request Oct 15, 2025
…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>
zanmato1984 pushed a commit to zanmato1984/arrow that referenced this pull request Nov 5, 2025
… 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants