predicates.md (zero_extend_operand): New predicate.
* config/sh/predicates.md (zero_extend_operand): New predicate. * config/sh/sh.md (zero_extendhisi2): Simplify by using new zero_extend_operand predicate. (zero_extendqisi2): Likewise. From-SVN: r189269
This commit is contained in:
parent
7f426c93a7
commit
33344a62c4
@ -1,3 +1,10 @@
|
||||
2012-07-04 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
* config/sh/predicates.md (zero_extend_operand): New predicate.
|
||||
* config/sh/sh.md (zero_extendhisi2): Simplify by using new
|
||||
zero_extend_operand predicate.
|
||||
(zero_extendqisi2): Likewise.
|
||||
|
||||
2012-07-04 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR middle-end/53321
|
||||
|
@ -368,6 +368,13 @@
|
||||
: nonimmediate_operand) (op, mode);
|
||||
})
|
||||
|
||||
;; Returns 1 if the operand can be used in a zero_extend.
|
||||
(define_predicate "zero_extend_operand"
|
||||
(ior (and (match_test "TARGET_SHMEDIA")
|
||||
(match_operand 0 "general_extend_operand"))
|
||||
(and (match_test "! TARGET_SHMEDIA")
|
||||
(match_operand 0 "arith_reg_operand"))))
|
||||
|
||||
;; Returns 1 if OP can be source of a simple move operation. Same as
|
||||
;; general_operand, but a LABEL_REF is valid, PRE_DEC is invalid as
|
||||
;; are subregs of system registers.
|
||||
|
@ -4725,13 +4725,8 @@ label:
|
||||
(const_string "ignore")))])
|
||||
|
||||
(define_expand "zero_extendhisi2"
|
||||
[(set (match_operand:SI 0 "arith_reg_operand" "")
|
||||
(zero_extend:SI (match_operand:HI 1 "general_extend_operand" "")))]
|
||||
""
|
||||
{
|
||||
if (! TARGET_SHMEDIA && ! arith_reg_operand (operands[1], HImode))
|
||||
operands[1] = copy_to_mode_reg (HImode, operands[1]);
|
||||
})
|
||||
[(set (match_operand:SI 0 "arith_reg_dest" "")
|
||||
(zero_extend:SI (match_operand:HI 1 "zero_extend_operand" "")))])
|
||||
|
||||
(define_insn "*zero_extendhisi2_compact"
|
||||
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
|
||||
@ -4770,13 +4765,8 @@ label:
|
||||
})
|
||||
|
||||
(define_expand "zero_extendqisi2"
|
||||
[(set (match_operand:SI 0 "arith_reg_operand" "")
|
||||
(zero_extend:SI (match_operand:QI 1 "general_extend_operand" "")))]
|
||||
""
|
||||
{
|
||||
if (! TARGET_SHMEDIA && ! arith_reg_operand (operands[1], QImode))
|
||||
operands[1] = copy_to_mode_reg (QImode, operands[1]);
|
||||
})
|
||||
[(set (match_operand:SI 0 "arith_reg_dest" "")
|
||||
(zero_extend:SI (match_operand:QI 1 "zero_extend_operand" "")))])
|
||||
|
||||
(define_insn "*zero_extendqisi2_compact"
|
||||
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
|
||||
|
Loading…
x
Reference in New Issue
Block a user