SPRUIG3C January   2018  – August 2019 TDA4VM , TDA4VM-Q1

 

  1.   Read This First
    1.     About This Manual
    2.     Related Documentation
    3.     Trademarks
  2. 1Overview and Scope
    1. 1.1 Comparing VCOP and C7000
    2. 1.2 About this Document
      1. 1.2.1 Documentation Conventions
    3. 1.3 Output Format
    4. 1.4 Data Types
      1. 1.4.1 40-bit Incompatibilities
      2. 1.4.2 40-Bit Detection in Host Emulation Mode
    5. 1.5 SIMD Width
    6. 1.6 VCOP Virtual Machine
  3. 2Kernel API
    1. 2.1 Overview
    2. 2.2 Parameter Block
      1. 2.2.1 Tvals Structure
      2. 2.2.2 Pblock Manipulation
  4. 3Loop Control
    1. 3.1 Overview
    2. 3.2 Loop Control and Nested Loops
    3. 3.3 Repeat Loops
    4. 3.4 Compound Conditions
    5. 3.5 Early Exit
  5. 4Addressing
    1. 4.1 Overview
    2. 4.2 Streaming Engines
    3. 4.3 Streaming Address Generators
    4. 4.4 Indexed Addressing
    5. 4.5 Circular Addressing
  6. 5Operations
    1. 5.1 Load Operations
    2. 5.2 Store Operations
      1. 5.2.1 Predicated Stores
      2. 5.2.2 Scatter and Transposing Stores
      3. 5.2.3 Optimization of OFFSET_NP1-Based Transpose
      4. 5.2.4 Rounding Stores
      5. 5.2.5 Saturating Stores
    3. 5.3 Arithmetic Operations
      1. 5.3.1 Vector Compares
      2. 5.3.2 Multiplication with Rounding, Truncation, or Left Shift
    4. 5.4 Lookup and Histogram Table Operations
      1. 5.4.1 Determination of Table Size
      2. 5.4.2 Table Configuration
      3. 5.4.3 Copy-in Operation
      4. 5.4.4 Copy-out Operation
      5. 5.4.5 Index Adjustment from Non-zero Agen
      6. 5.4.6 Lookup Operation
      7. 5.4.7 Histogram Update Operation
      8. 5.4.8 16-Way Lookup and Histogram
  7. 6Performance
    1. 6.1 Overview
    2. 6.2 Compiler Requirements
    3. 6.3 Automatic Performance Profiling
    4. 6.4 Performance Options
  8.   A Warnings and Notes
    1.     A.1 Compatibility Warnings
    2.     A.2 Efficiency Warnings

Determination of Table Size

In order to generate the copy-in/copy-out operations, the migration tool needs to know how large the table is. Unfortunately there is nothing in the Kernel-C source code that definitively indicates the size of a lookup or histogram table (the tables are referred to via a pointer to their base address). However, the migration tool can conservatively estimate the maximum required size by analyzing the possible range of values of the index vector used to index the table.

As a starting point, the absolute maximum table size is 32K bytes. That’s the size of each VCOP memory block, and the maximum size reservable for table data in L1D on C7x.

On VCOP, the index vector can only be defined by loading it from memory. If the load’s data type is __vptr_int8 or __vptr_uint8, the maximum index value is either 127 or 255 respectively.

Alternatively, saturation is often applied to the index values so as to insure the table access is within its bounds. The migration tool uses the max-set value from the saturation expression to determine an upper bound on the index value and therefore the table’s size.

To indicate the exact size of a table in bytes, the _HISTOGRAM and _LOOKUP directives have a new optional parameter, table_size:

_LOOKUP(num_tables, num_pts, duplication, table_size)
_HISTOGRAM(num_copies, duplication, table_size)

(Duplication is covered in Section 5.5.8) If the table size is not specified using the directives, and cannot be inferred by saturation or data size, the maximum size of 32K bytes will be used. The migration tool will issue a warning in this case.