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

Reply via email to