This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Having the patch [1] that fixes float extension of FP constants in the SVN, we can fix the problems with XFmode constants [2] in a better way.
Attached patch disables XFmode move patterns for x87 constants (for !optimize_size), as the splitter, introduced in [1] generates correct x87 instruction even for float_extended constants. This patch also enables size optimizations for DFmode and SFmode constants, where it avoids operators with memory operands, when operand can be loaded by a special instruction. Patch also tightens constraints for float_extended XFmode operators (in order to prevent float_extend:XF (XFreg) ).
fldl 4(%esp)
fld1 <<- x87 constant load
fxch %st(1)
.L2:
fprem
fnstsw %ax
sahf
jp .L2
fstp %st(1)
ret fldl 4(%esp)
fsqrt
fadds .LC0 <<- memory operand (faster, but 6 bytes)
ret fldl 4(%esp)
fsqrt
fld1 <<- 2 bytes
faddp %st, %st(1) <<- 2 bytes, but together a bit
slower than code above
ret fldl2e <<- x87 constant load
fmull 4(%esp)
fld %st(0)
frndint
fsubr %st, %st(1)
fxch %st(1)
f2xm1
fadds .LC1 <<- actually x + 1.0, inherent float
extend from SFmode
fscale
fstp %st(1)
ret fldl 4(%esp)
fptan <<- peephole2 removed fld1
fchs
fdivp %st, %st(1)
ret* config/i386/i386.md (movsf_1): Enable pattern for standard 80387 constants before reload when optimizing for size. (*movdf_nointeger, *movdf_integer): Ditto. (*movxf_nointeger, *movxf_integer): Disable patterns for standard 80387 constants before reload wheb not optimizing for size.
(*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float extension of XFmode input operands.
Patch was bootstrapped on i686-pc-linux-gnu, regression tested for c, c++ and fortran. OK for mainline?
[1] http://gcc.gnu.org/ml/gcc-patches/2006-11/msg01762.html [2] http://gcc.gnu.org/ml/gcc-patches/2006-11/msg00133.html
Attachment:
i386-fpconst.diff
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |