ZHCUBL2K January 2018 – March 2024
C7000 主机仿真提供了打印函数,可用于任何 TI 向量类型。此函数输出向量内容的格式化列表。此函数特定于 C7000 主机仿真,C7000 编译器不支持此函数。因此,为了使用 C7000 编译器进行编译,必须通过检查 __C7X_HOSTEM__ 预处理器符号来省略或保护对此函数的引用。以下示例演示了如何在向量的不同访问器级别使用打印函数。
/* Print function usage */
#ifndef __C7X_HOSTEM__
void print(int* ptr, int length)
{
// Loop over elements and print
}
#endif
int8 example = int8(int4(0), int4(1));
#ifdef __C7X_HOSTEM__
example.print(); // Prints: (0,0,0,0,1,1,1,1)
example.lo().print(); // Prints: (0,0,0,0)
example.hi().lo().print(); // Prints: (1,1)
example.even().print(); // Prints: (0,0,1,1)
example.even().hi().print(); // Prints: (1,1)
//example.s0().print(); // Illegal, member .s0 is a scalar value
__vload_dup(&example).print(); // Prints (0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1)
#else
// Target implementation
// NOTE: Output depends on print() implementation
print((int*)(&example), 8); // 0,0,0,0,1,1,1,1
// Error, can't take the address of a swizzle
//print((int*)(&example.hi()), 4);
// Option 1, preferred
int4 result_int4 = example.hi();
print((int*)(&result_int4), 4); // 1,1,1,1
// Option 2
print((((int *)&example)+2), 4); // 0,0,1,1
int16 result_int16 = __vload_dup(&example);
print((int*)&result_int16, 16); // 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
#endif