aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2013-02-01 08:34:28 -0800
committerRichard Henderson <rth@gcc.gnu.org>2013-02-01 08:34:28 -0800
commitff2a9d88b4748f1ccbf2e8e368fa499fa861c9c7 (patch)
tree21b2dcda8ec561c8e749a3d2126cb2f5f40207f1 /gcc
parent749af8ee126fea9757ecf38ea85093603114bd50 (diff)
downloadgcc-ff2a9d88b4748f1ccbf2e8e368fa499fa861c9c7.zip
gcc-ff2a9d88b4748f1ccbf2e8e368fa499fa861c9c7.tar.gz
gcc-ff2a9d88b4748f1ccbf2e8e368fa499fa861c9c7.tar.bz2
alpha: widening multiply pattern
* config/alpha/alpha.md (umulditi3): New. From-SVN: r195668
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/config/alpha/alpha.md15
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dd9224d..1c66228 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -3,6 +3,8 @@
* config/rs6000/rs6000.md (smulditi3): New.
(umulditi3): New.
+ * config/alpha/alpha.md (umulditi3): New.
+
2013-02-01 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2.
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index f7f9397..4397527 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -719,6 +719,21 @@
"umulh %1,%2,%0"
[(set_attr "type" "imul")
(set_attr "opsize" "udi")])
+
+(define_expand "umulditi3"
+ [(set (match_operand:TI 0 "register_operand")
+ (mult:TI
+ (zero_extend:TI (match_operand:DI 1 "reg_no_subreg_operand"))
+ (zero_extend:TI (match_operand:DI 2 "reg_no_subreg_operand"))))]
+ ""
+{
+ rtx l = gen_reg_rtx (DImode), h = gen_reg_rtx (DImode);
+ emit_insn (gen_muldi3 (l, operands[1], operands[2]));
+ emit_insn (gen_umuldi3_highpart (h, operands[1], operands[2]));
+ emit_move_insn (gen_lowpart (DImode, operands[0]), l);
+ emit_move_insn (gen_highpart (DImode, operands[0]), h);
+ DONE;
+})
;; The divide and remainder operations take their inputs from r24 and
;; r25, put their output in r27, and clobber r23 and r28 on all systems.