From 2bb5cef1a85d63ebf155bcb0070492b0ad298dd8 Mon Sep 17 00:00:00 2001 From: Nagaraju Mekala Date: Tue, 9 Oct 2018 10:07:08 +0530 Subject: [PATCH 36/54] -Added double arith instructions -Fixed prologue stack pointer decrement issue --- gcc/config/microblaze/microblaze.md | 78 +++++++++++++++++++++++++---- gcc/config/microblaze/t-microblaze | 7 +++ 2 files changed, 76 insertions(+), 9 deletions(-) diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md index 74bb30cb9e8..1401d6b77ff 100644 --- a/gcc/config/microblaze/microblaze.md +++ b/gcc/config/microblaze/microblaze.md @@ -527,6 +527,66 @@ (set_attr "mode" "SF") (set_attr "length" "4")]) +(define_insn "fix_truncsfsi2" + [(set (match_operand:SI 0 "register_operand" "=d") + (fix:SI (match_operand:SF 1 "register_operand" "d")))] + "TARGET_HARD_FLOAT && TARGET_FLOAT_CONVERT" + "fint\t%0,%1" + [(set_attr "type" "fint") + (set_attr "mode" "SF") + (set_attr "length" "4")]) + + +(define_insn "adddf3" + [(set (match_operand:DF 0 "register_operand" "=d") + (plus:DF (match_operand:DF 1 "register_operand" "d") + (match_operand:DF 2 "register_operand" "d")))] + "TARGET_MB_64" + "dadd\t%0,%1,%2" + [(set_attr "type" "fadd") + (set_attr "mode" "DF") + (set_attr "length" "4")]) + +(define_insn "subdf3" + [(set (match_operand:DF 0 "register_operand" "=d") + (minus:DF (match_operand:DF 1 "register_operand" "d") + (match_operand:DF 2 "register_operand" "d")))] + "TARGET_MB_64" + "drsub\t%0,%2,%1" + [(set_attr "type" "frsub") + (set_attr "mode" "DF") + (set_attr "length" "4")]) + +(define_insn "muldf3" + [(set (match_operand:DF 0 "register_operand" "=d") + (mult:DF (match_operand:DF 1 "register_operand" "d") + (match_operand:DF 2 "register_operand" "d")))] + "TARGET_MB_64" + "dmul\t%0,%1,%2" + [(set_attr "type" "fmul") + (set_attr "mode" "DF") + (set_attr "length" "4")]) + +(define_insn "divdf3" + [(set (match_operand:DF 0 "register_operand" "=d") + (div:DF (match_operand:DF 1 "register_operand" "d") + (match_operand:DF 2 "register_operand" "d")))] + "TARGET_MB_64" + "ddiv\t%0,%2,%1" + [(set_attr "type" "fdiv") + (set_attr "mode" "DF") + (set_attr "length" "4")]) + + +(define_insn "sqrtdf2" + [(set (match_operand:DF 0 "register_operand" "=d") + (sqrt:DF (match_operand:DF 1 "register_operand" "d")))] + "TARGET_MB_64" + "dsqrt\t%0,%1" + [(set_attr "type" "fsqrt") + (set_attr "mode" "DF") + (set_attr "length" "4")]) + (define_insn "floatdidf2" [(set (match_operand:DF 0 "register_operand" "=d") (float:DF (match_operand:DI 1 "register_operand" "d")))] @@ -536,13 +596,13 @@ (set_attr "mode" "DF") (set_attr "length" "4")]) -(define_insn "fix_truncsfsi2" - [(set (match_operand:SI 0 "register_operand" "=d") - (fix:SI (match_operand:SF 1 "register_operand" "d")))] - "TARGET_HARD_FLOAT && TARGET_FLOAT_CONVERT" - "fint\t%0,%1" - [(set_attr "type" "fint") - (set_attr "mode" "SF") +(define_insn "floatdfdi2" + [(set (match_operand:DI 0 "register_operand" "=d") + (float:DI (match_operand:DF 1 "register_operand" "d")))] + "TARGET_MB_64" + "dlong\t%0,%1" + [(set_attr "type" "fcvt") + (set_attr "mode" "DI") (set_attr "length" "4")]) ;;---------------------------------------------------------------- @@ -660,8 +720,8 @@ "TARGET_MB_64" "@ rsubl\t%0,%2,%1 - addik\t%0,%z1,-%2 - addik\t%0,%z1,-%2" + addlik\t%0,%z1,-%2 + addlik\t%0,%z1,-%2" [(set_attr "type" "arith,no_delay_arith,no_delay_arith") (set_attr "mode" "DI") (set_attr "length" "4,4,4")]) diff --git a/gcc/config/microblaze/t-microblaze b/gcc/config/microblaze/t-microblaze index 35ab9654052..dfef45c268e 100644 --- a/gcc/config/microblaze/t-microblaze +++ b/gcc/config/microblaze/t-microblaze @@ -1,6 +1,13 @@ MULTILIB_OPTIONS = m64 mxl-barrel-shift mlittle-endian mno-xl-soft-mul mxl-multiply-high MULTILIB_DIRNAMES = m64 bs le m mh MULTILIB_EXCEPTIONS = *m64/mxl-multiply-high mxl-multiply-high +MULTILIB_EXCEPTIONS += *m64 +MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift +MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul +MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mno-xl-soft-mul +MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul +MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mno-xl-soft-mul/mxl-multiply-high +MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul/mxl-multiply-high MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high mxl-multiply-high MULTILIB_EXCEPTIONS += *mlittle-endian/mxl-multiply-high mxl-multiply-high MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mlittle-endian/mxl-multiply-high -- 2.17.1