SPRUIG6J January   2018  – December 2023

 

  1.   1
  2.   C7000 Host Emulation
  3. About This Document
    1. 1.1 Related Documentation
    2. 1.2 Disclaimer
    3. 1.3 Trademarks
  4. Getting Started with Host Emulation
    1. 2.1 System Requirements
    2. 2.2 Installation Instructions
    3. 2.3 Summary of Differences: Host Emulation Coding vs. Native C7000 Coding
  5. General Coding Requirements
    1. 3.1 Required Header Files
    2. 3.2 Package Dependencies
    3. 3.3 Example Program
  6. Intrinsics
    1. 4.1 OpenCL-Like Intrinsics
    2. 4.2 Streaming Address Generator Intrinsics
    3. 4.3 C6000 Legacy Intrinsics
    4. 4.4 Memory System Intrinsics
  7. TI Vector Types
    1. 5.1 Constructors
    2. 5.2 Accessors
    3. 5.3 Vector Operators
    4. 5.4 Print Debug Function
  8. Streaming Engine and Streaming Address Generator
  9. Lookup Table and Histogram Interface
    1. 7.1 Lookup Table and Histogram Data
  10. C6000 Migration
    1. 8.1 __float2_t Legacy Data Type
  11. Matrix Multiply Accelerator (MMA) Interface
  12. 10Compiler Errors and Warnings
    1. 10.1 Key Terms Found in Compiler Errors and Warnings
    2. 10.2 Host Emulation Specific Syntax
  13. 11Revision History
  14.   35

Intrinsics

All intrinsics that are available with the C7000 compiler are available for use with C7000 Host Emulation. The following subsections address possible issues when using the following types of intrinsics with Host Emulation:

  • OpenCL-Like intrinsics (see Section 4.1)
  • Intrinsics used to program the streaming engine and streaming address generator (see Section 4.2)
  • Intrinsics used to migrate legacy code written for the C6000™ compiler (cl6x) (see Section 4.3)
  • Intrinsics that act on the memory system (see Section 4.4 for differences)

The following additional types of intrinsics are the same for C7000 Host Emulation and the C7000 compiler: intrinsics used for special loading and storing of vector and scalar elements, low-level direct-mapped intrinsics, intrinsics that are a part of the vector predicate to register interface, and intrinsics used to perform lookup table and histogram operations.

Intrinsics that modify control registers will do so in C7000 Host Emulation. All control registers that are available under C7000 Host Emulation can be referenced at any time as an unsigned 64-bit integer.

Reading and writing registers that rely on hardware information, such as execution mode and cycle count, is not fully supported in Host Emulation. While all symbols and intrinsics associated with these registers are defined for compilation purposes, their values cannot be depended upon to be accurate when using Host Emulation.

Some intrinsics may require special handling to be used properly. For all intrinsics not mentioned in the subsections that follow, their functionality remains exactly as it is on C7000. A comprehensive list of the intrinsics available for use with the C7000 compiler can be found in the c7x.h file and the other header files provided in the C7000 Runtime Support Package.

Instruction execution emulates the hardware as closely as possible.