按位运算 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文

以下 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,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);