SIMD最適化とさまざまな__m128i変数を使用するコードがいくつかあります。明らかに、printfはそれらを処理できません。内容を印刷する簡単な方法はありますか?VisualStudio2010をC/C++で使用しています。
2679 次
2 に答える
4
これらを印刷するには、次の関数を使用します。
void print128_num(__m128i var)
{
uint16_t *val = (uint16_t*) &var;//can also use uint32_t instead of 16_t
printf("Numerical: %i %i %i %i %i %i %i %i \n",
val[0], val[1], val[2], val[3], val[4], val[5],
val[6], val[7]);
}
印刷する前に、128ビットを16ビット(または32ビット)に分割します。
これは、64ビットのサポートを利用できる場合の64ビットの分割と印刷の方法です。
void print128_num(__m128i var)
{
int64_t *v64val = (int64_t*) &var;
printf("%.16llx %.16llx\n", v64val[1], v64val[0]);
}
llx
出力が必要なlld
場合はに置き換えint
ます。
于 2012-12-10T18:15:58.507 に答える
2
私はVladのアプローチに基づいて答えを見つけました:
__m128i var;
printf("0x%I64x%I64x\n",var.m128i_i64[1], var.m128i_i64[0]);
これにより、128ビット値全体が16進文字列として出力されます。
于 2012-12-10T17:08:00.830 に答える