> +;; "*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~