SSE 2 及更高版本 - 为什么浮点数据类型只存储 2 个浮点数

SSE 2 and above - Why floating point data types store only 2 floating point numbers

我正在尝试使用 SSE 内部函数优化我的代码。浏览文档后,我看到 SSE 中有 __m128 数据类型用于浮点变量,能够存储 4 个浮点数。 SSE2中有一个只能存储2个浮点数的__m128d?这些变量之间有什么区别? SSE2 不是应该比 SSE 快吗?

SSE 指令使用 128 位寄存器。

A float 使用 4 个字节 = 32 位 -> 因此您可以存储 4 个浮点数 (4*32=128),这些是 __m128.

A double 使用 8 个字节 = 64 位 -> 因此您可以存储 2 个双精度数 (2*64=128),这些是 __m128d.

-> 更多信息 https://felix.abecassis.me/2011/09/cpp-getting-started-with-sse/