Intel®高层次综合编译器专业版: 最佳实践指南

ID 683152
日期 12/04/2023
Public
文档目录

9.2. 使用ac_int数据类型时避免负位移

ac_int数据类型不同于位移中的其他语言(包括C和Verilog)。默认情况下,如果移位量带有有符号数据类型ac_int则允许负位移。

硬件中,该负位移会同时实现左位移器和右位移器。以下代码实例显示有符号数据类型的位移量。

int14 shift_left(int14 a, int14 b) {
    return (a << b);
} 

如果您知道位移总是在一个方向上,则为了实现有效位移运算符,就请按如下所示将位移量声明为无符号数据类型:

int14 efficient_left_only_shift(int14 a, uint14 b) {
    return (a << b);
}