]> gcc.gnu.org Git - gcc.git/commitdiff
(umuldi3_highpart): New expander and matcher.
authorTorbjorn Granlund <tege@gnu.org>
Wed, 29 Jun 1994 00:19:15 +0000 (00:19 +0000)
committerTorbjorn Granlund <tege@gnu.org>
Wed, 29 Jun 1994 00:19:15 +0000 (00:19 +0000)
From-SVN: r7592

gcc/config/alpha/alpha.md

index 8b190996d7b2f712c7aae32d5d2b98ed531edfa3..8497011f751cbbf168c29bcd6b76c4080ad8ab00 100644 (file)
   ""
   "mulq %r1,%r2,%0"
   [(set_attr "type" "imulq")])
+
+(define_insn "umuldi3_highpart"
+  [(set (match_operand:DI 0 "register_operand" "=r")
+       (truncate:DI
+        (lshiftrt:TI
+         (mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))
+                  (zero_extend:TI (match_operand:DI 2 "register_operand" "r")))
+         (const_int 64))))]
+  ""
+  "umulh %1,%2,%0"
+  [(set_attr "type" "imulq")])
+
+(define_insn ""
+  [(set (match_operand:DI 0 "register_operand" "=r")
+       (truncate:DI
+        (lshiftrt:TI
+         (mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))
+                  (match_operand:TI 2 "cint8_operand" "I"))
+         (const_int 64))))]
+  ""
+  "umulh %1,%2,%0"
+  [(set_attr "type" "imulq")])
 \f
 ;; The divide and remainder operations always take their inputs from
 ;; r24 and r25, put their output in r27, and clobber r23 and r28.
This page took 0.071969 seconds and 5 git commands to generate.