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.
25.11.2024 08:10
👍 0
🔁 0
💬 1
📌 0
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.
25.11.2024 08:01
👍 1
🔁 0
💬 1
📌 0
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.
25.11.2024 08:00
👍 1
🔁 0
💬 1
📌 0
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.
25.11.2024 07:29
👍 0
🔁 0
💬 1
📌 0
Oof, I hear that's one of the most painful things one can experience. Hope you're ok.
24.11.2024 01:09
👍 0
🔁 0
💬 1
📌 0
Solution2: C# Is Faster Than C++!!!!!1!!! with Clinton Ingram
YouTube video by .NET Foundation
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...
22.11.2024 03:14
👍 9
🔁 4
💬 1
📌 0
So *this* is where everybody went...
21.11.2024 04:32
👍 3
🔁 0
💬 0
📌 0