re PR target/49313 (Inefficient libgcc implementations for avr)
PR target/49313 * config/avr/avr.md (parityhi2): Expand allowing pseudos. (*parityhi2): New pre-reload insn-and-split to map 16-bit parity to the libgcc insn. (*parityqihi2): Same for 8-bit parity. From-SVN: r180620
This commit is contained in:
parent
58a9e3c406
commit
f89d6e77d7
2 changed files with 39 additions and 5 deletions
|
@ -1,3 +1,11 @@
|
|||
2011-10-28 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
PR target/49313
|
||||
* config/avr/avr.md (parityhi2): Expand allowing pseudos.
|
||||
(*parityhi2): New pre-reload insn-and-split to map 16-bit parity
|
||||
to the libgcc insn.
|
||||
(*parityqihi2): Same for 8-bit parity.
|
||||
|
||||
2011-10-28 Julian Brown <julian@codesourcery.com>
|
||||
|
||||
PR rtl-optimization/47918
|
||||
|
|
|
@ -4288,15 +4288,41 @@
|
|||
|
||||
;; Parity
|
||||
|
||||
;; Postpone expansion of 16-bit parity to libgcc call until after combine for
|
||||
;; better 8-bit parity recognition.
|
||||
|
||||
(define_expand "parityhi2"
|
||||
[(parallel [(set (match_operand:HI 0 "register_operand" "")
|
||||
(parity:HI (match_operand:HI 1 "register_operand" "")))
|
||||
(clobber (reg:HI 24))])])
|
||||
|
||||
(define_insn_and_split "*parityhi2"
|
||||
[(set (match_operand:HI 0 "register_operand" "=r")
|
||||
(parity:HI (match_operand:HI 1 "register_operand" "r")))
|
||||
(clobber (reg:HI 24))]
|
||||
"!reload_completed"
|
||||
{ gcc_unreachable(); }
|
||||
"&& 1"
|
||||
[(set (reg:HI 24)
|
||||
(match_operand:HI 1 "register_operand" ""))
|
||||
(match_dup 1))
|
||||
(set (reg:HI 24)
|
||||
(parity:HI (reg:HI 24)))
|
||||
(set (match_operand:HI 0 "register_operand" "")
|
||||
(reg:HI 24))]
|
||||
""
|
||||
"")
|
||||
(set (match_dup 0)
|
||||
(reg:HI 24))])
|
||||
|
||||
(define_insn_and_split "*parityqihi2"
|
||||
[(set (match_operand:HI 0 "register_operand" "=r")
|
||||
(parity:HI (match_operand:QI 1 "register_operand" "r")))
|
||||
(clobber (reg:HI 24))]
|
||||
"!reload_completed"
|
||||
{ gcc_unreachable(); }
|
||||
"&& 1"
|
||||
[(set (reg:QI 24)
|
||||
(match_dup 1))
|
||||
(set (reg:HI 24)
|
||||
(zero_extend:HI (parity:QI (reg:QI 24))))
|
||||
(set (match_dup 0)
|
||||
(reg:HI 24))])
|
||||
|
||||
(define_expand "paritysi2"
|
||||
[(set (reg:SI 22)
|
||||
|
|
Loading…
Add table
Reference in a new issue