amd64提供了许多晦涩的硬件快捷方式。我拥有的是0xff00ff00ff00ff00
我想要的0xffffffff00000000
,甚至是0x00000000ffffffff
。尽管挖掘了AMD的手册显示pshufb
,但该手册的操作含糊不清。
我的问题是,是否有执行上述操作的指令(不是软件实现)?
pshufb
可能是您想要的指令。
它需要两个MMX / XMM寄存器作为参数。第一个是要洗牌的数据;第二个是要洗牌的数据。第二个(“控制遮罩”)控制它的改组方式。
每个寄存器中的数据被分解为字节。对于输出的每个字节,处理器使用控制掩码中的相应字节来决定如何设置它:
0x80
设置了屏蔽字节的高位(),则该字节的结果为零。0x03
,则输入的第三个字节用于输出的此字节。举例来说,的控制掩码0x0f0e0d0c0b0a09080706050403020100
将反转寄存器中的字节。
请注意,如果您仅使用普通的整数寄存器,则将数据输入适当的寄存器可能会很麻烦。使用编译器内在函数可能会使此操作更容易。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句