关于Vector64.ExtractMostSignificantBits未使用pext指令的原因问询
关于Vector64.ExtractMostSignificantBits未使用pext指令的原因问询
我最近在看底层汇编生成的时候发现个奇怪的事儿:Vector256的ExtractMostSignificantBits方法会用intrinsic来实现,生成的代码很高效,但Vector64的同名方法却完全没用到intrinsic,反而生成了一大段手动位操作的汇编,就像下面这样:
mov qword ptr [rsp+0x80], r12 movzx rdx, byte ptr [rsp+0x80] shr edx, 7 movzx r8, byte ptr [rsp+0x81] shr r8d, 7 add r8d, r8d or edx, r8d movzx r8, byte ptr [rsp+0x82] shr r8d, 7 shl r8d, 2 or r8d, edx mov edx, ...
这就让我挺纳闷的——为啥Vector256能用上像pext这类高效的指令,Vector64却要搞这么繁琐的位操作?是因为硬件对Vector64的pext支持有局限?还是说在优化优先级上,Vector64的这个方法被忽略了?有没有懂行的朋友来聊聊这背后的原因呀?
备注:内容来源于stack exchange,提问作者David Wohlferd
相关产品推荐
相关产品推荐

