Skip to content

Add UpscaleFilter to SVE microbenchmark#5038

Open
ylpoonlg wants to merge 6 commits intodotnet:mainfrom
ylpoonlg:github-upscalefilter
Open

Add UpscaleFilter to SVE microbenchmark#5038
ylpoonlg wants to merge 6 commits intodotnet:mainfrom
ylpoonlg:github-upscalefilter

Conversation

@ylpoonlg
Copy link
Contributor

Adds the upscale filter function to SVE benchmark.

Performance Results

Run on Neoverse-V2

Method Size Mean Error StdDev Median Min Max Allocated
Scalar 15 12.632 ns 0.0797 ns 0.0706 ns 12.595 ns 12.577 ns 12.775 ns -
Vector128UpscaleFilter 15 13.011 ns 0.0286 ns 0.0223 ns 13.001 ns 12.995 ns 13.067 ns -
Sve2UpscaleFilter 15 2.445 ns 0.0012 ns 0.0011 ns 2.445 ns 2.444 ns 2.447 ns -
Scalar 127 127.955 ns 0.1336 ns 0.1250 ns 127.912 ns 127.802 ns 128.170 ns -
Vector128UpscaleFilter 127 25.346 ns 0.0258 ns 0.0228 ns 25.350 ns 25.298 ns 25.387 ns -
Sve2UpscaleFilter 127 31.288 ns 0.0219 ns 0.0205 ns 31.296 ns 31.248 ns 31.310 ns -
Scalar 527 517.358 ns 0.2587 ns 0.2020 ns 517.276 ns 517.211 ns 517.779 ns -
Vector128UpscaleFilter 527 77.554 ns 0.0861 ns 0.0805 ns 77.536 ns 77.457 ns 77.692 ns -
Sve2UpscaleFilter 527 133.633 ns 0.0597 ns 0.0558 ns 133.632 ns 133.511 ns 133.706 ns -
Scalar 10015 9,750.171 ns 29.3132 ns 22.8859 ns 9,740.865 ns 9,738.636 ns 9,816.282 ns -
Vector128UpscaleFilter 10015 1,314.405 ns 0.2221 ns 0.1734 ns 1,314.380 ns 1,314.190 ns 1,314.665 ns -
Sve2UpscaleFilter 10015 2,565.316 ns 0.2775 ns 0.2167 ns 2,565.276 ns 2,564.971 ns 2,565.705 ns -

cc @dotnet/arm64-contrib @SwapnilGaikwad @LoopedBard3

@ylpoonlg ylpoonlg marked this pull request as ready for review November 10, 2025 15:55
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new Arm64 SVE microbenchmark that measures an upscale filter implementation across scalar, AdvSimd (Vector128), and SVE2 code paths, and updates the microbenchmark project file to only compile this new SVE2 benchmark on TFMs that support the required intrinsics APIs.

Changes:

  • Added UpscaleFilter SVE benchmark with Scalar, Vector128, and SVE2 implementations plus result verification.
  • Updated MicroBenchmarks.csproj to exclude UpscaleFilter.cs for target frameworks older than net10.0.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
src/benchmarks/micro/sve/UpscaleFilter.cs New SVE benchmark implementing and validating an upscale filter with multiple SIMD paths.
src/benchmarks/micro/MicroBenchmarks.csproj Adds TFM-conditional compilation to exclude the new SVE2 benchmark on TFMs < net10.0.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

ylpoonlg and others added 2 commits March 20, 2026 17:11
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.

4 participants