-
-
Notifications
You must be signed in to change notification settings - Fork 855
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
Add ARM version of adler32 #2015
Conversation
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.
For .NET 7 cross-platform intrinsics will be available, so that code can be written on behalf of Vector128<T>
and not via Sse2
/ AdvSimd
.
I know that it's still a long time until is .NET 7 is available and adopted, but is this something that should be focused on now already?
That's interesting, I was not aware of this. How would that work? SSE has intrinsics which ARM does not have and vice versa. I think its to early to early to consider this now. Anything ARM related is now only pretty much experimental and will not land in the main branch anytime soon. |
Only the "common subset" is exposes as xplat-intrinsics. The journey started in dotnet/runtime#49397 but more operations got added so far -- I can't find a up-to-date summary of all operations 😢.
This is also my expectation. Just wanted to point to it (as a reminder that something is on the way). |
Thanks for sharing, that's very interesting to know. |
Co-authored-by: Günther Foidl <[email protected]>
PNG: Throw exception, if palette chunk is missing
Gif decoder. Fix memory access violations.
PNG: Ignore invalid gamma chunks
No, since - unlike the BCL - we have to maintain multiple .NET versions backwards, not just the shiniest-latest one, which means we would end up complicating our code with lots of |
…hub.com/SixLabors/ImageSharp into af/TotalAvailableMemoryBytes-workaround
…workaround Workaround GC.GetMemoryInfo() ARM32 issue
@antonfirsov I partly agree. Total agreement for backwards-compat and what you said about the BCL. For the case of ARM I neither agree nor disagree. ARM isn't supported right now, so no problems with backwards-compat, hence this opens the opportunity to use one code path with the xplat-intrinsics for ARM and x86/x64. '#if'def would then only be for Right now it looks like non-BCL libraries have to go special routes / code-pathes for each type of HW-platform, then with .NET 7 (and when .NET 6 isn't supported anymore) these code-pathes can be merged by using the xplat-intrinsics. So if ARM should be supported by .NET 6 the different code-pathes is IMO the right way to go. But it's relatively new concept, so it has to evolve and so it's good to have some discussion here to see what's doable and what's not. |
I will go ahead and merge this into the |
Prerequisites
Description
I was experimenting a bit with ARM hardware intrinsics and decided to port the adler32 version of chromium to ImageSharp.
BenchmarkDotNet=v0.13.1, OS=ubuntu 20.04
Unknown processor
.NET SDK=5.0.402
[Host] : .NET 5.0.11 (5.0.1121.47308), Arm64 RyuJIT
DefaultJob : .NET 5.0.11 (5.0.1121.47308), Arm64 RyuJIT
CPU info:
Benchmark was run with the following data:
There is still a bug, adler results for N 4096:fixedArm: 1010560139Scalar: 1010560140