我正在使用AltiVec编程界面进行项目。

在一个地方,我想将8个字节从矢量寄存器存储到缓冲区。

在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字节对齐向量内。例如,假设目标地址是0x1004,那么您将从地址0x1000加载,修改字节4..11,然后将向量写回到0x1000。

07-24 09:45