linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greentime Hu <green.hu@gmail.com>
To: Vincent Chen <vincentc@andestech.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Vincent Chen <deanbo422@gmail.com>
Subject: Re: [PATCH v3 0/5] nds32 FPU port
Date: Tue, 6 Nov 2018 17:52:56 +0800	[thread overview]
Message-ID: <CAEbi=3f0OggbR2_ajWPT3Sx=ck2CTj448WUkssr63hHsywCsqQ@mail.gmail.com> (raw)
In-Reply-To: <cover.1541055990.git.vincentc@andestech.com>

Hi Vincent,
Vincent Chen <vincentc@andestech.com> 於 2018年11月1日 週四 下午3:17寫道:
>
>   This patch set contains basic components for supporting the nds32 FPU,
> such as exception handlers and context switch for FPU registers. By
> default, the lazy FPU scheme is supported and the user can configure it
> via CONFIG_LZAY_FPU. In addition, a floating point emulator is required
> to handle all arithmetic of denormalized number because it is not supported
> by the nds32 FPU.
>
>   As mentioned above, the nds32 FPU does not support denormalized number
> This means the denormalized operands and results are not permitted. If an
> instruction contains denormalized operands, the nds32 FPU will raise an
> denormalized input exception to inform kernel to deal with this
> instruction. If the result of the instruction is a denormalized number,
> normally nds32 FPU will treat it as an underflow case and round the result
> to an appropriate value based on current rounding mode. Obviously, there is
> a precision gap for tininess number. To reduce this precision gap, kernel
> will enable the underflow trap by default to direct all underflow cases to
> the floating pointer emulator. By the floating pointer emulator, the
> correct denormalized number can be derived in kernel and return to the user
> program. The feature can be configured by
> CONFIG_SUPPORT_DENORMAL_ARITHMETIC, and if the precision requirement is not
> critical for tininess number, user may disables this feature to keep
> performance.
>
>   The implementation of floating point emulator is based on soft-fp
> which is located in include/math-emu folder. However, soft-fp is too
> outdated to pass the current compiler check. The needed modifications
> for soft-fp are included in this patch set
>
> Changes in v3:
>  - Kernel with FPU support enabled still can run on a CPU without FPU
>  - Rename CONFIG_UNLAZY_FPU to CONFIG_LAYZ_FPU
>  - Rename _switch() to _switch_fpu()
>  - Store FPU context when kernel suspends
>  - Modify the comments in code and patch
>
> Changes in v2:
>  - Remove the initilzation for floating pointer register before entering to
>    signal handler.
>
> Vincent Chen (5):
>   nds32: nds32 FPU port
>   nds32: Support FP emulation
>   nds32: support denormalized result through FP emulator
>   math-emu/op-2.h: Use statement expressions to prevent negative
>     constant shift
>   math-emu/soft-fp.h: (_FP_ROUND_ZERO) cast 0 to void to fix warning
>
>  arch/nds32/Kconfig                       |    1 +
>  arch/nds32/Kconfig.cpu                   |   34 +++
>  arch/nds32/Makefile                      |   11 +
>  arch/nds32/include/asm/bitfield.h        |   15 ++
>  arch/nds32/include/asm/elf.h             |   11 +
>  arch/nds32/include/asm/fpu.h             |  126 +++++++++++
>  arch/nds32/include/asm/fpuemu.h          |   32 +++
>  arch/nds32/include/asm/nds32_fpu_inst.h  |  109 +++++++++
>  arch/nds32/include/asm/processor.h       |    7 +
>  arch/nds32/include/asm/sfp-machine.h     |  158 +++++++++++++
>  arch/nds32/include/asm/syscalls.h        |    1 +
>  arch/nds32/include/uapi/asm/auxvec.h     |    7 +
>  arch/nds32/include/uapi/asm/sigcontext.h |   14 ++
>  arch/nds32/include/uapi/asm/udftrap.h    |   13 +
>  arch/nds32/include/uapi/asm/unistd.h     |    2 +
>  arch/nds32/kernel/Makefile               |   10 +
>  arch/nds32/kernel/ex-entry.S             |   24 ++-
>  arch/nds32/kernel/ex-exit.S              |   13 +-
>  arch/nds32/kernel/ex-scall.S             |    8 +-
>  arch/nds32/kernel/fpu.c                  |  269 ++++++++++++++++++++++
>  arch/nds32/kernel/process.c              |   64 +++++-
>  arch/nds32/kernel/setup.c                |   12 +-
>  arch/nds32/kernel/signal.c               |   62 +++++-
>  arch/nds32/kernel/sleep.S                |    2 +
>  arch/nds32/kernel/sys_nds32.c            |   32 +++
>  arch/nds32/kernel/traps.c                |   16 ++
>  arch/nds32/math-emu/Makefile             |    7 +
>  arch/nds32/math-emu/faddd.c              |   24 ++
>  arch/nds32/math-emu/fadds.c              |   24 ++
>  arch/nds32/math-emu/fcmpd.c              |   24 ++
>  arch/nds32/math-emu/fcmps.c              |   24 ++
>  arch/nds32/math-emu/fd2s.c               |   22 ++
>  arch/nds32/math-emu/fdivd.c              |   27 +++
>  arch/nds32/math-emu/fdivs.c              |   26 +++
>  arch/nds32/math-emu/fmuld.c              |   23 ++
>  arch/nds32/math-emu/fmuls.c              |   23 ++
>  arch/nds32/math-emu/fnegd.c              |   21 ++
>  arch/nds32/math-emu/fnegs.c              |   21 ++
>  arch/nds32/math-emu/fpuemu.c             |  357 ++++++++++++++++++++++++++++++
>  arch/nds32/math-emu/fs2d.c               |   23 ++
>  arch/nds32/math-emu/fsqrtd.c             |   21 ++
>  arch/nds32/math-emu/fsqrts.c             |   21 ++
>  arch/nds32/math-emu/fsubd.c              |   27 +++
>  arch/nds32/math-emu/fsubs.c              |   27 +++
>  include/math-emu/op-2.h                  |   97 ++++-----
>  include/math-emu/soft-fp.h               |    2 +-
>  46 files changed, 1827 insertions(+), 67 deletions(-)
>  create mode 100644 arch/nds32/include/asm/fpu.h
>  create mode 100644 arch/nds32/include/asm/fpuemu.h
>  create mode 100644 arch/nds32/include/asm/nds32_fpu_inst.h
>  create mode 100644 arch/nds32/include/asm/sfp-machine.h
>  create mode 100644 arch/nds32/include/uapi/asm/udftrap.h
>  create mode 100644 arch/nds32/kernel/fpu.c
>  create mode 100644 arch/nds32/math-emu/Makefile
>  create mode 100644 arch/nds32/math-emu/faddd.c
>  create mode 100644 arch/nds32/math-emu/fadds.c
>  create mode 100644 arch/nds32/math-emu/fcmpd.c
>  create mode 100644 arch/nds32/math-emu/fcmps.c
>  create mode 100644 arch/nds32/math-emu/fd2s.c
>  create mode 100644 arch/nds32/math-emu/fdivd.c
>  create mode 100644 arch/nds32/math-emu/fdivs.c
>  create mode 100644 arch/nds32/math-emu/fmuld.c
>  create mode 100644 arch/nds32/math-emu/fmuls.c
>  create mode 100644 arch/nds32/math-emu/fnegd.c
>  create mode 100644 arch/nds32/math-emu/fnegs.c
>  create mode 100644 arch/nds32/math-emu/fpuemu.c
>  create mode 100644 arch/nds32/math-emu/fs2d.c
>  create mode 100644 arch/nds32/math-emu/fsqrtd.c
>  create mode 100644 arch/nds32/math-emu/fsqrts.c
>  create mode 100644 arch/nds32/math-emu/fsubd.c
>  create mode 100644 arch/nds32/math-emu/fsubs.c

Thank you.
Acked-by: Greentime Hu <greentime@andestech.com>

      parent reply	other threads:[~2018-11-06  9:53 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-01  7:16 [PATCH v3 0/5] nds32 FPU port Vincent Chen
2018-11-01  7:16 ` [PATCH v3 1/5] nds32: " Vincent Chen
2018-11-01  7:16 ` [PATCH v3 2/5] nds32: Support FP emulation Vincent Chen
2018-11-01  7:16 ` [PATCH v3 3/5] nds32: support denormalized result through FP emulator Vincent Chen
2018-11-01  7:17 ` [PATCH v3 4/5] math-emu/op-2.h: Use statement expressions to prevent negative constant shift Vincent Chen
2018-11-01  7:17 ` [PATCH v3 5/5] math-emu/soft-fp.h: (_FP_ROUND_ZERO) cast 0 to void to fix warning Vincent Chen
2018-11-06  9:52 ` Greentime Hu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEbi=3f0OggbR2_ajWPT3Sx=ck2CTj448WUkssr63hHsywCsqQ@mail.gmail.com' \
    --to=green.hu@gmail.com \
    --cc=arnd@arndb.de \
    --cc=deanbo422@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vincentc@andestech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).