按位运算 - 2022.1 简体中文

AI 引擎内核编码 最佳实践指南 (UG1079)

Document ID
UG1079
Release Date
2022-05-25
Version
2022.1 简体中文

以下 AI 引擎 API 允许对某个标量值和相同类型的输入矢量的所有元素或者对相同类型和大小的两个输入矢量的元素进行按位 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=window_readincr_v<8>(data0);
aie::vector<int16,8> iv2;
aie::vector<int16,8> iv_bit_and=aie::bit_and((int16)0xf,iv);//0xf bit AND with each element of 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);
aie::vector<int16,8> iv_bit_and2=aie::bit_and(iv,iv2);//bit AND on each element of iv and 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::upshift
aie::vector<int16,8> iv_down=aie::downshift(iv,2); //shift each element right 2 bits
aie::vector<int16,8> iv_up=aie::upshift(iv,2); //shift each element left 2 bits