This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F28075:提高浮点限制代码性能

Guru**** 2931100 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/952194/compiler-tms320f28075-float-limit-code-performance-improve

器件型号:TMS320F28075

工具/软件:TI C/C++编译器

您好!

在 FPU 模式下、是否有任何方法可以提高以下代码的性能?

静态内联 float32_t

MATH_SAT (const float32_t in、const float32_t max、const float32_t min)

   float32_t out = in;

//   if (in < min)

//   {

//       out = min;

//   }

//   否则 if (in > max)

//   {

//       out =最大值;

//   }

   OUT =(OUT >最大值)? 最大值:OUT;

   OUT =(OUT < min)? 最小值:输出;

   退货(OUT);

}// MATH_SAT ()函数结束

客户有很多这样的功能。 它需要大约50个周期。

是否有任何方法可以减少到少于20个周期?

非常感谢。

BR、Jordan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    约旦

    您是否已在编译器用户指南中查看过标题为浮点单元(FPU)内在函数的章节?

    有一些内在函数可让您访问指令、例如__fmax()__fmin()__fsat()

    在您将 MATH_SAT (IN、max、min)替换为_fsat (in、max、min)的情况下,根据文档 SPRU514U 只能生成2条指令:

    MAXF32 dst、src2
    MINF32 dst、src1 

    此致、

    皮埃尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    对于 CLA、我们是否有_fsat ()?

    在用户指南中、没有

    非常感谢。

    BR、Jordan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    约旦

    CLA 具有 MMAXF32 MINF32指令、您可以使用这些指令。

    如果您使用 C 语言对 CLA 进行编程、我相信您可以使用专用内在函数__mmaxf32()__mminf32(),以便编译器发出这些指令。

    此致、

    皮埃尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、有 MMAXF32和 MINF32。

    我们可以通过 CLA 汇编语言构建库吗? 如果是、如何操作?

    非常感谢。

    BR、Jordan