Commit f89d6e77 by Georg-Johann Lay Committed by Georg-Johann Lay

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
parent 58a9e3c4
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> 2011-10-28 Julian Brown <julian@codesourcery.com>
PR rtl-optimization/47918 PR rtl-optimization/47918
...@@ -4288,15 +4288,41 @@ ...@@ -4288,15 +4288,41 @@
;; Parity ;; Parity
;; Postpone expansion of 16-bit parity to libgcc call until after combine for
;; better 8-bit parity recognition.
(define_expand "parityhi2" (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) [(set (reg:HI 24)
(match_operand:HI 1 "register_operand" "")) (match_dup 1))
(set (reg:HI 24) (set (reg:HI 24)
(parity:HI (reg:HI 24))) (parity:HI (reg:HI 24)))
(set (match_operand:HI 0 "register_operand" "") (set (match_dup 0)
(reg:HI 24))] (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" (define_expand "paritysi2"
[(set (reg:SI 22) [(set (reg:SI 22)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment