首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Altivec中可以旋转128位值吗?

在Altivec中可以旋转128位值吗?
EN

Stack Overflow用户
提问于 2017-09-02 13:46:57
回答 1查看 167关注 0票数 1

我正在尝试将一些ARM霓虹灯代码移植到AltiVec。我们的NEON代码有两个LOAD,一个ROT,一个XOR和一个存储,所以它看起来像是一个简单的测试用例。根据IBM的vec_rl文档:

结果的每个元素通过旋转a的对应元素以b的对应元素所指定的位数来获得。

文档接着说,vector unsigned int是最大的数据类型,除非是-qarch=power8,在这种情况下,vector unsigned long long适用。

我想执行128位旋转,而不是32位或64位旋转个别元素.位位置为19、31、67、97和109。它们不是字节对齐的。(常量来自ARIA分组密码

4x32和2x64是最大的AltiVec数据安排吗?在Altivec中可以旋转128位值吗?

如果打包旋转是唯一可用的操作,那么在C或AltiVec中进行比特旋转是最佳实践吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-02 16:46:40

您可以使用vsld (vec_sld)执行8位的多次旋转,然后使用vsl + vsr + vsel (vec_sll + vec_srl + vec_sel)来处理任何剩余的<8位旋转。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46014463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档