> +;; "*ashluqihiqi3.mem"
> +;; "*ashlsqihiqi3.mem"
> +(define_insn_and_split "*ashl<extend_prefix>qihiqi3.mem"
> +  [(set (match_operand:QI 0 "memory_operand" "=m")
> +        (subreg:QI (ashift:HI (any_extend:HI (match_operand:QI 1 
> "register_operand" "r"))
> +                              (match_operand:QI 2 "register_operand" "r"))
> +                   0))]
> +  "!reload_completed"
> +  { gcc_unreachable(); }

Surely this isn't necessary.  Why would you ever be matching a memory output?

> +(define_insn_and_split "*ashlhiqi3"
> +  [(set (match_operand:QI 0 "nonimmediate_operand" "=r")
> +        (subreg:QI (ashift:HI (match_operand:HI 1 "register_operand" "0")
> +                              (match_operand:QI 2 "register_operand" "r")) 
> 0))]
> +  "!reload_completed"
> +  { gcc_unreachable(); }

Likewise.

But the first pattern and the peep2 look good.


r~

Reply via email to