比如a0......a15,改成-a0,......,-a15 我找了官方手册,没找到。我在网上搜索了很长时间。但没有用。请帮助或尝试给出一些如何实现这一目标的想法。
据我所知,没有一条指令可以在所有上下文中充当neg. 但是,如果您有一个全零向量,则可以使用单个指令从中减去。
如果您还没有全零向量,您可以使用以下方法获得一个vpxor:
vpxor xmm7, xmm7, xmm7
Run Code Online (Sandbox Code Playgroud)
然后您可以vpsubw从全零向量中减去 16 位数字,以生成减去这些数字(在这里,我从 中获取输入ymm1并在 中输出它们ymm2,用作ymm7全零向量):
vpsubw ymm2, ymm7, ymm1
Run Code Online (Sandbox Code Playgroud)
您可以生成一次全零寄存器,然后使用同一寄存器进行多次减法,只要您不将其值从零更改(例如,如果您有一个对大量 16 位数字求反的循环,则您可以可以在循环之前创建一个零寄存器,并单独使用vpsubw它来对循环内的数字求负)。因此,此方法通过一条指令加上一条设置指令来否定您的数字。
请注意,vpxor在xmm寄存器上将相应寄存器的上半部分清零,因此您可以通过寄存器自身ymm将整个ymm寄存器清零。xorxmm
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |