OSDN Git Service

({add,sub,mul,div}[sdx]f3): Add new patterns for recognizing SImode,
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Mar 1995 23:38:25 +0000 (23:38 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Mar 1995 23:38:25 +0000 (23:38 +0000)
HImode, and QImode operands.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9183 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/m68k/m68k.md

index 24065ac..eca3715 100644 (file)
 
 (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")
                 (match_operand:DF 2 "general_operand" "fmG")))]
   "TARGET_68881"
 
 (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")
                 (match_operand:SF 2 "general_operand" "fdmF")))]
   "TARGET_68881"
 (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")
                  (match_operand:DF 2 "general_operand" "fmG")))]
   "TARGET_68881"
   "*
 (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")
                  (match_operand:SF 2 "general_operand" "fdmF")))]
   "TARGET_68881"
   "*
 
 (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")
                 (match_operand:DF 2 "general_operand" "fmG")))]
   "TARGET_68881"
 
 (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")
                 (match_operand:SF 2 "general_operand" "fdmF")))]
   "TARGET_68881"
 (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")
                (match_operand:DF 2 "general_operand" "fmG")))]
   "TARGET_68881"
   "*
 (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")
                (match_operand:SF 2 "general_operand" "fdmF")))]
   "TARGET_68881"
   "*
 
 (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")
                 (match_operand:XF 2 "nonimmediate_operand" "fmG")))]
   "TARGET_68881"
 
 (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")
                 (match_operand:XF 2 "nonimmediate_operand" "fmG")))]
   "TARGET_68881"
 
 (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")
                (match_operand:XF 2 "nonimmediate_operand" "fmG")))]
   "TARGET_68881"
 
 (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")
                (match_operand:XF 2 "nonimmediate_operand" "fmG")))]
   "TARGET_68881"