re PR target/36467 ([avr] Missed optimization with pointer arithmetic and mul*)
authorGeorg-Johann Lay <avr@gjlay.de>
Wed, 20 Jul 2011 17:23:28 +0000 (17:23 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Wed, 20 Jul 2011 17:23:28 +0000 (17:23 +0000)
commit8c352fa8edadc62089e29ade8fd59e0a281645fa
treecc1a6877a75e72f56f45065794005876f10ea76d
parentbe31603aad66140822c345a93f5e1ae3d4fa9300
re PR target/36467 ([avr] Missed optimization with pointer arithmetic and mul*)

PR target/36467
PR target/49687
* config/avr/avr.md (mulhi3): Use register_or_s9_operand for
operand2 and expand appropriately if there is a CONST_INT in
operand2.
(usmulqihi3): New insn.
(*sumulqihi3): New insn.
(*osmulqihi3): New insn.
(*oumulqihi3): New insn.
(*muluqihi3.uconst): New insn_and_split.
(*muluqihi3.sconst): New insn_and_split.
(*mulsqihi3.sconst): New insn_and_split.
(*mulsqihi3.uconst): New insn_and_split.
(*mulsqihi3.oconst): New insn_and_split.
(*ashifthi3.signx.const): New insn_and_split.
(*ashifthi3.signx.const7): New insn_and_split.
(*ashifthi3.zerox.const): New insn_and_split.
(mulsqihi3): New insn.
(muluqihi3): New insn.
(muloqihi3): New insn.
* config/avr/predicates.md (const_2_to_7_operand): New.
(const_2_to_6_operand): New.
(u8_operand): New.
(s8_operand): New.
(o8_operand): New.
(s9_operand): New.
(register_or_s9_operand): New.

From-SVN: r176527
gcc/ChangeLog
gcc/config/avr/avr.c
gcc/config/avr/avr.md
gcc/config/avr/predicates.md