我正在尝试优化 F28377D 上的一些 CLA 代码、使用技术参考手册(spruhm8e)作为 CLA 指令集和流水线的指南。 我发现在哪里以及何时读取 MSTF 寄存器中的条件标志并将其更新为不明确。
TRM 表示 CLA 条件分支在 CLA 流水线的 D2阶段读取 MSTF 寄存器的条件标志(5.5.1美元、P629)、并且能够修改条件标志的最后一条指令是之前的4个周期(示例5-1、p631)。 手册中没有任何一个明确说明对条件标志进行流水线级修改的地方。 您能否验证对于修改条件标志的所有指令、修改都发生在 CLA 流水线的 EXE 阶段?
有几个条件执行的 CLA 指令:"MMOV32 MRA、mem32{、CNDF}"、 "MMOV32 MRA、MRb{、 CNDF}"、 "MNEGF32 MRA、MRb{、CNDF}"、 "MSWAPF MRA、 MRB{、CNDF}"。 TRM 不明确说明在 CLA 流水线的哪个阶段读取条件标志。 您能否验证这些指令来评估 CLA 流水线 D2级中的条件标志?
无论条件否定的执行如何、"MNEGF32 MRa、MRb{、CNDF}"都将更新条件标志、因为如果条件不为真、则指令本质上是"MMOV32 MRa、MRb"。 我的理解是否正确?
"MMOV32 MRA、mem32{、CNDF}"和"MMOV32 MRA、MRb{、CNDF}"是有条件执行的指令、用于修改条件标志。 如果条件不为真、您能否确认条件标志未更新?