aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2006-11-30 07:47:24 +0100
committerUros Bizjak <uros@gcc.gnu.org>2006-11-30 07:47:24 +0100
commit8002331ec5517e4aa946e561f43b578c8fad71b3 (patch)
treec5eaa9e89d054ecfef70600b72abd4a828424f5f /gcc/config
parent8fdb55720f08f1aa231b06d37106e3c9e0793514 (diff)
downloadgcc-8002331ec5517e4aa946e561f43b578c8fad71b3.zip
gcc-8002331ec5517e4aa946e561f43b578c8fad71b3.tar.gz
gcc-8002331ec5517e4aa946e561f43b578c8fad71b3.tar.bz2
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
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.md19
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index f237abe..227a1cc 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")