ビット単位の演算 - 2023.2 日本語

AI エンジン カーネルおよびグラフ プログラミング ガイド (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 日本語

次の AI エンジン API を使用すると、スカラー値および同じデータ型の入力ベクターのすべての要素、または同じデータ型とサイズの 2 つの入力ベクターに対して、ビット AND、OR、XOR、および NOT 演算を実行できます。

  • aie::bit_and
  • aie::bit_or
  • aie::bit_xor

次の AI エンジン API を使用すると、入力ベクターの要素に対してビット NOT 演算を実行できます。

  • aie::bit_not
注記: aie::bit_* 演算は、AI エンジンのスカラー プロセッサでエミュレートされます。
aie::vector<int16,8> iv,iv2;

// 0xf bit AND with each component of iv
aie::vector<int16,8> iv_bit_and=aie::bit_and((int16)0xf,iv);
aie::vector<int16,8> iv_bit_or=aie::bit_or((int16)0xf,iv);
aie::vector<int16,8> iv_bit_xor=aie::bit_xor((int16)0xf,iv);

// bit AND on each component of iv and iv2
aie::vector<int16,8> iv_bit_and2=aie::bit_and(iv,iv2);
aie::vector<int16,8> iv_bit_or2=aie::bit_or(iv,iv2);
aie::vector<int16,8> iv_bit_xor2=aie::bit_xor(iv,iv2);
aie::vector<int16,8> iv_not=aie::bit_not(iv);

次の AI エンジン API は、ベクターのすべてのコンポーネントを指定されたビット数だけ右または左にシフトします。

  • aie::downshift: ベクターのコンポーネントを指定したビット分右に算術 (符号拡張して) シフトする。
    aie::vector<int16,8> iv_down=aie::downshift(iv,2);
  • aie::upshift: 各コンポーネントを指定したビット分左にシフトする。0 で埋められる。
    aie::vector<int16,8> iv_up=aie::upshift(iv,2);
  • aie::logical_downshift: ベクターのコンポーネントを指定したビット分右に論理 (ゼロ拡張して) シフトする。
    aie::vector<int16,8> iv_logic_down=aie::logical_downshift(iv,2);