工具/软件:TI C/C++编译器
我想访问C中的I16TOF32指令。int到float类型转换会导致加载到ACC,以执行从16位到32位的符号扩展,移动到浮点寄存器,然后使用I32TOF32转换为float。 下面是C2000 16.9 .2.LTS编译器在完全优化级别的汇编输出片段(它已将循环展开2倍)。
MOVB XAR6,#24
MOVL XAR5,#_b
MOVL XAR4,#_A
SETC SXM
RPTB $C$L2,AR6
;重复块开始
MOV ACC,* XAR4++
MOV32 R0H,附件
MOV ACC,* XAR4++
MOV32 R3H,附件
无操作
无操作
无操作
I32TOF32 R1H,R0H
I32TOF32 R0H,R3H
MOV32 * XAR5++,R1H
MOV32 * XAR5++,R0H
;重复块结束
$C$L2:
对于我的用例而言,编译器生成的代码太慢(每2个输出11个周期,而手动编码流水线汇编则为每2个输出2个周期)。 是否有办法强制编译器发出I16TOF32而不使用内联汇编(因为它关闭了某些/大多数优化),也不需要在汇编中重写我的算法?