(smulsi3_highpart, umulsi3_highpart): New patterns.
authorTorbjorn Granlund <tege@gnu.org>
Wed, 29 Jun 1994 00:18:12 +0000 (00:18 +0000)
committerTorbjorn Granlund <tege@gnu.org>
Wed, 29 Jun 1994 00:18:12 +0000 (00:18 +0000)
From-SVN: r7590

gcc/config/a29k/a29k.md

index ca1decc586e131d47b35f3e4b64892467644aa5b..a6dbad1d5b2d3e0899a1806adc5104d874feec13 100644 (file)
 { operands[3] = operand_subword (operands[0], 1, 1, DImode);
   operands[4] = operand_subword (operands[1], 0, 1, DImode); } ")
                            
+(define_insn "smulsi3_highpart"
+  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+       (truncate:SI
+        (lshiftrt:DI
+         (mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
+                  (sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r")))
+         (const_int 32))))
+   (clobber (match_scratch:SI 3 "=&q"))]
+  ""
+  "multm %0,%1,%2")
+
+(define_insn "umulsi3_highpart"
+  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+       (truncate:SI
+        (lshiftrt:DI
+         (mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
+                  (zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r")))
+         (const_int 32))))
+   (clobber (match_scratch:SI 3 "=&q"))]
+  ""
+  "multmu %0,%1,%2")
+
 ;; NAND
 (define_insn ""
   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")