i386.md (define_mode_iterator P): New.
2008-06-03 Kai Tietz <kai.tietz@onevision.com> * config/i386/i386.md (define_mode_iterator P): New. (split): Merged XF and DF rules using P. From-SVN: r136320
This commit is contained in:
parent
8a762fcb17
commit
90b484920a
@ -1,3 +1,8 @@
|
||||
2008-06-03 Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
* config/i386/i386.md (define_mode_iterator P): New.
|
||||
(split): Merged XF and DF rules using P.
|
||||
|
||||
2008-06-03 Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
* config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
|
||||
|
@ -630,6 +630,11 @@
|
||||
|
||||
;; Instruction suffix for REX 64bit operators.
|
||||
(define_mode_attr rex64suffix [(SI "") (DI "{q}")])
|
||||
|
||||
;; This mode iterator allows :P to be used for patterns that operate on
|
||||
;; pointer-sized quantities. Exactly one of the two alternatives will match.
|
||||
(define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
|
||||
|
||||
|
||||
;; Scheduling descriptions
|
||||
|
||||
@ -2735,17 +2740,9 @@
|
||||
(define_split
|
||||
[(set (match_operand:DF 0 "push_operand" "")
|
||||
(match_operand:DF 1 "any_fp_register_operand" ""))]
|
||||
"!TARGET_64BIT && reload_completed"
|
||||
[(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int -8)))
|
||||
(set (mem:DF (reg:SI SP_REG)) (match_dup 1))]
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DF 0 "push_operand" "")
|
||||
(match_operand:DF 1 "any_fp_register_operand" ""))]
|
||||
"TARGET_64BIT && reload_completed"
|
||||
[(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int -8)))
|
||||
(set (mem:DF (reg:DI SP_REG)) (match_dup 1))]
|
||||
"reload_completed"
|
||||
[(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (const_int -8)))
|
||||
(set (mem:DF (reg:P SP_REG)) (match_dup 1))]
|
||||
"")
|
||||
|
||||
(define_split
|
||||
@ -3198,17 +3195,9 @@
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "push_operand" "")
|
||||
(match_operand:XF 1 "any_fp_register_operand" ""))]
|
||||
"!TARGET_64BIT"
|
||||
[(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_dup 2)))
|
||||
(set (mem:XF (reg:SI SP_REG)) (match_dup 1))]
|
||||
"operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "push_operand" "")
|
||||
(match_operand:XF 1 "any_fp_register_operand" ""))]
|
||||
"TARGET_64BIT"
|
||||
[(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (match_dup 2)))
|
||||
(set (mem:XF (reg:DI SP_REG)) (match_dup 1))]
|
||||
""
|
||||
[(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);")
|
||||
|
||||
;; Do not use integer registers when optimizing for size
|
||||
@ -3951,16 +3940,9 @@
|
||||
(define_split
|
||||
[(set (match_operand:DF 0 "push_operand" "")
|
||||
(float_extend:DF (match_operand:SF 1 "fp_register_operand" "")))]
|
||||
"!TARGET_64BIT"
|
||||
[(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int -8)))
|
||||
(set (mem:DF (reg:SI SP_REG)) (float_extend:DF (match_dup 1)))])
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DF 0 "push_operand" "")
|
||||
(float_extend:DF (match_operand:SF 1 "fp_register_operand" "")))]
|
||||
"TARGET_64BIT"
|
||||
[(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int -8)))
|
||||
(set (mem:DF (reg:DI SP_REG)) (float_extend:DF (match_dup 1)))])
|
||||
""
|
||||
[(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (const_int -8)))
|
||||
(set (mem:DF (reg:P SP_REG)) (float_extend:DF (match_dup 1)))])
|
||||
|
||||
(define_insn "*dummy_extendsfxf2"
|
||||
[(set (match_operand:XF 0 "push_operand" "=<")
|
||||
@ -3972,32 +3954,16 @@
|
||||
[(set (match_operand:XF 0 "push_operand" "")
|
||||
(float_extend:XF (match_operand:SF 1 "fp_register_operand" "")))]
|
||||
""
|
||||
[(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_dup 2)))
|
||||
(set (mem:XF (reg:SI SP_REG)) (float_extend:XF (match_dup 1)))]
|
||||
"operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "push_operand" "")
|
||||
(float_extend:XF (match_operand:SF 1 "fp_register_operand" "")))]
|
||||
"TARGET_64BIT"
|
||||
[(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (match_dup 2)))
|
||||
(set (mem:DF (reg:DI SP_REG)) (float_extend:XF (match_dup 1)))]
|
||||
[(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);")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "push_operand" "")
|
||||
(float_extend:XF (match_operand:DF 1 "fp_register_operand" "")))]
|
||||
""
|
||||
[(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_dup 2)))
|
||||
(set (mem:DF (reg:SI SP_REG)) (float_extend:XF (match_dup 1)))]
|
||||
"operands[2] = GEN_INT (TARGET_128BIT_LONG_DOUBLE ? -16 : -12);")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "push_operand" "")
|
||||
(float_extend:XF (match_operand:DF 1 "fp_register_operand" "")))]
|
||||
"TARGET_64BIT"
|
||||
[(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (match_dup 2)))
|
||||
(set (mem:XF (reg:DI SP_REG)) (float_extend:XF (match_dup 1)))]
|
||||
[(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);")
|
||||
|
||||
(define_expand "extendsfdf2"
|
||||
|
Loading…
Reference in New Issue
Block a user