Patchwork [i386] : Use GET_MODE_SIZE to determine size of XFmode operand

login
register
mail settings
Submitter Uros Bizjak
Date June 24, 2010, 6:31 p.m.
Message ID <1277404297.6220.19.camel@localhost>
Download mbox | patch
Permalink /patch/56815/
State New
Headers show

Comments

Uros Bizjak - June 24, 2010, 6:31 p.m.
Hello!

For the record, the size of XFmode operand changes according to
TARGET_128BIT_LONG_DOUBLE flag, so we can't just use (const_int -16)
here.

2010-06-24  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386 (XFmode push splitter): Use GET_MODE_SIZE to
	determine size of XFmode operand.
	(XFmode extended SFmode push splitter): Ditto.
	(XFmode extended SFmode push splitter): Ditto.

Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu
{,-m32}, committed to mainline SVN.

Uros.

Patch

Index: i386.md
===================================================================
--- i386.md	(revision 161308)
+++ i386.md	(working copy)
@@ -2683,7 +2683,7 @@ 
   "reload_completed"
   [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2)))
    (set (mem:XF (reg:P SP_REG)) (match_dup 1))]
-  "operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);")
+  "operands[2] = GEN_INT (-GET_MODE_SIZE (XFmode));")
 
 (define_split
   [(set (match_operand:XF 0 "push_operand" "")
@@ -4125,7 +4125,7 @@ 
   ""
   [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2)))
    (set (mem:XF (reg:P SP_REG)) (float_extend:XF (match_dup 1)))]
-  "operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);")
+  "operands[2] = GEN_INT (-GET_MODE_SIZE (XFmode));")
 
 (define_split
   [(set (match_operand:XF 0 "push_operand" "")
@@ -4133,7 +4133,7 @@ 
   ""
   [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2)))
    (set (mem:DF (reg:P SP_REG)) (float_extend:XF (match_dup 1)))]
-  "operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);")
+  "operands[2] = GEN_INT (-GET_MODE_SIZE (XFmode));")
 
 (define_expand "extendsfdf2"
   [(set (match_operand:DF 0 "nonimmediate_operand" "")