Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Denis Chertykov
2011/6/21 Georg-Johann Lay : > Denis Chertykov schrieb: > >> I'm vote for 'C'. >> >> Denis. > > So it's C :-) > > Johann > >        PR target/33049 >        * config/avr/avr.md (extzv): New expander. >        (*extzv): New insn. >        (*extzv.qihi1, *extzv.qihi2): New insn-and-split. >        *

Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Georg-Johann Lay
Denis Chertykov schrieb: > I'm vote for 'C'. > > Denis. So it's C :-) Johann PR target/33049 * config/avr/avr.md (extzv): New expander. (*extzv): New insn. (*extzv.qihi1, *extzv.qihi2): New insn-and-split. * config/avr/constraints.md (C04): New constrain

Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Denis Chertykov
2011/6/21 Georg-Johann Lay : > Denis Chertykov schrieb: >> 2011/6/21 Georg-Johann Lay: > >>> Ok.  d_register_operand or satisfies_constraint_d would do.  But I >>> preferred to introduce a new constraint for 4 and avoid splitting >>> *extzv altogether to keep it simple.  Complexity of splitting is

Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Georg-Johann Lay
Denis Chertykov schrieb: > 2011/6/21 Georg-Johann Lay: >> Ok. d_register_operand or satisfies_constraint_d would do. But I >> preferred to introduce a new constraint for 4 and avoid splitting >> *extzv altogether to keep it simple. Complexity of splitting is not a >> real advantage over writing

Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Denis Chertykov
2011/6/21 Georg-Johann Lay : > Denis Chertykov schrieb: >> 2011/6/20 Georg-Johann Lay : >>> This is an optimization patch that implements extzv for 1-bit extracts. >> >> >>> +(define_insn_and_split "*extzv" >>> +  [(set (match_operand:QI 0 "register_operand"                     >>> "=*d,*d,*d,r") >

Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Georg-Johann Lay
Denis Chertykov schrieb: > 2011/6/20 Georg-Johann Lay : >> This is an optimization patch that implements extzv for 1-bit extracts. > > >> +(define_insn_and_split "*extzv" >> + [(set (match_operand:QI 0 "register_operand" >> "=*d,*d,*d,r") >> +(zero_extract:QI (match_o

Re: [Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-21 Thread Denis Chertykov
2011/6/20 Georg-Johann Lay : > This is an optimization patch that implements extzv for 1-bit extracts. > +(define_insn_and_split "*extzv" > + [(set (match_operand:QI 0 "register_operand" > "=*d,*d,*d,r") > +(zero_extract:QI (match_operand:QI 1 "register_operand"

[Patch, AVR]: Fix PR33049 (implement extzv)

2011-06-20 Thread Georg-Johann Lay
This is an optimization patch that implements extzv for 1-bit extracts. The nice thing is that AVR can do this easily with a BLD/CLR/BST sequence, without putting pressure on d-regs and without the requirement of source being in the same register as destination. extzv can also be seen in conjunct