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

Accessors

C7000 Host Emulation provides the following supports for accessors:

  • Single element accessors, such as .s0(), are supported.
  • Half vector accessors, such as .lo() and .even(), are supported.
  • Complex accessors, such as .r(), are supported.
  • Subscript accessors, such as .s[0], are supported.
  • Multiple element swizzle accessors, such as .s0312(), are not supported. This is because there are too many combinations of the swizzle accessors and it would not be possible to have definitions for all of them. Workarounds involve using one the following idioms.
    int2 my_new_vec = int2(my_int8_vec.x(), my_int8_vec.z()); // instead of my_vec.xz()
    
    /* Swizzle accessor example workaround in Host Emulation code */
    int16 ex = int16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
    
    // Desired, but illegal when using Host Emulation:
    // int8 swizzle = ex.s048c159d()
    // Potential workaround:
    int8 swizzle = int8(ex.even().even(), ex.odd().even());