Optimization 用于64位输出的Ti c66x乘法内部函数

Optimization 用于64位输出的Ti c66x乘法内部函数,optimization,signal-processing,texas-instruments,Optimization,Signal Processing,Texas Instruments,我正在尝试使用DSP c66x内部函数进行32x32乘法 我有这样的价值观 int32_t beta[4] ={185931936,84529224,-144944792,-175891288}; int32_t alfa[4] ={28505,24851,11653,13268}; CPP代码: int64_t mult =0; for(int i=0;i<4;i++){ mult += beta[i] * alfa[i]; } 我计划使用上述说明,

我正在尝试使用DSP c66x内部函数进行32x32乘法

我有这样的价值观

int32_t beta[4] ={185931936,84529224,-144944792,-175891288};
int32_t alfa[4] ={28505,24851,11653,13268};
CPP代码:

    int64_t mult =0;
    for(int i=0;i<4;i++){
     mult += beta[i] * alfa[i];
    }

我计划使用上述说明,但问题是,我没有找到任何指令可以给出2x64位的结果,而不是4x32位的结果。由于上面的指令,我得到了错误的结果。有人能告诉我,DSP c66x是否还有其他指令可以将两个32位值相乘,得到64位的结果?您要找的是_mpy32ll。试试这个:

mult += _mpy32ll(beta[i], alfa[i]);

那么我不能一次做4个数据的乘法:(.我必须按照C类型的循环进行乘法。没有指令可以在一个周期内使用64位结果进行多个32x32乘法。但是,CPU有两个乘法器,a端和B端,因此可以同时进行两个乘法。抱歉,CPU只能这样做。
mult += _mpy32ll(beta[i], alfa[i]);