ZHCUBL2L January   2018  – March 2025

 

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

打印调试函数

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