SPRUIG6K January   2018  – March 2024

 

  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

Constructors

As of the v3.0 of the C7000 compiler, the C7000 TI Compiler (cl7x) accepts constructor-style syntax for vector initialization. To create portable code that compiles using both cl7x and Host Emulation, use the constructor-style syntax for vector initialization instead of the "cast/scalar-widening" style of initialization, which works correctly only with cl7x.

Examples of the correct and incorrect vector constructor initialization syntax are shown in the following code.

/* Host Emulation vector constructor syntax examples */
// The following examples work for both cl7x and Host Emulation
long2 ex1 = long2(1);                  // -> (1,1)
long2 ex2 = long2(1,2);                // -> (1,2)
long8 ex3 = long8(long4(1), long4(2)); // -> (1,1,1,1,2,2,2,2)
long8 ex4 = long8(long4(1),2,3,4,5);   // -> (1,1,1,1,2,3,4,5)

// Do not use the following syntax for code that needs to compile 
// with Host Emulation. This is valid C++ syntax, but results are 
// not as expected when compiling with Host Emulation.
//long8 ex5 = (long8)(1,2,3,4,5,6,7,8); // -> (8,8,8,8,8,8,8,8) [for Host Emulation]