问题标签 [sse3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
203 浏览

mingw - MinGW 错误类型“__m128i”无法在 Eclipse 中解决

在使用 MinGW 的 Eclipse 中,我试图编译具有一些英特尔内在指令 (sse2 sse3) 的 c 代码。我已经给出了编译器选项 -march=native -msse2 -msse3 -mssse3 -msse4.1但我收到了一个错误

无法解析类型“__m128i”。

我仍然能够构建应用程序,但它在执行英特尔内在指令时在运行时崩溃。所以我浏览了英特尔内部指令的头文件,它显示“未启用 SSE3 指令集”。

请帮助我摆脱困境。

0 投票
1 回答
1961 浏览

c++ - (Vec4 x Mat4x4) 产品使用 SIMD 和改进

我正在编写一个复杂的模拟程序,并且发现最耗时的例程是将四向量(float4)与 4x4 矩阵相乘的例程。我需要在几台或多或少旧的计算机上运行这个程序。这就是为什么我尝试在以下代码中检查此类操作的 SIMD 功能:

我对此类问题的改进有一些麻烦。运行代码时,我得到以下结果(Intel Core i5 4670K、3.4GHz、Haswell、Codeblock+MinGW 编译器使用 -O2 -march=corei7-avx):

我的问题如下:

  1. 这是否可以提高性能/加速?对于 SSE,它应该是 x4(最大值),对于 AVX,它应该是 x8。

  2. 为什么 AVX 不比 SSE3 快?

对于那些说:“停止使用你的东西,使用英特尔数学核心库”的人,我回答:“我不会,因为我想要一个小的可执行文件,而且我只需要在这种特定情况下使用 SIMD,而不是其他地方”; -)

0 投票
1 回答
2314 浏览

assembly - 如何在汇编代码 x86 和 SSE 中使用向量

我不知道如何在 x86 中访问 stl 向量。我试图这样做,但我有一些错误。

我想用 SSE 语言做同样的事情。

先感谢您!

0 投票
0 回答
2230 浏览

c++ - OpenCV 中的处理器优化标志

我正在构建一个使用 OpenCV 的应用程序,它将在各种 Windows 计算机(使用 Win7、Win8、Win10)上运行。

现在我发现我的应用程序在某些计算机上随机崩溃。经过大量谷歌搜索后,我意识到在 OpenCV 中启用 SSE3 会导致不支持 SSE3 的处理器上的非法指令崩溃。

http://answers.opencv.org/question/18001/illegal-instruction-when-running-any-compiled-opencv-demo-binary-sse3-flag/

https://bugs.launchpad.net/linuxmint/+bug/1258259

所以这是我的问题:你们中有人知道哪些处理器标志是“安全的”。我了解他们的工作,但我不知道处理器支持例如 SSE42 有多普遍。

换句话说:您认为在编译 OpenCV 时应该禁用哪些标志?

0 投票
1 回答
683 浏览

x86 - 在这种情况下,_mm_movehdup_ps 和 _mm_shuffle_ps 有什么区别?

如果我的理解是正确的,

_mm_movehdup_ps(a)

给出相同的结果

_mm_shuffle_ps(a, a, _MM_SHUFFLE(1, 1, 3, 3))?

两者有性能差异吗?

0 投票
0 回答
153 浏览

c - 使用 SSE3 水平添加

我正在尝试使用 SSE 和 SSE3 编写一个简单的代码来计算数组所有元素的总和。不同之处在于,在其中一个代码中,我使用 PADDD“垂直”求和,而在另一个代码中,我使用 HADPPS 水平求和。由于我感兴趣的唯一值是总和,所以我计算总和的方式应该无关紧要。但是,水平加法会输出错误的结果。知道为什么吗?

这是常规添加的代码:

这是水平添加的代码:

我认为只有添加指令应该改变,还是不改变?

0 投票
1 回答
414 浏览

assembly - 在 x86-SSE 中将四个压缩单精度浮点转换为无符号双字

有没有办法在带有 SSE 扩展的 x86 中将四个打包的单精度浮点值转换为四个双字?最接近的指令是CVTPS2PI,但它不能在两个 xmm 寄存器上执行,而是应该作为CVTPS2PI MM, XMM/M64. 如果我想要类似的东西<conversion_mnemonic> XMM, XMM/M128怎么办?

谢谢。伊曼。

0 投票
0 回答
87 浏览

c - 二维数组的 SSE

我想使用 SSE3 指令更改以下代码:

u 和 v 是浮点类型的二维数组。到目前为止我所拥有的是这个,但程序运行不正确。

我怀疑这是因为_mm_loadu_ps存储 u[i][1]、u[i][2]、u[i][3] 和 u[i][4] 的值,但我想存储 u[ i][1]、u[i+1][1]、u[i+2][1]、u[i+3][1] 和 u[i+4][1]。我怎样才能做到这一点?Loopfactor 的值为 4。非常感谢任何帮助。