Georg-Johann Lay writes: > This patch contains some unrelated tweaks > > - Supplying no-ldregs variant for andqi3, iorqi3 where a const_int mask > affects > only 1 bit > > - Some patterns that match situations with zero_extend that can be performed > with less instructions / register pressure.
>From my (admittedly limited) attempts at code size benchmarking, this one will help a lot I think, considering ints are used everywhere and they end up always taking 2 regs, even when one would do. Do you have any numbers on the code size improvement this provides? Regards Senthil > > - comparing HI against -1 > > Ok for trunk? > > Johann > > > gcc/ > Minor tweaks for QImode. > > * config/avr/predicates.md (const_m255_to_m1_operand): New. > * config/avr/constraints.md (Cn8, Ca1, Co1, Yx2): New constraints. > * config/avr/avr.md (add<mode>3) <ALL1>: Make "r,0,r" more > expensive. > (*cmphi.zero-extend.0, *cmphi.zero-extend.1) > (*usum_widenqihi3, *udiff_widenqihi3) > (*addhi3_zero_extend.const): New combiner insns. > (andqi3, iorqi3): Provide "l" (NO_LD_REGS) alternative if > just 1 bit is affected. > * config/avr/avr.c (avr_out_bitop) <QImode>: Don't access xop[3]. > (avr_out_compare) [EQ,NE]: Tweak comparing d-regs against -1.