我正在使用 AltiVec 编程接口(interface)开发一个项目。
在一个地方,我想将 8 个字节从 vector 寄存器存储到缓冲区。
在 SSE 中,我们有一个内在的 _mm_storel_epi64
将 SIMD 寄存器的低 8 字节存储到缓冲区。
关于在 AltiVec 中实现 8 字节存储有什么想法吗?
最佳答案
我认为使用 AltiVec 做到这一点的唯一方法是:
- load 16 bytes containing 8 byte destination buffer (`vec_ld`)
- mask in the 8 bytes you want to write (`vec_sel`)
- store the modified 16 byte vector (`vec_st`)
当然,这假设所需的 8 字节目标落在 16 字节对齐 vector 内。例如,假设目标地址是 0x1004,那么您将从地址 0x1000 加载,修改字节 4..11,然后将 vector 写回 0x1000。
关于c - AltiVec 中的 mm_storel_epi64 等效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28427579/