4

SIMD最適化とさまざまな__m128i変数を使用するコードがいくつかあります。明らかに、printfはそれらを処理できません。内容を印刷する簡単な方法はありますか?VisualStudio2010をC/C++で使用しています。

4

2 に答える 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 に答える