Hello,
I would like to implement a compiler fix for a SPARC-cpu variant
that does the following:
 After each "fdivs" (SPARC single-float division) save the destination
 FPU register to a stack memory location.

The sparc.md definition of fdivs is this one:

(define_insn "divsf3"
  [(set (match_operand:SF 0 "register_operand" "=f")
        (div:SF (match_operand:SF 1 "register_operand" "f")
                (match_operand:SF 2 "register_operand" "f")))]
  "TARGET_FPU"
  "fdivs\t%1, %2, %0"
  [(set_attr "type" "fpdivs")])

What is the best way to accomplish that exactly after
the "fdivs\t%1, %2, %0" a "st %0, [<memory>]" is issued? where
<memory> is a stack location that is allocated for each "divsf3"
insn?
Is something similar for other architectures?
It seems I cannot use the sparc_reorg pass hook because the
stackframe might be > 4096 and a new register has to be
allocated before for the store address... Is there
some hook before the reload pass that I could use?
-- Thanks Konrad


Reply via email to