https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53513

Oleg Endo <olegendo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #33745|0                           |1
        is obsolete|                            |

--- Comment #37 from Oleg Endo <olegendo at gcc dot gnu.org> ---
Created attachment 33751
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33751&action=edit
Use SImode for FPSCR, add __builtin_sh_get_fpscr, __builtin_sh_set_fpscr

I'm now testing this patch.  It removes The PSImode for FPSCR completely and
splits the fpu_switch insn into two separate lds_fpscr and sts_fpscr insns. 
This allows relaxing the insn dependencies.  Also now that sts_fpscr becomes a
single-set insn, it can be stuffed into delay slots.
I've also removed the alternatives for FPSCR <-> memory, except the pre-dec and
post-inc ones, which are needed for push and pop insns.  As a consequence, a
user initiated __builtin_sh_get_fpscr () to a memory will always be ferried
though a general register.  There is some room for improvement, but it goes
into the direction of address-mode-selection optimization, which can be done
later.

When doing a __builtin_sh_set_fpscr (value) the compiler will always insert
code to preserve the current FPSCR FR, SZ, PR mode bits.  This always involves
getting the current FPSCR into a general register first and then loading FPSCR
from a general register.  Thus we can omit FPSCR loads from memory for now.

Reply via email to