Andreas Krebel: > While trying to get rid of the Y constraint in the setmem patterns I > noticed that for these patterns it isn't even a problem since these > always only use the constraint with a Pmode match_operand. But while > being at it I've tried to fold some of the patterns a bit.
Hmm, I'm wondering whether it's worth it to use a subst pattern that is only ever used in one single instance? (Specifically I'm wondering about the 31z subst. The and subst is used multiple times.) > +; Turn the DImode in the 31 bit pattern into TImode to enforce > +; register pair usage even with -mzarch. > +; The subreg offset is adjusted accordingly. > +(define_subst "setmem_31z_subst" > + [(clobber (match_operand:DI 0 "register_operand" "")) > + (set (mem:BLK (subreg:SI (match_operand:DI 3 "register_operand" "") > 0)) > + (unspec:BLK [(match_operand:SI 2 > "shift_count_or_setmem_operand" "") > + (subreg:SI (match_operand:DI 4 "register_operand" "") > + 0)] Is this right? Shouldn't it be subreg offset 4 originally? > + UNSPEC_REPLICATE_BYTE)) > + (use (match_operand:DI 1 "register_operand" "")) > + (clobber (reg:CC CC_REGNUM))] > +"" > + [(clobber (match_operand:TI 0 "register_operand" "")) > + (set (mem:BLK (subreg:SI (match_operand:TI 3 "register_operand" "") > 4)) > + (unspec:BLK [(match_operand:SI 2 > "shift_count_or_setmem_operand" "") > + (subreg:SI (match_operand:TI 4 "register_operand" "") > + 12)] > + UNSPEC_REPLICATE_BYTE)) > + (use (match_operand:TI 1 "register_operand" "")) > + (clobber (reg:CC CC_REGNUM))]) Bye, Ulrich -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain ulrich.weig...@de.ibm.com