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 not valid for a function of this linkage type.
関連ソースコードを以下に示します。完全なソースコードはfips197-p8.c
です。ソースコードは、Power 8 __cipher
と__vcipherlast
のテストドライバです。これは、メインといくつかのCの機能があります。効果的には、Power 8 AESの最小完全動作例です。
$ cat -n fips197-p8.c
...
11 #if defined(__xlc__) || defined(__xlC__)
12 // #include <builtins.h>
13 #include <altivec.h>
14 typedef vector unsigned char uint8x16_p8;
15 typedef vector unsigned int uint64x2_p8;
16 #else
17 #include <altivec.h>
18 typedef vector unsigned char uint8x16_p8;
19 typedef vector unsigned long long uint64x2_p8;
20 #endif
...
52 uint8x16_p8 Load8x16(const uint8_t src[16])
53 {
54 #if defined(__xlc__) || defined(__xlC__)
55 /* IBM XL C/C++ compiler */
56 # if defined(__LITTLE_ENDIAN__)
57 return vec_xl_be(0, src);
58 # else
59 return vec_xl(0, src);
60 # endif
61 #else
62 /* GCC, Clang, etc */
63
64 #endif
65 }
コンパイラのバージョンを以下に示します。私たちは、コンパイラをコントロールしていないので、これは我々が持っているものです。
$ xlc -qversion
IBM XL C/C++ for AIX, V13.1.3 (5725-C72, 5765-J07)
Version: 13.01.0003.0000
vec_xl
はリトルエンディアンで結構です。ビッグエンディアンのためにvec_xl
が私たちにトラブルを与えています。
問題は何ですか?どのように修正できますか?
AIX + IBM?あなたは私の同情を持っています –
しかし、これはAIXなしでは再現するのが難しいです。 IBMは特に役に立ちません。 –
: "関数結果の要素の順序は、-qaltivec = beが有効な場合のビッグエンディアンです。それ以外の場合はリトルエンディアンです。"あなたは '= be'を設定していませんでしたが、それは問題ではありませんか? –