我在看AVX programming reference。 new Haswell instructions包括一些热切期待的“聚集”负载。但是,我无法弄清楚索引数据项的对齐限制。第2.5节“引用内存对齐”似乎应该列出表2.4或2.5中的各种VGATHER*
指令......但它没有。
背景:虽然收集指令支持的数据大小为4和8字节,但我的应用程序可以从将相邻的16位数据值集合加载到DWORDS中受益。具有2字节比例的奇数索引将产生2字节对齐的4字节加载,并且我从手册中不清楚这是否会出错或者无法按预期工作(我宁愿怀疑我运气不好)支持未对齐访问的指令似乎在其中有一个“U”。
答案 0 :(得分:5)
这是我第一次听说AVX2。但我猜测内存对齐限制与使用新的VEX编码方案的Sandy Bridge上AVX的当前实现不会有所不同。即除非在名称中明确使用带VMOV
的对齐A
指令,否则无需对齐。大多数指令允许以任何字节粒度对齐进行访问。
事实上,请参见Intel(R) Advanced Vector Extensions Programming Reference第35页第2.5节,其中明确说明了这一点。