Power4マシンである古いPowerMac G5でテストしています。ビルドが失敗している:私はtypedefでは利用できるようにする必要があるとき、私はトラブル決定を抱えている「ベクトルロングロング」の可用性はどうですか?
typedef __vector unsigned long long uint64x2_p8;
:
$ make
...
g++ -DNDEBUG -g2 -O3 -mcpu=power4 -maltivec -c ppc-simd.cpp
ppc-crypto.h:36: error: use of 'long long' in AltiVec types is invalid
make: *** [ppc-simd.o] Error 1
故障が原因です。
$ gcc -mcpu=power4 -maltivec -dM -E - </dev/null | sort | egrep -i -E 'power|ARCH'
#define _ARCH_PPC 1
#define _ARCH_PPC64 1
#define __POWERPC__ 1
OpenPOWER | 6.1. Vector Data Typesマニュアルは、ベクトルデータ型に関する良い情報を持っていますが、vector long long
が利用可能であるとき、それは説明しません:-mcpu=power4 -maltivec
を持つマシンは、64ビットの可用性を報告します。
__vector unsigned long long
の利用状況は? typedefはいつ使用できますか?
G5は64ビット*アーキテクチャー*を持っていましたが、AltiVecはその当時64ビットのベクトル要素をサポートしていなかったので、64ビット整数も倍精度浮動もありません。 –
Paulに感謝します。 Power4(Altivec)、Power7(アライメントされていないロード/ストア)、Power8(コア内の暗号)を区切ります。私は私の質問は、私たちは、64ビットタイプのPower4の代わりにPower5を使用する必要があると思いますか? – jww
私は、POWERのどの世代がSIMD用の64ビット要素タイプを導入したのかよくわかりません - それを見つけるためにはいくつかの研究をする必要があります。明らかに、64ビット要素を使用する必要がある場合、G5でコードをテストすることはできません。 –