ZHCUA98E january 2018 – march 2023 TDA4VM , TDA4VM-Q1
在 c6x.h 中定义的 C6000 内在函数名称与任何 C7x 内在函数名称并不冲突。因此,同时包含迁移头文件 c6x_migration.h
以及 c7x.h
不会导致出现问题。每个 C6000 内在函数都映射到单个 C7000 指令或一组执行或模拟相同行为的 C7000 指令。
c7x.h
中搜索该指令的 C7000 C 习语。c7x.h
中将提供 C7000 C 习语示例。例如,在 c6x_migration.h
中,声明了 _dadd
内在函数,并且在声明上方的注释中指示了映射的 C7000 指令 VADDW
:
/* VADDW */
long long __BUILTIN _dadd(long long, long long);
在 c7x.h
中,显示了相同的指令及其支持的 C 习语,无论是 C 内在函数还是运算符:
VADDW
int = int + int;
int2 = int2 + int2;
int4 = int4 + int4;
int8 = int8 + int8;
int16 = int16 + int16;
cint = cint + cint;
cint2 = cint2 + cint2;
cint4 = cint4 + cint4;
cint8 = cint8 + cint8;
uint = uint + uint;
uint2 = uint2 + uint2;
uint4 = uint4 + uint4;
uint8 = uint8 + uint8;
uint16 = uint16 + uint16;
再举一例,声明了 _unpkbu4
内在函数,但没有与之对应的单个 C7000 指令。因此,c7x.h
显示的 C7000 C 习语如下所示:
/*---------------------------------------------------------------------------*/
/* _unpkbu4 使用 VUNPKLUB 和 VUNPKHUB 解包 */
/* 参数的低和高 2 个字节,然后构造结果。等效 C7X */
/* 代码段如下所示: */
/* */
/* ushort4 _unpkbu4(uchar4 src) */
/* { */
/* ushort4 dst; */
/* dst.lo = __unpack_low(src); */
/* dst.hi = __unpack_high(src); */
/* return dst; */
/* } */
/*---------------------------------------------------------------------------*/
long long __BUILTIN _unpkbu4(unsigned)
C7000 编译器工具不支持以下已弃用的 C6000 内在函数。请改用 long long
变体:
以下对齐的内存访问内在函数不会对齐输入地址: