({add,sub,mul,div}[sdx]f3): Add new patterns for recognizing SImode,
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 14 Mar 1995 23:38:25 +0000 (18:38 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 14 Mar 1995 23:38:25 +0000 (18:38 -0500)
HImode, and QImode operands.

From-SVN: r9183

gcc/config/m68k/m68k.md

index 24065accff30e3365b2a7b42c1ba93d23a27040a..eca3715abe6f2212a58b8b5671fb53c96adfb2ce 100644 (file)
   return \"fpadd3%.d %x2,%x1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (plus:DF (float:DF (match_operand:SI 2 "general_operand" "dmi"))
+                (match_operand:DF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%&add%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (plus:DF (float:DF (match_operand:HI 2 "general_operand" "dmn"))
+                (match_operand:DF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%&add%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (plus:DF (float:DF (match_operand:QI 2 "general_operand" "dmn"))
+                (match_operand:DF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%&add%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:DF 0 "general_operand" "=f")
        (plus:DF (match_operand:DF 1 "general_operand" "%0")
   return \"fpadd3%.s %2,%1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (plus:SF (float:SF (match_operand:SI 2 "general_operand" "dmi"))
+                (match_operand:SF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%$add%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (plus:SF (float:SF (match_operand:HI 2 "general_operand" "dmn"))
+                (match_operand:SF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%$add%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (plus:SF (float:SF (match_operand:QI 2 "general_operand" "dmn"))
+                (match_operand:SF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%$add%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:SF 0 "general_operand" "=f")
        (plus:SF (match_operand:SF 1 "general_operand" "%0")
   return \"fpsub3%.d %x2,%x1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (minus:DF (match_operand:DF 1 "general_operand" "0")
+                 (float:DF (match_operand:SI 2 "general_operand" "dmi"))))]
+  "TARGET_68881"
+  "f%&sub%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (minus:DF (match_operand:DF 1 "general_operand" "0")
+                 (float:DF (match_operand:HI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "f%&sub%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (minus:DF (match_operand:DF 1 "general_operand" "0")
+                 (float:DF (match_operand:QI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "f%&sub%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:DF 0 "general_operand" "=f")
        (minus:DF (match_operand:DF 1 "general_operand" "0")
   return \"fpsub3%.s %2,%1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (minus:SF (match_operand:SF 1 "general_operand" "0")
+                 (float:SF (match_operand:SI 2 "general_operand" "dmi"))))]
+  "TARGET_68881"
+  "f%$sub%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (minus:SF (match_operand:SF 1 "general_operand" "0")
+                 (float:SF (match_operand:HI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "f%$sub%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (minus:SF (match_operand:SF 1 "general_operand" "0")
+                 (float:SF (match_operand:QI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "f%$sub%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:SF 0 "general_operand" "=f")
        (minus:SF (match_operand:SF 1 "general_operand" "0")
   return \"fpmul3%.d %x2,%x1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (mult:DF (float:DF (match_operand:SI 2 "general_operand" "dmi"))
+                (match_operand:DF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%&mul%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (mult:DF (float:DF (match_operand:HI 2 "general_operand" "dmn"))
+                (match_operand:DF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%&mul%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (mult:DF (float:DF (match_operand:QI 2 "general_operand" "dmn"))
+                (match_operand:DF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "f%&mul%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:DF 0 "general_operand" "=f")
        (mult:DF (match_operand:DF 1 "general_operand" "%0")
   return \"fpmul3%.s %2,%1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (mult:SF (float:SF (match_operand:SI 2 "general_operand" "dmi"))
+                (match_operand:SF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "*
+{
+  return (TARGET_68040_ONLY
+          ? \"fsmul%.l %2,%0\"
+          : \"fsglmul%.l %2,%0\");
+}")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (mult:SF (float:SF (match_operand:HI 2 "general_operand" "dmn"))
+                (match_operand:SF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "*
+{
+  return (TARGET_68040_ONLY
+          ? \"fsmul%.w %2,%0\"
+          : \"fsglmul%.w %2,%0\");
+}")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (mult:SF (float:SF (match_operand:QI 2 "general_operand" "dmn"))
+                (match_operand:SF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "*
+{
+  return (TARGET_68040_ONLY
+          ? \"fsmul%.b %2,%0\"
+          : \"fsglmul%.b %2,%0\");
+}")
+
 (define_insn ""
   [(set (match_operand:SF 0 "general_operand" "=f")
        (mult:SF (match_operand:SF 1 "general_operand" "%0")
   return \"fpdiv3%.d %x2,%x1,%x0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (div:DF (match_operand:DF 1 "general_operand" "0")
+               (float:DF (match_operand:SI 2 "general_operand" "dmi"))))]
+  "TARGET_68881"
+  "f%&div%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (div:DF (match_operand:DF 1 "general_operand" "0")
+               (float:DF (match_operand:HI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "f%&div%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:DF 0 "general_operand" "=f")
+       (div:DF (match_operand:DF 1 "general_operand" "0")
+               (float:DF (match_operand:QI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "f%&div%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:DF 0 "general_operand" "=f")
        (div:DF (match_operand:DF 1 "general_operand" "0")
   return \"fpdiv3%.s %2,%1,%0\";
 }")
 
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (div:SF (match_operand:SF 1 "general_operand" "0")
+               (float:SF (match_operand:SI 2 "general_operand" "dmi"))))]
+  "TARGET_68881"
+  "*
+{
+  return (TARGET_68040_ONLY
+          ? \"fsdiv%.l %2,%0\"
+          : \"fsgldiv%.l %2,%0\");
+}")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (div:SF (match_operand:SF 1 "general_operand" "0")
+               (float:SF (match_operand:HI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "*
+{
+  return (TARGET_68040_ONLY
+          ? \"fsdiv%.w %2,%0\"
+          : \"fsgldiv%.w %2,%0\");
+}")
+
+(define_insn ""
+  [(set (match_operand:SF 0 "general_operand" "=f")
+       (div:SF (match_operand:SF 1 "general_operand" "0")
+               (float:SF (match_operand:QI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "*
+{
+  return (TARGET_68040_ONLY
+          ? \"fsdiv%.b %2,%0\"
+          : \"fsgldiv%.b %2,%0\");
+}")
+
 (define_insn ""
   [(set (match_operand:SF 0 "general_operand" "=f")
        (div:SF (match_operand:SF 1 "general_operand" "0")
     operands[2] = force_const_mem (XFmode, operands[2]);
 }")
 
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (plus:XF (float:XF (match_operand:SI 2 "general_operand" "dmi"))
+                (match_operand:XF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "fadd%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (plus:XF (float:XF (match_operand:HI 2 "general_operand" "dmn"))
+                (match_operand:XF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "fadd%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (plus:XF (float:XF (match_operand:QI 2 "general_operand" "dmn"))
+                (match_operand:XF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "fadd%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:XF 0 "general_operand" "=f")
        (plus:XF (match_operand:XF 1 "nonimmediate_operand" "%0")
     operands[2] = force_const_mem (XFmode, operands[2]);
 }")
 
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (minus:XF (match_operand:XF 1 "general_operand" "0")
+                 (float:XF (match_operand:SI 2 "general_operand" "dmi"))))]
+  "TARGET_68881"
+  "fsub%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (minus:XF (match_operand:XF 1 "general_operand" "0")
+                 (float:XF (match_operand:HI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "fsub%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (minus:XF (match_operand:XF 1 "general_operand" "0")
+                 (float:XF (match_operand:QI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "fsub%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:XF 0 "general_operand" "=f")
        (minus:XF (match_operand:XF 1 "nonimmediate_operand" "0")
     operands[2] = force_const_mem (XFmode, operands[2]);
 }")
 
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (mult:XF (float:XF (match_operand:SI 2 "general_operand" "dmi"))
+                (match_operand:XF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "fmul%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (mult:XF (float:XF (match_operand:HI 2 "general_operand" "dmn"))
+                (match_operand:XF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "fmul%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (mult:XF (float:XF (match_operand:QI 2 "general_operand" "dmn"))
+                (match_operand:XF 1 "general_operand" "0")))]
+  "TARGET_68881"
+  "fmul%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:XF 0 "general_operand" "=f")
        (mult:XF (match_operand:XF 1 "nonimmediate_operand" "%0")
     operands[2] = force_const_mem (XFmode, operands[2]);
 }")
 
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (div:XF (match_operand:XF 1 "general_operand" "0")
+               (float:XF (match_operand:SI 2 "general_operand" "dmi"))))]
+  "TARGET_68881"
+  "fdiv%.l %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (div:XF (match_operand:XF 1 "general_operand" "0")
+               (float:XF (match_operand:HI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "fdiv%.w %2,%0")
+
+(define_insn ""
+  [(set (match_operand:XF 0 "general_operand" "=f")
+       (div:XF (match_operand:XF 1 "general_operand" "0")
+               (float:XF (match_operand:QI 2 "general_operand" "dmn"))))]
+  "TARGET_68881"
+  "fdiv%.b %2,%0")
+
 (define_insn ""
   [(set (match_operand:XF 0 "general_operand" "=f")
        (div:XF (match_operand:XF 1 "nonimmediate_operand" "0")