我想修补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/