i386.md (add->lea splitter): Implement using SWI mode iterator.

* config/i386/i386.md (add->lea splitter): Implement using SWI
	mode iterator.  Change operand 2 predicate to <nonmemory_operand>.
	(add->lea zext splitter): Change operand 2 predicate to
	x86_64_nonmemory_operand.

From-SVN: r176795
This commit is contained in:
Uros Bizjak 2011-07-26 18:04:53 +02:00 committed by Uros Bizjak
parent c21510a9f1
commit 98d2c0ad6e
2 changed files with 14 additions and 24 deletions

View File

@ -1,3 +1,10 @@
2011-07-26 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (add->lea splitter): Implement using SWI
mode iterator. Change operand 2 predicate to <nonmemory_operand>.
(add->lea zext splitter): Change operand 2 predicate to
x86_64_nonmemory_operand.
2011-07-26 Richard Guenther <rguenther@suse.de>
* predict.c (maybe_hot_frequency_p): Make sure a zero entry-block

View File

@ -5805,17 +5805,14 @@
;; Convert add to the lea pattern to avoid flags dependency.
(define_split
[(set (match_operand 0 "register_operand" "")
(plus (match_operand 1 "register_operand" "")
(match_operand 2 "nonmemory_operand" "")))
[(set (match_operand:SWI 0 "register_operand" "")
(plus (match_operand:SWI 1 "register_operand" "")
(match_operand:SWI 2 "<nonmemory_operand>" "")))
(clobber (reg:CC FLAGS_REG))]
"GET_MODE (operands[0]) == GET_MODE (operands[1])
&& (GET_MODE (operands[0]) == GET_MODE (operands[2])
|| GET_MODE (operands[2]) == VOIDmode)
&& reload_completed && ix86_lea_for_add_ok (insn, operands)"
"reload_completed && ix86_lea_for_add_ok (insn, operands)"
[(const_int 0)]
{
enum machine_mode mode = GET_MODE (operands[0]);
enum machine_mode mode = <MODE>mode;
rtx pat;
if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (SImode))
@ -5832,28 +5829,14 @@
DONE;
})
;; Convert add to the lea pattern to avoid flags dependency.
;; ??? This pattern handles immediate operands that do not satisfy immediate
;; operand predicate (TARGET_LEGITIMATE_CONSTANT_P) in the previous pattern.
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(plus:DI (match_operand:DI 1 "register_operand" "")
(match_operand:DI 2 "x86_64_immediate_operand" "")))
(clobber (reg:CC FLAGS_REG))]
"TARGET_64BIT && reload_completed
&& true_regnum (operands[0]) != true_regnum (operands[1])"
[(set (match_dup 0)
(plus:DI (match_dup 1) (match_dup 2)))])
;; Convert add to the lea pattern to avoid flags dependency.
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(zero_extend:DI
(plus:SI (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "nonmemory_operand" ""))))
(match_operand:SI 2 "x86_64_nonmemory_operand" ""))))
(clobber (reg:CC FLAGS_REG))]
"TARGET_64BIT && reload_completed
&& ix86_lea_for_add_ok (insn, operands)"
"TARGET_64BIT && reload_completed && ix86_lea_for_add_ok (insn, operands)"
[(set (match_dup 0)
(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))])