altivec

    2

    1答えて

    私はAltivecコードパスをいつ有効にするかを決めようとしています。 -qaltivecが有効なときにプリプロセッサマクロを調べると、対応するプリプロセッサマクロが表示されません(下記参照)。 -qaltivecと-DALTIVEC=1などが心配です。ユーザーはマニュアルをほとんど読んでいないので、プラットフォームに関する無限の質問やバグレポートが生成されます。 RTFMがうまくいくとすれば、そ

    2

    1答えて

    Power4マシンである古いPowerMac G5でテストしています。ビルドが失敗している:私はtypedefでは利用できるようにする必要があるとき、私はトラブル決定を抱えている typedef __vector unsigned long long uint64x2_p8; : $ make ... g++ -DNDEBUG -g2 -O3 -mcpu=power4 -maltivec

    0

    1答えて

    私は組み込み関数を使ってC/C++から作業しています。アラインされていないデータをVMXレジスタにロードするには、lvd2x命令が必要です。 Power7およびPower8プロセッサではlvd2xが利用可能です。 GCCは、タスクを実行するために組み込まれたvec_vsx_ldを提供します。 IBM XL C/C++ for Linux, V13.1.5、第4章によると、拡張機能は、バージョン13

    1

    1答えて

    IBMのXL Cコンパイラを使用してAIXで作業しています。私はコンパイルエラーをキャッチしており、どのように処理するのかわかりません: $ xlc -g3 -O0 -qarch=pwr8 -qaltivec fips197-p8.c -o fips197-p8.exe "fips197-p8.c", line 59.16: 1506-754 (W) The parameter type is

    5

    1答えて

    我々はいくつかの場所でベクトルを入れ替え、そして我々はvec_permビルトインで使用するために区別さ0値を必要としています。私たちは、vec_zero()または類似の位置を特定することができていないので、我々は我々が物事を処理する方法を知っていただきたいと思います。 コードは、現在、2つの戦略を使用します。最初の戦略は、ベクトルロードです: __attribute__((aligned(16))

    2

    1答えて

    この質問はPower8 in-core crypto patchにありました。このパッチは、Power8ビルトインを使用してAESを提供します。 VSXレジスタをロードするときは、リトルエンディアンマシンで実行するときに128ビットのエンディアン反転を実行して、VSXレジスタが適切な値をロードするようにする必要があります。 コンパイル時に、__BYTE_ORDER__のようなマクロをチェックするこ

    1

    2答えて

    下記の質問に私の無知を許してください。私たちはGCC 4.8(以上)とIBM XL C/C++ 12(以上)をサポートしています。また、AIXおよびLinux上でビッグエンディアンおよびリトルエンディアンをサポートしています。コンパイラとプラットフォームによってコードがかなり乱雑になりました。 定数1をVSXレジスタにロードします。これは私たちが作ったコードですが、それはとても複雑なので間違ってい

    1

    1答えて

    Power8でPowerPCを実行しているときにendianessの問題を追跡しようとしています。ビッグエンディアンはOK、リトルエンディアンはいくつかの問題を抱えています。 以下uint8x16_p8は、__vector unsigned charのtypedefです。 GDBはそれがメモリレイアウトを使用している値を出力する場合 1110 uint8x16_p8 r5 = (uint8x16

    3

    2答えて

    私はこれを序文にしています。私はASMでの経験は非常に限られており、SIMDでの経験は非常に限られています。 しかし、PPC/Cellプロセッサで使用するAltiVec命令に移植したいと思う次のMMX/SSE最適化コードがあります。 これはおそらく大きな質問です。ほんの数行のコードであっても、ここで何が起こっているのか分かりません。 本来の機能: static inline int convolv