From 8002331ec5517e4aa946e561f43b578c8fad71b3 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 30 Nov 2006 07:47:24 +0100 Subject: [PATCH] i386.md (movsf_1): Enable pattern for standard 80387 constants before reload when optimizing for size. * 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 when not optimizing for size. (*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float extension of XFmode input operands. From-SVN: r119355 --- gcc/ChangeLog | 17 ++++++++++++++--- gcc/config/i386/i386.md | 19 +++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9db977ed6bd..19e340da30c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2006-11-30 Uros Bizjak + + * 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 when not optimizing for size. + + (*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float + extension of XFmode input operands. + 2006-11-29 Andrew Pinski * config/spu/crt0.c (__dso_handle): Define. @@ -271,7 +282,7 @@ 2006-11-27 Roger Sayle Manuel Lopez-Ibanez - + * c-common.c (constant_fits_type_p): Delete. (unsigned_conversion_warning): Delete. (conversion_warning): Integrate Wconversion warning from @@ -286,7 +297,7 @@ * doc/invoke.texi: Fixed typo. 2006-11-27 Michael Matz - Andreas Krebbel + Andreas Krebbel PR target/29319 * config/s390/predicates.md (larl_operand): Check addend of larl @@ -360,7 +371,7 @@ NOTE_FUNCTION_END. 2006-11-27 Richard Guenther - Zdenek Dvorak + Zdenek Dvorak * target.h (struct gcc_target): Add builtin_vectorized_function target hook. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index f237abe9956..227a1cc2adc 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2305,6 +2305,8 @@ "!(MEM_P (operands[0]) && MEM_P (operands[1])) && (reload_in_progress || reload_completed || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!TARGET_SSE_MATH && optimize_size + && standard_80387_constant_p (operands[1])) || GET_CODE (operands[1]) != CONST_DOUBLE || memory_operand (operands[0], SFmode))" { @@ -2473,6 +2475,8 @@ && ((optimize_size || !TARGET_INTEGER_DFMODE_MOVES) && !TARGET_64BIT) && (reload_in_progress || reload_completed || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!(TARGET_SSE2 && TARGET_SSE_MATH) && optimize_size + && standard_80387_constant_p (operands[1])) || GET_CODE (operands[1]) != CONST_DOUBLE || memory_operand (operands[0], DFmode))" { @@ -2593,6 +2597,8 @@ && ((!optimize_size && TARGET_INTEGER_DFMODE_MOVES) || TARGET_64BIT) && (reload_in_progress || reload_completed || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE) + || (!(TARGET_SSE2 && TARGET_SSE_MATH) && optimize_size + && standard_80387_constant_p (operands[1])) || GET_CODE (operands[1]) != CONST_DOUBLE || memory_operand (operands[0], DFmode))" { @@ -2804,7 +2810,7 @@ "optimize_size && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) && (reload_in_progress || reload_completed - || standard_80387_constant_p (operands[1]) + || (optimize_size && standard_80387_constant_p (operands[1])) || GET_CODE (operands[1]) != CONST_DOUBLE || memory_operand (operands[0], XFmode))" { @@ -2839,7 +2845,7 @@ "!optimize_size && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM) && (reload_in_progress || reload_completed - || standard_80387_constant_p (operands[1]) + || (optimize_size && standard_80387_constant_p (operands[1])) || GET_CODE (operands[1]) != CONST_DOUBLE || memory_operand (operands[0], XFmode))" { @@ -15480,7 +15486,8 @@ (define_insn "*fop_xf_4_i387" [(set (match_operand:XF 0 "register_operand" "=f,f") (match_operator:XF 3 "binary_fp_operator" - [(float_extend:XF (match_operand 1 "nonimmediate_operand" "fm,0")) + [(float_extend:XF + (match_operand:X87MODEF12 1 "nonimmediate_operand" "fm,0")) (match_operand:XF 2 "register_operand" "0,f")]))] "TARGET_80387" "* return output_387_binary_op (insn, operands);" @@ -15498,7 +15505,7 @@ (match_operator:XF 3 "binary_fp_operator" [(match_operand:XF 1 "register_operand" "0,f") (float_extend:XF - (match_operand 2 "nonimmediate_operand" "fm,0"))]))] + (match_operand:X87MODEF12 2 "nonimmediate_operand" "fm,0"))]))] "TARGET_80387" "* return output_387_binary_op (insn, operands);" [(set (attr "type") @@ -15514,9 +15521,9 @@ [(set (match_operand:XF 0 "register_operand" "=f,f") (match_operator:XF 3 "binary_fp_operator" [(float_extend:XF - (match_operand 1 "register_operand" "0,f")) + (match_operand:X87MODEF12 1 "register_operand" "0,f")) (float_extend:XF - (match_operand 2 "nonimmediate_operand" "fm,0"))]))] + (match_operand:X87MODEF12 2 "nonimmediate_operand" "fm,0"))]))] "TARGET_80387" "* return output_387_binary_op (insn, operands);" [(set (attr "type")