ZHCUBL2K January   2018  – March 2024

 

  1.   1
  2.   C7000 主机仿真
  3. 关于本文档
    1. 1.1 相关文档
    2. 1.2 免责声明
    3. 1.3 商标
  4. 主机仿真入门
    1. 2.1 系统要求
    2. 2.2 安装说明
    3. 2.3 差异总结:主机仿真编码与原生 C7000 编码
  5. 一般编码要求
    1. 3.1 所需的头文件
    2. 3.2 包依赖项
    3. 3.3 示例程序
  6. 内在函数
    1. 4.1 类似 OpenCL 的内在函数
    2. 4.2 流地址生成器内在函数
    3. 4.3 C6000 传统内在函数
    4. 4.4 存储器系统内在函数
  7. TI 向量类型
    1. 5.1 构造函数
    2. 5.2 访问器
    3. 5.3 向量运算符
    4. 5.4 打印调试函数
  8. 流引擎和流地址生成器
  9. 查询表和直方图接口
    1. 7.1 查询表和直方图数据
  10. C6000 迁移
    1. 8.1 __float2_t 传统数据类型
  11. 矩阵乘法加速器 (MMA) 接口
  12. 10编译器错误和警告
    1. 10.1 编译器错误和警告中包含的关键术语
    2. 10.2 主机仿真特定语法
  13. 11修订历史记录
  14.   35

打印调试函数

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