首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理Altivec加载和存储而不考虑PPC字节顺序?

处理Altivec加载和存储而不考虑PPC字节顺序?
EN

Stack Overflow用户
提问于 2009-10-29 04:39:30
回答 1查看 452关注 0票数 1

我有一些SIMD代码在Altivec中并行处理32位整数值。在某些情况下,我希望将整数加载为小端,而在其他情况下则加载为大端(注意:此选择与本机CPU字节顺序无关;它基于正在运行的算法)。使用Altivec的置换操作可以很容易地完成实际的字节交换,比如documented by Apple

我担心的是PowerPC允许大端或小端操作,所以我不知道是否需要在小端加载/存储或大端加载/存储上进行字节交换。(目前,我的代码总是针对小端,而不是大端内存操作,这在我当前使用的970上工作得很好,因为它当然是运行大端的)。

据我所知,小端模式的PPC相对较少,但它们确实存在,理想情况下,我希望我的代码在任何模式下都能正确快速地工作。

有没有一种方法可以处理AltiVec寄存器的大小字节顺序负载,而不考虑CPU的字节顺序?还有没有其他我应该知道的相关问题?维基百科( Wikipedia )有(自然地)声明:

“尽管AltiVec操作是128位的,但它们被视为64位。这允许与在AltiVec之前设计的小端主板兼容。”

这让我认为,在小端模式下,可能还有其他特定于AltiVec的污点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-07 08:08:25

几乎所有的PowerPC代码都采用高字节顺序,所有的ARM代码都采用低字节顺序。

有一些特殊的情况下使用了字节顺序交换-显然VirtualPC依赖于小字节顺序模式,因此最初不能在G5上工作(不包括它)-但我不会担心这些。

ARM在大端模式下也有类似的问题: doubles是混合端的。通过用0x2 (用于半字访问)和0x3 (用于字节访问)对低位地址位进行XORing,从而交换32位字内的有效顺序来实现“伪字符顺序”,但是这对于64位访问是中断的。我怀疑在PowerPC上也使用了同样的技巧,除了一次做64位。

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

https://stackoverflow.com/questions/1639964

复制
相关文章

相似问题

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