restrict的作用就是限制一个指针对一块内存的访问,进一步说就是如果一块内存区域通过一个受限制指针访问,那么它就不能通过另一个受限指针访问。
引入restrict的目的是确保同一块内存上没有其它引用,让编译器更好地优化指令,生成更有效的汇编代码。
把#pragma MUST_ITERATE( , , )放在循环体之前,告知开发板循环次数,改善软件流水
MUST_ITERATE告诉编译器循环的属性,但是这些属性必须是真实的,不然程序可能运行出错。此指令主要用于优化C函数循环,一般情况下,只要有循环都最好带上此指令
#pragma MUST_ITERATE(min, max, multiple);其中multiple参数必须有,循环执行次数必是multiple的整数倍。
这个信息对编译器使用软件流水技术非常重要
那min和max是最大和最小循环次数
const short *restrict x;
//Assumption: Vectors x and h are double-word aligned
_nassert((int)x % 8 == 0);
是个断言语句。
对条件进行判断,如果为1,通过,为0,则抛出异常。