__m64_pavg1_nraz

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]

Microsoft 固有の仕様 →

入力引数の各バイトの 2 個の 8 ビット符号なし整数の平均を計算し結果の対応するバイトにその平均を配置は並列平均 pavg1() 命令のバイトのフォームを生成します。

__m64 __m64_pavg1_nraz( 
   __m64 a, 
   __m64 b 
);

パラメーター

  • [入力] a
    8 個の 8 ビット符号なし整数の配列を含む __m64 の和集合。

  • [入力] b
    8 個の 8 ビット符号なし整数の配列を含む __m64 の和集合。

戻り値

各位置が元の配列の対応する整数の平均値である 8 個の 8 ビット符号なし整数の配列を含む __m64 の和集合。

必要条件

組み込み

アーキテクチャ

__m64_pavg1_nraz

IPF

ヘッダー ファイル <intrin.h>

解説

ほとんどの場合各バイトの結果は最も近い奇数に丸められます。 サフィックス nraz になります。「 Zero の丸め」を付けます。

使用例

// pavg1_nraz.cpp
// processor: IPF
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(__m64_pavg1_nraz)

void print8u(unsigned __int8* ia)
{
    printf_s("{ %4u, %4u, %4u, %4u, %4u, %4u, %4u, %4u }\n",
             ia[0], ia[1], ia[2], ia[3], ia[4], ia[5], ia[6], ia[7] );
}


int main()
{
    __m64 m, n, result;
    unsigned __int8 ra[8], i;
    unsigned __int8 ma[8] = { 10, 10, 10, 10, 10, 10, 10, 10 };
    unsigned __int8 na[8] = { 1, 3, 5,   7,   9, 11, 15, 1 }; 

    for (i = 0; i < 8; i++)
    {
       m.m64_u8[i] = ma[i];
       n.m64_u8[i] = na[i];
    }
    
    printf_s("a: \n");
    print8u(ma);
    printf_s("b: \n");
    print8u(na);
    printf_s("\n");

    result = __m64_pavg1_nraz(m, n);    
    printf_s("Parallel Average (a[]+b[])/2 : \n");
    print8u(result.m64_u8);
    printf_s("\n");
       
    // This operation is commutative.
    result = __m64_pavg1_nraz(n, m); 
    printf_s("Parallel Average (b[]+a[])/2 : \n");
    print8u(result.m64_u8);
    printf_s("\n");

}
          
        

参照

Reference

__m64

コンパイラ組み込み関数。