gpt4 book ai didi

c - 是否可以在 Altivec 中旋转 128 位值?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:16 25 4
gpt4 key购买 nike

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

Each element of the result is obtained by rotating the corresponding element of a left by the number of bits specified by the corresponding element of b.

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

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

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

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

最佳答案

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

关于c - 是否可以在 Altivec 中旋转 128 位值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46014463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com