Sign in

Clinton Ingram

@saucecontrol.us
43 followers 25 following 7 posts
PostsRepliesMedia
Clinton Ingram @saucecontrol.us · 25/11/2024
The NAOT thing makes things difficult for library authors because we don't choose what gets IsSupported compiled to a constant -- it's up to the consuming project. By default SSE2 is all you get as constant, everything above is runtime check. Consumer can pick a higher baseline and make more free.
100
Clinton Ingram @saucecontrol.us · 25/11/2024
There's a secondary issue with NAOT where the IsSupported checks are actual runtime lookups instead of being folded to constant as JIT does, so those things that have platform checks actually become more expensive.
110
Clinton Ingram @saucecontrol.us · 25/11/2024
It's tricky. Intrinsics are treated differently by JIT (e.g. higher inlining preference), so implementing the xplat surface in C# would result in poorer perf.
110
Clinton Ingram @saucecontrol.us · 25/11/2024
Glad you enjoyed it! There are really two separate shuffle issues. The first is that if the mask register isn't constant, you always get slow code. The fix for that is a new API: github.com/dotnet/runti.... Second issue is that even constants aren't always recognized. Both are still in net9.0.
100
Clinton Ingram @saucecontrol.us · 24/11/2024
Oof, I hear that's one of the most painful things one can experience. Hope you're ok.
100
Clinton Ingram @saucecontrol.us · 22/11/2024
The C# Community Discord is putting on another virtual conference, and I'll be talking performance. SIMD content guaranteed. Nov 24 @ 17:30 UTC www.youtube.com/watch?v=T4Ao...
youtube.com
Solution2: C# Is Faster Than C++!!!!!1!!! with Clinton Ingram
YouTube video by .NET Foundation
194
Clinton Ingram @saucecontrol.us · 21/11/2024
So *this* is where everybody went...
030