Commit 989f090c by Richard Henderson Committed by Richard Henderson

* alpha.md (insxh-1): New insxl pattern for combine.

From-SVN: r20239
parent b9e199ac
Fri Jun 5 03:05:34 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (insxh-1): New insxl pattern for combine.
Fri Jun 5 01:12:15 1998 H.J. Lu (hjl@gnu.org) Fri Jun 5 01:12:15 1998 H.J. Lu (hjl@gnu.org)
* i386/i386.c (output_fp_conditional_move): New function * i386/i386.c (output_fp_conditional_move): New function
......
...@@ -1614,6 +1614,39 @@ ...@@ -1614,6 +1614,39 @@
"insql %1,%2,%0" "insql %1,%2,%0"
[(set_attr "type" "shift")]) [(set_attr "type" "shift")])
;; Combine has this sometimes habit of moving the and outside of the
;; shift, making life more interesting.
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
(match_operand:DI 2 "mul8_operand" "I"))
(match_operand:DI 3 "immediate_operand" "i")))]
"HOST_BITS_PER_WIDE_INT == 64
&& GET_CODE (operands[3]) == CONST_INT
&& (((unsigned HOST_WIDE_INT) 0xff << INTVAL (operands[2])
== INTVAL (operands[3]))
|| ((unsigned HOST_WIDE_INT) 0xffff << INTVAL (operands[2])
== INTVAL (operands[3]))
|| ((unsigned HOST_WIDE_INT) 0xffffffff << INTVAL (operands[2])
== INTVAL (operands[3])))"
"*
{
#if HOST_BITS_PER_WIDE_INT == 64
if ((unsigned HOST_WIDE_INT) 0xff << INTVAL (operands[2])
== INTVAL (operands[3]))
return \"insbl %1,%s2,%0\";
if ((unsigned HOST_WIDE_INT) 0xffff << INTVAL (operands[2])
== INTVAL (operands[3]))
return \"inswl %1,%s2,%0\";
if ((unsigned HOST_WIDE_INT) 0xffffffff << INTVAL (operands[2])
== INTVAL (operands[3]))
return \"insll %1,%s2,%0\";
#endif
abort();
}"
[(set_attr "type" "shift")])
;; We do not include the insXh insns because they are complex to express ;; We do not include the insXh insns because they are complex to express
;; and it does not appear that we would ever want to generate them. ;; and it does not appear that we would ever want to generate them.
;; ;;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment