我想修补gcc的sparc机器描述,以便
FPU sqareroot操作fsqrts的目标寄存器
在每个fsqrts之后存储到内存中。

像这样:

fsqrts %f2,%f4
st %f4, -4[%fp]  <= add this after every fsqrts where -4[%fp] is
                            a slot allocated on the stack for each fsqrts insn


定义fsqrts模式的sparc.md部分为:

(define_insn "sqrtsf2"
 [(set (match_operand:SF 0 "register_operand" "=f")
       (sqrt:SF (match_operand:SF 1 "register_operand" "f")))]
 "TARGET_FPU"
 "fsqrts\t%1, %0"
 [(set_attr "type" "fpsqrts")])


我以为可以在其中添加“ st %f4, -4[%fp]”。但现在
我的问题:


我在哪里/何时/如何分配堆栈框架插槽以保存
目标fpu reg输入(%fp的偏移量)。


我不太熟悉rtl表示形式和阶段
的编译。因此,任何帮助将不胜感激。

也许其他架构已经有类似的构造
我可以为自己的目的学习和使用。如果有人
可以指出我这样的机器描述部分...

最佳答案

同样,这是[email protected]的问题

关于gcc - 修补gcc,添加内存写入sparc fsqrts insn,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2177773/

10-12 14:49