m68k/regclass/regmove fun
John Vickers
jvickers@e-14.com
Wed Mar 31 18:59:00 GMT 1999
Another couple of fp tweaks I tried on 68k were:
- Allowing !*r as a source operand for all DF & XF
operations in the (moto) fpu. I think we'll still
get DF & XF (!) operands in a/d regs, e.g. because the
ABI might require DF to be returned in d0:d1. By allowing
!*r as a source operand, we can lose the move from the stack
to the Fp reg - the pop can be folded into the operation.
Not sure if this would have helped daxpy though.
- Allowing DF/XF constants which can be *exactly* represented
in single precision as immediate operands, in single precision,
rather than outputing them into the constant pool as double
or extended values. Had some tweaks to this to make the right
choices on 68881/68882, which have constant roms.
- Adding combiner patterns for operations which extend their
operands. E.g. 68040 can add an "rmf" SFmode operand
into a DFmode reg, with a DFmode result.
John.
Jeffrey A Law wrote:
>
[...]
>
> * m68k.md (movdf): Hide GPR sources & destinations from regclass.
>
> Index: m68k.md
> ===================================================================
> RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/m68k/m68k.md,v
> retrieving revision 1.26
> diff -c -3 -p -r1.26 m68k.md
> *** m68k.md 1999/01/27 01:43:08 1.26
> --- m68k.md 1999/03/29 10:17:04
> ***************
> *** 1147,1154 ****
> "")
>
> (define_insn ""
> ! [(set (match_operand:DF 0 "general_operand" "=rm,rf,rf,&rof<>,y,rm,x,!x,!rm")
> ! (match_operand:DF 1 "general_operand" "rf,m,0,rofE<>,rmE,y,xH,rm,x"))]
> ; [(set (match_operand:DF 0 "general_operand" "=rm,&rf,&rof<>")
> ; (match_operand:DF 1 "general_operand" "rf,m,rofF<>"))]
> "!TARGET_5200"
> --- 1147,1156 ----
> "")
>
> (define_insn ""
> ! [(set (match_operand:DF 0 "general_operand"
> ! "=*rm,*rf,*rf,&*rof<>,y,*rm,x,!x,!*rm")
> ! (match_operand:DF 1 "general_operand"
> ! "*rf,m,0,*rofE<>,*rmE,y,xH,*rm,x"))]
> ; [(set (match_operand:DF 0 "general_operand" "=rm,&rf,&rof<>")
> ; (match_operand:DF 1 "general_operand" "rf,m,rofF<>"))]
> "!TARGET_5200"
More information about the Gcc-patches
mailing list