私は組み込み関数を使ってC/C++から作業しています。アラインされていないデータをVMXレジスタにロードするには、lvd2x
命令が必要です。 Power7およびPower8プロセッサではlvd2x
が利用可能です。13.1.4より前のLXVD2XのXL C組み込み機能はありますか?
GCCは、タスクを実行するために組み込まれたvec_vsx_ld
を提供します。 IBM XL C/C++ for Linux, V13.1.5、第4章によると、拡張機能は、バージョン13.1.4で追加:
新しい組み込み関数
次GCCベクトル組み込み関数サポートされています。
- vec_vsx_ld
- ...
コードXL Cで保護されているので、GCCの組み込み関数は必要ありません。問題は、私は見つけることができない、あるXL Cの組み込みlvd2x
のために:
#if defined(__xlc__) || defined(__xlC__)
uint8x16_p8 block = vec_vsx_ld(0, t);
#else
uint64x2_p8 block = (uint64x2_p8)vec_vsx_ld(0, t);
#endif
GCCはファームはXL C v13.1.3(5725-C72、5765-J07)とAIXを提供してコンパイルします。 13.1.4より前のLXVD2XのXL C組み込み機能はありますか?組み込みがある場合、それは何ですか?そうでない場合は、どのようにして指示にアクセスできますか?
(私はASMとインラインASMを避けようとしていますが、私はそれを書くためのプロセッサーについては十分に分かりませんが、私もかなり不快な経験をしています。 asmを使用しようとしています)。
Q:GCCを使って命令にアクセスするにはどうすればよいですか? A:インラインアセンブリは明白な選択です;)少なくとも* TRY *それはなぜですか? PS:あなたのアーキテクチャはPower PCです、正しいですか? – paulsm4
@ paulsm4 - GCCは問題ありません。私はIBMのXL Cコンパイラのためにそれが必要です。 – jww