ZHCUAQ1F july 2015 – april 2023
ptr 之类的参数通常用于传递数组的基址,例如:
short buffer[100];
...
f(buffer);
这样的数组会自动与 8 字节边界对齐。无论数组是全局的、静态的还是本地的,都是如此。要在这些设备上实现 SIMD 优化只需要这种自动对齐。但您仍然需要包含 _nassert,因为在一般情况下,编译器无法保证 ptr 保存正确对齐的数组的地址。
如果始终将数组的基址传递给 ptr 之类的指针,那么可以使用以下宏命令来反映这一事实。
#if defined(_TMS320C6X)
#define ALIGNED_ARRAY(ptr) _nassert((int) ptr % 8 == 0)
#else
#define ALIGNED_ARRAY(ptr) /* empty */
#endif
void f(short *ptr)
{
ALIGNED_ARRAY(ptr);
; a loop operating on data accessed by ptr
}
此宏命令适用于所有 C6000 设备,或者将代码移植到另一个目标。