Here’s something that will catch many developers off guard: if you compiled your app targeting AVX2 instructions and it runs on a Windows ARM device under Prism emulation, you’re actually getting slower performance than if you had compiled for the older SSE2-4.x instruction set.
Not slightly slower, in the worst case scenarios, we’re talking about running at roughly two-thirds the speed. That’s a 33% performance penalty just from choosing a “better” instruction set.
The finding comes from a technical deep-dive published on February 17 by the RemObjects team, who ran math benchmarks on ARM emulating x64 and noticed something odd: the AVX2+FMA builds showed very little improvement over SSE4.x builds, and in some cases were clearly worse.
After digging in, the conclusion was clear enough to put in the headline: AVX2 code runs at 2/3 the speed of equivalent SSE2-SSE4.x optimized code under emulation on Windows 11 ARM.
Why does this happen? Blame the 256-bit problem
The root cause comes down to architecture. AVX2 operates with 256-bit registers, double the width that ARM’s NEON instruction set handles natively. ARM NEON works with 128-bit registers, which is exactly what SSE2 through SSE4.x also use.
So when Prism, Microsoft’s x86 emulation layer, updated in Windows 11 24H2, translates SSE2 instructions into ARM equivalents, it’s a clean, one-to-one kind of translation. When it has to handle AVX2, it splits every 256-bit operation into two 128-bit NEON operations. That splitting is what kills performance.

Microsoft began testing AVX and AVX2 support in Prism as early as November 2024 through Insider builds, but the broad public rollout only happened with the October 2025 update (KB5066835) for Windows 11 24H2/25H2.
Before that, apps that depended on AVX2 simply didn’t run at all on ARM, games like Cyberpunk 2077 would crash instantly on Snapdragon laptops. So while AVX2 support is now there, it’s still being refined.
Microsoft’s own documentation acknowledges that Prism is optimized specifically for Qualcomm Snapdragon processors, and that some performance features require hardware only available in Snapdragon X series chips.
The 33% hit is real, but context matters
Here’s the important nuance: the 2/3 speed figure was measured on tight loops of vectorized math operations, the kind of workload found in data processing, scientific computing, and engineering software.
The RemObjects team themselves point out that most real-world apps are unlikely to see their entire performance drop to 2/3 of what SSE2-4.x would deliver, since few applications spend all their time in those kinds of compute-heavy loops.
Much of that work in games, for example, gets pushed to the GPU anyway.
That said, if your app does involve heavy floating-point math, audio DSP, physics simulations, or similar vectorized workloads, the penalty is very real and measurable.
In those cases, the recommendation is clear: compile for SSE2-4.x rather than AVX2 if your app is going to run under Windows ARM emulation.
The best long-term solution, of course, is a native ARM64 build, that bypasses the emulation layer entirely and gives you actual hardware performance without any translation overhead.
For end users, this is mostly invisible day-to-day. But for developers shipping performance-sensitive software, knowing which instruction set to target on Windows ARM is no longer just a nice-to-have, it’s a decision that directly affects your users on Snapdragon laptops.
Are you a developer targeting Windows ARM, or do you own a Snapdragon laptop? Have you noticed any performance quirks with emulated apps? Drop your thoughts below, we’d love to hear what you’re experiencing out in the wild!

