我正在研究如何将SIMD之上的抽象通用库移植到power体系结构中。
但是,关于支持哪个扩展的信息以及如何编译它们的信息是令人困惑的。目前,只看64位处理器,不超过电源-7。
一方面,我看到了这个文档。
有三种类型的指令:没有要求,需要电源-8和电源-9。
例如,vec_cmpgt没有特殊的要求。
但是,当我使用powerpc64-linux-gnu-g++-10时,我会看到一个错误:
error: '__builtin_altivec_vcmpgtsd' requires the '-mpower8-vector' option在其他一些地方,我可以找到有关vmx和vsx扩展的信息,但也不清楚对应的是哪些幂迭代。例如,这里在power-7上谈论vsx。
UPD:我忽略了64位整数比较只在power8上可用,但其他比较则在此之前。
发布于 2021-02-17 00:30:01
有一些资源,将帮助你的探索。
首先,CPU中可用的实际底层矢量指令随CPU版本的不同而不同。这些都被记录在ISA中。适用于:
这些都是大量的PDF,告诉你很多事情,包括矢量指令的细节。如果在汇编程序中编写代码,则可以直接使用这些代码。
然后,您已经注意到,受支持的编译器本质可能因编译器而异:您从非常支持google的AIX编译器手册中获得了一个引用,发现它在gcc上不起作用。
所以你会想花点时间和:
Power具有额外的复杂性,它支持不同类型的不同名称的向量扩展。在VSX?VMX?Altivec?VR?VSR?!这些PowerPC SIMD缩略语是如何相互关联的?有一个很好的解释者
https://stackoverflow.com/questions/66195879
复制相似问题