【发布时间】:2021-12-18 10:30:03
【问题描述】:
当您在 x86 上使用可变移位计数(在 CL 中)移位一个值时,移位计数以目标操作数的位大小为模。但是是否存在没有这种模运算的架构,即如果我移动的距离超过操作数中的位,则操作数变为零(如果我移动无符号)?
【问题讨论】:
-
较旧的 NVIDIA GPU 架构具有专用的左移和右移指令,可将移位计数限制为 0...32。较新的 NVIDIA GPU 架构提供了一个带有修饰符的统一漏斗移位指令,允许人们选择固定移位量(移位计数 0...32)或包装(移位计数 0...31),例如
shf.l.clamp.b32和shf.r.wrap.b32.
标签: assembly x86 x86-64 cpu-architecture bit-shift