------- Comment #2 from jakub at gcc dot gnu dot org  2005-12-06 14:48 -------
Yeah, making separate
(define_insn "*<shift>di3_and_31"
  [(set (match_operand:DI 0 "register_operand" "=d")
        (SHIFT:DI (match_operand:DI 1 "register_operand" "0")
                  (and:SI (match_operand:SI 2 "shift_count_operand" "Y")
                          (const_int 63)))]
  "!TARGET_64BIT"
  "s<lr>dl\t%0,%Y2"
  [(set_attr "op_type"  "RS")
   (set_attr "atype"    "reg")])

and 'Y'/shift_count_operand reject AND sounds best to me.  You don't need to
duplicate define_expand's I guess, just let combiner combine it.
It is not very nice to duplicate 14 patterns, on the other side lying to
reload that shift count is an address constraint when it is not is worse.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25268

Reply via email to