我正在运行一些使用 System.Numerics.Vector<T>
的 C# 代码,但据我所知,我没有充分利用 SIMD intrinsics。我使用带有更新1的Visual Studio Community 2015,并且我的clrjit.dll是v4.6.1063.1。
我正在运行的是搭载AVX指令集扩展的Intel Core i5-3337U处理器。因此,我认为我应该能够在256位寄存器上执行大多数SIMD指令。例如,反汇编应该包含像vmovups
、vmovupd
、vaddups
等指令,而Vector<float>.Count
应该返回8,Vector<double>.Count
应该返回4,等等...但这不是我所看到的。
相反,我的反汇编包含像movups
、movupd
、addups
等指令,以及以下代码:
WriteLine($"{Vector<byte>.Count} bytes per operation");
WriteLine($"{Vector<float>.Count} floats per operation");
WriteLine($"{Vector<int>.Count} ints per operation");
WriteLine($"{Vector<double>.Count} doubles per operation");
产生:
16 bytes per operation
4 floats per operation
4 ints per operation
2 doubles per operation
我错在哪里?要查看所有项目设置等内容,请前往此处查看项目。