Re: Float commands for 64bit data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Haley writes:
 > 
 > The easiest way to do that is simply to disable the patterns that
 > generate the floating-point operations.  I think the pattern is this
 > one:
 > 
 > (define_insn "*movdi_internal64"
 >   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,r,*f,*f,m,r,*h,*h")
 > 	(match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,f,m,f,*h,r,0"))]
 >   "TARGET_POWERPC64
 >    && (gpc_reg_operand (operands[0], DImode)
 >        || gpc_reg_operand (operands[1], DImode))"
 >   "@
 >    mr %0,%1
 >    ld%U1%X1 %0,%1
 >    std%U0%X0 %1,%0
 >    li %0,%1
 >    lis %0,%v1
 >    #
 >    {cal|la} %0,%a1
 >    fmr %0,%1
 >    lfd%U1%X1 %0,%1
 >    stfd%U0%X0 %1,%0
 >    mf%1 %0
 >    mt%0 %1
 >    {cror 0,0,0|nop}"
 >   [(set_attr "type" "*,load,store,*,*,*,*,fp,fpload,fpstore,mfjmpr,mtjmpr,*")
 >    (set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4")])
 > 
 > You'd want to remove the operations with "f" in their constraint
 > pattern: that is, no. 8 and 9.

8, 9, and 10.

 > An alternative idea would be to alter
 > the cost of the opration so that the compiler never chooses to put a
 > float in an int register.
 > 
 > Andrew.

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux