问题标签 [mmx]

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 投票
2 回答
386 浏览

c++ - 访问 mm1 寄存器部件

是否可以访问 mmx 寄存器中的单个字节,例如数组?我有这个代码:

我想将 mm1[1],mm1[2],mm1[3].... 放入 c++ 变量中,例如:

谢谢。

0 投票
3 回答
3267 浏览

c++ - SSE 内在函数中的 if/else 语句

我正在尝试使用 SSE 内在函数优化一小段代码(我是该主题的完整初学者),但我对条件的使用有点坚持。

我的原始代码是:

这段代码的目标是计算一个 crc 表(常数可以是任何多项式,它在这里不起作用),

我想我的优化代码是这样的:

我不知道如何通过 if-else 语句,但我怀疑有一个聪明的把戏。有没有人知道如何做到这一点?

(除此之外,我的优化可能很差 - 任何关于它的建议或更正都会受到最大的同情)

0 投票
2 回答
1795 浏览

delphi - Delphi 是否支持所有 MMX/SSE 指令?

我有这段代码:

我收到此错误:

[Pascal 错误] SDIMAIN.pas(718):E2003 未声明的标识符:'PUNPCKDQ'

是我做错了什么,还是 Delphi 2007 不支持全套 MMX/SSE 指令?

0 投票
2 回答
487 浏览

optimization - 用于优化向量位移的汇编代码

我正在尝试编写一个例程,该例程将以最有效的方式将向量的所有元素向右移动 n 个位置,以适用于以下向量类型:BYTE->BYTE、WORD->WORD、DWORD->DWORD 和WORD->BYTE(假设结果中只有 8 位)。我想根据处理器的类型为每种类型设置三个例程(支持 SSE2,仅支持 MMX,仅支持标准指令 se)。因此我总共需要 12 个函数。

我自己已经找到了如何备份和恢复我需要的寄存器,如何进行循环,如何将数据复制到常规寄存器或 MMX 寄存器以及如何在逻辑上移位 1 个位置。

因为我不熟悉它的汇编语言。我应该为每个指令集使用哪些寄存器?如何优化 L1 缓存中大矢量(图像)的可用性?我如何找到向量的下一个元素(指针之类的东西),我知道我可以按地址制作一个 mov,并且我假设我必须根据我的数据类型将地址增加 1、2 或 4?

虽然我有所有的想法,但在这一点上编写代码有点困难。

谢谢你。

阿尔诺。

编辑:这是我试图为 MMX 在 DWORD 上移动 1 所做的事情:

0 投票
3 回答
861 浏览

c - MMX操作(加16bit没做)

我得到了一些包含无符号字符的向量,这些字符代表帧中的像素。我让这个功能在没有 MMX 改进的情况下工作,但我对不起作用的 MMX 感到沮丧......所以:

我需要添加两个无符号字符(总和需要作为 16 位而不是 8 位来完成,因为无符号字符从 0 到 255 已知)并将它们除以 2(右移 1)。到目前为止我所做的代码如下,但值是错误的,adds_pu16 没有添加 16bit 只是 8:


新进展:感谢 king_nak!我写了一个我想要做的简单版本:



结果是:

和:

分区:

最后结果:

好吧,小数字是可以的,而给出 127 的大数字是错误的。这是一个问题,我做错了什么:s

0 投票
1 回答
356 浏览

assembly - MMX 符号扩展

有谁知道如何使用 MMX 寄存器将符号从 16 位字扩展到 32 位字?我想从存储在 MMX 寄存器中的两个 16 位字中获取两个 32 位符号扩展字。不允许使用 SSE4 指令。

问候

0 投票
1 回答
267 浏览

assembly - 使用 MMX 汇编指令的乘法加左移操作

我正在寻找做shl(mult(var1,var2),1)运算,其中mult乘法var1var2(都是 16 位有符号整数)并shl在算术上左移乘法结果。结果必须是饱和的,即 int32 max 或 int32 min 如果发生上溢或下溢并且mult(-32768,-32768)=2147483647

我需要以我认为使用 MMX/SSE 指令集的有效方式对多个值进行此操作。我虽然关于制作mult(sign_extesion(var1)shl(sign_extension(var2)))但我刚刚发现不mult()存在 MMX 饱和版本。你知道有什么其他方法可以得到吗?

0 投票
2 回答
2425 浏览

assembly - 添加饱和的 32 位字

您知道使用 MMX/SSE 汇编指令添加饱和 32 位有符号字的任何方法吗?我可以找到 8/16 位版本,但没有 32 位版本。

0 投票
1 回答
3300 浏览

visual-studio - 如何将“long long”(或 __int64)转换为 __m64

__int64将值转换__m64为用于 SSE的值的正确方法是什么?

0 投票
1 回答
361 浏览

jms - WebSphere MQ 和 mmx:无法连接队列

我们正在使用 WebSphere MQ 和 mmx ,但是在尝试连接队列时遇到了问题:

请让我们知道此问题的可能原因。我们已经完成了所有相关的更改(主机名:端口)等。