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:
parent
c21510a9f1
commit
98d2c0ad6e
|
@ -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
|
||||
|
|
|
@ -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))))])
|
||||
|
||||
|
|
Loading…
Reference in New Issue