41得票2回答
不同的MMX、SSE和AVX版本是互相补充还是超集?

我在考虑应该熟悉x86 SIMD扩展。但是在我开始之前就遇到了麻烦。我找不到一个好的概述,告诉我哪些扩展仍然相关。 x86架构在几十年中积累了许多数学/多媒体扩展: MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 AVX AVX2 AVX512 我忘了什么吗? ...

37得票1回答
MMX 寄存器和 XMM 寄存器有什么区别?

我目前正在学习Intel x86处理器上的汇编编程。 请问有没有人能够解释一下,MMX寄存器和XMM寄存器之间的区别?我非常困惑它们各自的功能以及它们之间的异同。

16得票2回答
常见的SIMD技术

我从哪里可以获取有关常见SIMD技巧的信息?我已经拥有指令集并且知道如何编写非棘手的SIMD代码,但我知道SIMD现在更加强大了。它可以容纳复杂的无分支条件代码。 例如(ARMv6),以下指令序列将Rd的每个字节设置为对应的Ra和Rb字节的无符号最小值:USUB8 Rd, Ra, Rb SEL...

12得票3回答
简明的SSE和MMX指令参考,包括延迟和吞吐量信息。

我正试图通过使用MMX和SSE指令集的内联汇编来优化一些算法。然而,我一直找不到有关这些增强指令集的计时和用法的好参考资料。请帮忙查找包含吞吐量、延迟、操作数和指令简短描述等信息的参考资料。 目前我找到了以下资料: 英特尔指令参考 Intel 64 and IA-32 Architectu...

10得票1回答
PADDD指令在MMX中是否被支持,即使它在英特尔手册中缺失?

我用NASM编写了这段代码:PADDD mm0, mm1 它被组装而没有错误,但是这个指令虽然在NASM中存在,但我在Intel指令手册中找不到它,我找到的只有这个:PADDD xmm1, xmm2/m128 该指令需要使用 xmm 寄存器而不是 mm 寄存器。 这是 PADDD mm0, m...

10得票1回答
将一个带有__m64引用的C++项目转换为x64

当我开始进行转换并将目标设置为“x64”时,我得到7个未解决的外部引用。以下是两个示例: error LNK2001: unresolved external symbol _m_empty ...CONVOLUTION_2D_USHORT.obj CONVOLUTION_2D_US...

9得票1回答
如何在Windows异常处理程序中设置MMX寄存器以模拟不支持的3DNow!指令

我正在尝试恢复一个使用3DNow!指令集进行3D渲染的旧Win32游戏。 在像Win7 - Win10这样的现代操作系统中,如FPADD或FPMUL之类的指令是不允许的,并且程序会抛出异常。 由于游戏使用的3DNow!指令数量非常有限,在我的VS2008 MFC程序中,我尝试使用向量化异常...

8得票1回答
如何将“长长整型”(或__int64)转换为__m64

如何正确将__int64值转换为__m64值以在SSE中使用?

8得票2回答
SSE指令集:将32位浮点数转换为无符号8位整数

使用SSE指令,我已经得到了一个由四个32位浮点数组成的向量,将其限制在0-255的范围内并四舍五入为最接近的整数。现在我想将这四个浮点数以字节形式写出。 有一个intrinsic函数_mm_cvtps_pi8可以将32位转换为8位的有符号整数,但问题是,任何大于127的值都会被限制为127...

7得票1回答
MSVC 2019无法在64位目标中找到类似_mm_cvtpd_pi32之类的MMX内部函数;这与2013版本不同吗?

我目前正在将一个大型代码库从VS2013升级到VS2019。我遇到的编译器错误之一如下: intrinsics.h(348):错误C3861:“_mm_cvtpd_pi32”:找不到标识符 这个内置函数在Visual Studio的“emmintrin.h”中定义。仅当针对64位构建时...