SPRUIG5E January   2018  – March 2023 TDA4VM , TDA4VM-Q1

 

  1.   Abstract
  2. 1About This Document
    1. 1.1 Related Documents
    2. 1.2 Trademarks
  3. 2Migrating C Source from C6000 to C7000
    1. 2.1  Compiler Options
    2. 2.2  Native Vector Data Types
    3. 2.3  Type Qualifiers: near and far
    4. 2.4  64-bit long Type
    5. 2.5  References to Control Registers
    6. 2.6  Memory-Mapped Peripherals
    7. 2.7  Run-Time Support
    8. 2.8  Contents of Migration Header File c6x_migration.h
      1. 2.8.1 Supported Macros
      2. 2.8.2 Non-Supported Macros
      3. 2.8.3 Legacy Data Types
      4. 2.8.4 Legacy Intrinsics
    9. 2.9  Galois Field Multiply Instructions
    10. 2.10 Performance Considerations for Migrated Code
      1. 2.10.1 UNROLL Pragma
      2. 2.10.2 Subvector Access
      3. 2.10.3 16x16 and 16x32 Bit Multiplies
      4. 2.10.4 __x128_t Type
      5. 2.10.5 Unsigned Array Offsets
      6. 2.10.6 Streaming Engine and Streaming Address Generator
      7. 2.10.7 Additional Optimization Guidance
  4. 3Host Emulation
  5. 4Revision History
    1.     29
    2.     30

16x16 and 16x32 Bit Multiplies

C7000 does not support 16-bit x 16-bit multiplication that accesses the upper 16 bits of a source word (MPYH, MPYHL, etc.). Such access operations are emulated, which may use a right shift. Note that the access and the multiply may be vectorized by the compiler.

C7000 performs 16-bit x 32-bit multiplication (MPYHI, MPYLI, etc.) using the C6MPYHIR and C6MPYLIR instructions. There are no vector forms of these instructions, so using these instructions in a loop may limit or eliminate vectorization by the compiler.

Old text: C7000 does not support 16-bit x 16-bit multiplication that accesses the upper 16 bits of a source word (MPYH, MPYHL, etc.). Such operations are emulated using a right shift before the multiply. Similarly, 16-bit x 32-bit multiplies are not supported (MPYHI, MPYLI, etc.). Such operations are emulated with sign extensions before the multiply operations.