From 22859ae8bd7288dd5a644be1491c9e5cc1bb1f1b Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 14 Mar 1995 18:38:25 -0500 Subject: [PATCH] ({add,sub,mul,div}[sdx]f3): Add new patterns for recognizing SImode, HImode, and QImode operands. From-SVN: r9183 --- gcc/config/m68k/m68k.md | 282 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 24065accff3..eca3715abe6 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -2404,6 +2404,27 @@ 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") @@ -2439,6 +2460,27 @@ 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") @@ -2598,6 +2640,27 @@ 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") @@ -2633,6 +2696,27 @@ 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") @@ -2923,6 +3007,27 @@ 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") @@ -2967,6 +3072,42 @@ 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") @@ -3108,6 +3249,27 @@ 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") @@ -3143,6 +3305,42 @@ 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") @@ -6235,6 +6433,27 @@ 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") @@ -6260,6 +6479,27 @@ 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") @@ -6285,6 +6525,27 @@ 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") @@ -6310,6 +6571,27 @@ 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") -- 2.30.2