All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: peter.maydell@linaro.org
Cc: rth@twiddle.net, qemu-arm@nongnu.org, qemu-devel@nongnu.org,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Aurelien Jarno" <aurelien@aurel32.net>
Subject: [Qemu-devel] [RFC PATCH for 2.11 18/23] fpu/softfloat2a: implement float16_squash_input_denormal
Date: Thu, 20 Jul 2017 16:04:21 +0100	[thread overview]
Message-ID: <20170720150426.12393-19-alex.bennee@linaro.org> (raw)
In-Reply-To: <20170720150426.12393-1-alex.bennee@linaro.org>

This will be required when expanding the MINMAX() macro for 16
bit/half-precision operations.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 fpu/softfloat2a/softfloat.c         | 15 +++++++++++++++
 include/fpu/softfloat2a/softfloat.h |  1 +
 2 files changed, 16 insertions(+)

diff --git a/fpu/softfloat2a/softfloat.c b/fpu/softfloat2a/softfloat.c
index 59b9bc9e24..4f1abbe08f 100644
--- a/fpu/softfloat2a/softfloat.c
+++ b/fpu/softfloat2a/softfloat.c
@@ -3488,6 +3488,21 @@ static float16 roundAndPackFloat16(flag zSign, int zExp,
     return packFloat16(zSign, zExp, zSig >> 13);
 }
 
+/*----------------------------------------------------------------------------
+| If `a' is denormal and we are in flush-to-zero mode then set the
+| input-denormal exception and return zero. Otherwise just return the value.
+*----------------------------------------------------------------------------*/
+float16 float16_squash_input_denormal(float16 a, float_status *status)
+{
+    if (status->flush_inputs_to_zero) {
+        if (extractFloat16Exp(a) == 0 && extractFloat16Frac(a) != 0) {
+            float_raise(float_flag_input_denormal, status);
+            return make_float16(float16_val(a) & 0x8000);
+        }
+    }
+    return a;
+}
+
 static void normalizeFloat16Subnormal(uint32_t aSig, int *zExpPtr,
                                       uint32_t *zSigPtr)
 {
diff --git a/include/fpu/softfloat2a/softfloat.h b/include/fpu/softfloat2a/softfloat.h
index d9689eca2a..a274dc7419 100644
--- a/include/fpu/softfloat2a/softfloat.h
+++ b/include/fpu/softfloat2a/softfloat.h
@@ -282,6 +282,7 @@ void float_raise(uint8_t flags, float_status *status);
 | If `a' is denormal and we are in flush-to-zero mode then set the
 | input-denormal exception and return zero. Otherwise just return the value.
 *----------------------------------------------------------------------------*/
+float16 float16_squash_input_denormal(float16 a, float_status *status);
 float32 float32_squash_input_denormal(float32 a, float_status *status);
 float64 float64_squash_input_denormal(float64 a, float_status *status);
 
-- 
2.13.0

  parent reply	other threads:[~2017-07-20 15:12 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-20 15:04 [Qemu-devel] [RFC PATCH for 2.11 00/23] Implementing FP16 for ARMv8.2 using SoftFloat2a and 3c Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 01/23] softfloat: move existing softfloat2a into versioned directory Alex Bennée
2017-07-23 14:29   ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 02/23] fpu: import SoftFloat3c Alex Bennée
2017-07-21  9:37   ` Thomas Huth
2017-07-21  9:57     ` Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 03/23] softfloat3c: dos2unix all files Alex Bennée
2017-07-20 18:59   ` Richard Henderson
2017-07-21  8:22     ` Thomas Huth
2017-07-21  8:56       ` Alex Bennée
2017-07-21  9:22         ` Peter Maydell
2017-07-21  9:44           ` Alex Bennée
2017-07-21  9:27         ` Daniel P. Berrange
2017-07-21 13:31           ` Aurelien Jarno
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 04/23] softfloat3c: fixup include paths Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 05/23] softfloat3c: initial build machinery Alex Bennée
2017-07-20 19:18   ` Richard Henderson
2017-07-21  9:32     ` Alex Bennée
2017-07-21 13:25       ` Aurelien Jarno
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 06/23] softfloat3c: silence compiler warning Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 07/23] softfloat3c: f16_to_f128M remove unused variable Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 08/23] target-aarch64: enable SoftFloat3 build for FP16 Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 09/23] arm: introduce ARM_V8_FP16 feature bit Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 10/23] target/arm/translate-a64.c: handle_3same_64 comment fix Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 11/23] target/arm/translate-a64.c: AdvSIMD scalar 3 Same FP16 initial decode Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 12/23] target/arm/translate-a64.c: add FP16 FAGCT to AdvSIMD 3 Same Alex Bennée
2017-07-20 19:35   ` Richard Henderson
2017-07-21  9:56     ` Alex Bennée
2017-07-21 13:21       ` Aurelien Jarno
2017-07-21 13:50         ` Alex Bennée
2017-07-21 13:58           ` Peter Maydell
2017-07-21 17:43             ` Aurelien Jarno
2017-07-28 13:00     ` Alex Bennée
2017-07-28 16:07       ` Richard Henderson
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 13/23] target/arm/translate-a64.c: add FP16 FADD " Alex Bennée
2017-07-20 19:37   ` Richard Henderson
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 14/23] target/arm/translate-a64.c: add ARMv8.2 fadd scalar half-precision Alex Bennée
2017-07-20 19:40   ` Richard Henderson
2017-07-21  9:58     ` Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 15/23] target/arm/translate-a64.c: AdvSIMD scalar 2 register misc decode Alex Bennée
2017-07-20 19:49   ` Richard Henderson
2017-07-21  9:35     ` Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 16/23] include/exec/helper-head.h: support f16 in helper calls Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 17/23] fpu/softfloat2a: implement propagateFloat16NaN Alex Bennée
2017-07-20 15:04 ` Alex Bennée [this message]
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 19/23] fpu/softfloat2a: implement float16_abs helper Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 20/23] fpu/softfloat2a: add half-precision expansions for MINMAX fns Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 21/23] fpu/softfloat2a: propagate signalling NaNs in MINMAX Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 22/23] fpu/softfloat2a: improve comments on ARM NaN propagation Alex Bennée
2017-07-20 15:04 ` [Qemu-devel] [RFC PATCH for 2.11 23/23] target/arm: implement half-precision F(MIN|MAX)(V|NMV) Alex Bennée
2017-07-20 15:17 ` [Qemu-devel] [RFC PATCH for 2.11 00/23] Implementing FP16 for ARMv8.2 using SoftFloat2a and 3c Peter Maydell
2017-07-20 19:53 ` Aurelien Jarno

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=20170720150426.12393-19-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=aurelien@aurel32.net \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.