2

さて、私は最後の日のために頭を叩いていましたが、それは簡単なことだと確信しているので、ここに行きます. このコードが機能しないのはなぜですか? 私は Xcode 3.2.5 と LLVM を使用しており、次のようなものをコンパイルしようとすると:

uint16x8_t          testUnsigned = {1,2,3,4,5,6,7,8};
int16x8_t           testSigned;

testSigned = vreinterpretq_s16_u16(testUnsigned);

「互換性のない型 'int' から 'int16x8_t' に割り当てています」というエラーが表示されます。他の組み込み関数はすべて正常に動作しますが、何らかの理由でベクトルを再解釈できません。何か案は?前もって感謝します。

4

2 に答える 2

0

ヒロシが指摘するように、この特定の呼び出しにはバグがあるようです。ただし、内部でキャストしているだけなので、実行時のペナルティなしで、他のタイプを使用できます。たとえば、私はテストしましたが、これは機能します。

testSigned = vreinterpretq_s16_f32(vreinterpretq_f32_u16(testUnsigned));
于 2011-04-24T05:38:10.847 に答える
0

/開発者/プラットフォーム/iPhoneOS.platform/開発者/usr/llvm-gcc-4.2/lib/gcc/arm-apple-darwin10/4.2.1/include/arm_neon_gcc.h:6947

#define vreinterpretq_s16_u16(__a) \
  (int16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a)

これは、引数の型が signed int のようです。バグのようなにおいがします。よくわかりませんが、試してみてください

testSigned = vreinterpretq_s16_u16((int16x8_t)testUnsigned);
于 2010-12-10T14:13:55.143 に答える