为了账号安全,请及时绑定邮箱和手机立即绑定

即时生成矢量常量的最佳指令序列是什么?

即时生成矢量常量的最佳指令序列是什么?

即时生成矢量常量的最佳指令序列是什么?“最佳”是指最少的指令(或最少的微指令,如果有任何指令解码到一个以上的微指令)。机器码大小(以字节为单位)是相等的insn计数的平局。从本质上讲,恒定生成是新的依赖链的开始,因此延迟很重要。在循环内生成常量也很不常见,因此吞吐量和执行端口需求也几乎无关紧要。生成常量而不是加载常量需要更多指令(全零或全一除外),因此确实会占用宝贵的uop缓存空间。与数据缓存相比,这可能是更为有限的资源。Agner Fog出色的《优化装配》指南在中对此进行了介绍Section 13.4。表13.10具有用于产生向量序列,每一个元素是0,1,2,3,4,-1,或-2,与从8位到64位单元大小。表13.11具有用于产生一些浮点值序列(0.0,0.5,1.0,1.5,2.0,-2.0,和位掩码为符号位。)Agner Fog的序列仅出于设计目的或因为已有一段时间没有更新而仅使用SSE2。简短的非显而易见的指令序列还可以生成其他哪些常量? (具有不同移位计数的进一步扩展是显而易见的,并且没有“兴趣”。)是否有更好的序列来生成Agner Fog列出的常数?如何将128位立即数移动到XMM寄存器说明了一些将任意128b常量放入指令流中的方法,但这通常不明智(它不节省任何空间,并占用大量的uop缓存空间。)
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 423 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信