开发者

Patching gcc, Adding memory write to a sparc fsqrts insn

I'd like to patch gcc's sparc machine description so that the destination register of a FPU sqareroot operation fsqrts is stored into memory after each fsqrts.

like this:

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 in开发者_JS百科sn

The sparc.md portion that defines the fsqrts pattern is:

(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")])

i thought I could add the "st %f4, -4[%fp]" there. But now my question:

  • Where/when/how can I allocate the stackframe slot to save the destination fpu reg in (the offset to %fp).

I'm not that familiar with rtl representation and the stages of compilation. So any help would be apreciated.

Maybe another architecture has a similar construct already that I could study and use for my purpose. If somebody can point me to such machine description part ...


Again, that's a question for gcc@gcc.gnu.org

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜