From: Tom Musta <tommusta@gmail.com>
To: qemu-devel@nongnu.org
Cc: Tom Musta <tommusta@gmail.com>, qemu-ppc@nongnu.org
Subject: [Qemu-devel] [V7 PATCH 18/18] target-ppc: Scalar Non-Signalling Conversions
Date: Wed, 15 Jan 2014 08:10:45 -0600 [thread overview]
Message-ID: <1389795045-5504-19-git-send-email-tommusta@gmail.com> (raw)
In-Reply-To: <1389795045-5504-1-git-send-email-tommusta@gmail.com>
This patch adds the non-signalling scalar conversion instructions:
- VSX Scalar Convert Single Precision to Double Precision
Non-Signalling (xscvspdpn)
- VSX Scalar Convert Double Precision to Single Precision
Non-Signalling (xscvdpspn)
Signed-off-by: Tom Musta <tommusta@gmail.com>
---
V6: New.
V7: Adjusted helper signatures per Richard Henderson's review.
target-ppc/fpu_helper.c | 16 ++++++++++++++++
target-ppc/helper.h | 2 ++
target-ppc/translate.c | 4 ++++
3 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index c35135e..dfd9b80 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -2487,6 +2487,22 @@ VSX_CVT_FP_TO_FP(xscvspdp, 1, float32, float64, f32[j], f64[i], 1)
VSX_CVT_FP_TO_FP(xvcvdpsp, 2, float64, float32, f64[i], f32[j], 0)
VSX_CVT_FP_TO_FP(xvcvspdp, 2, float32, float64, f32[j], f64[i], 0)
+uint64_t helper_xscvdpspn(CPUPPCState *env, uint64_t xb)
+{
+ float_status tstat = env->fp_status;
+ set_float_exception_flags(0, &tstat);
+
+ return (uint64_t)float64_to_float32(xb, &tstat) << 32;
+}
+
+uint64_t helper_xscvspdpn(CPUPPCState *env, uint64_t xb)
+{
+ float_status tstat = env->fp_status;
+ set_float_exception_flags(0, &tstat);
+
+ return float32_to_float64(xb >> 32, &tstat);
+}
+
/* VSX_CVT_FP_TO_INT - VSX floating point to integer conversion
* op - instruction mnemonic
* nels - number of elements (1, 2 or 4)
diff --git a/target-ppc/helper.h b/target-ppc/helper.h
index 1654589..0976930 100644
--- a/target-ppc/helper.h
+++ b/target-ppc/helper.h
@@ -273,7 +273,9 @@ DEF_HELPER_2(xscmpudp, void, env, i32)
DEF_HELPER_2(xsmaxdp, void, env, i32)
DEF_HELPER_2(xsmindp, void, env, i32)
DEF_HELPER_2(xscvdpsp, void, env, i32)
+DEF_HELPER_2(xscvdpspn, i64, env, i64)
DEF_HELPER_2(xscvspdp, void, env, i32)
+DEF_HELPER_2(xscvspdpn, i64, env, i64)
DEF_HELPER_2(xscvdpsxds, void, env, i32)
DEF_HELPER_2(xscvdpsxws, void, env, i32)
DEF_HELPER_2(xscvdpuxds, void, env, i32)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 2c9b50a..6ebc696 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -7437,7 +7437,9 @@ GEN_VSX_HELPER_2(xscmpudp, 0x0C, 0x04, 0, PPC2_VSX)
GEN_VSX_HELPER_2(xsmaxdp, 0x00, 0x14, 0, PPC2_VSX)
GEN_VSX_HELPER_2(xsmindp, 0x00, 0x15, 0, PPC2_VSX)
GEN_VSX_HELPER_2(xscvdpsp, 0x12, 0x10, 0, PPC2_VSX)
+GEN_VSX_HELPER_XT_XB_ENV(xscvdpspn, 0x16, 0x10, 0, PPC2_VSX207)
GEN_VSX_HELPER_2(xscvspdp, 0x12, 0x14, 0, PPC2_VSX)
+GEN_VSX_HELPER_XT_XB_ENV(xscvspdpn, 0x16, 0x14, 0, PPC2_VSX207)
GEN_VSX_HELPER_2(xscvdpsxds, 0x10, 0x15, 0, PPC2_VSX)
GEN_VSX_HELPER_2(xscvdpsxws, 0x10, 0x05, 0, PPC2_VSX)
GEN_VSX_HELPER_2(xscvdpuxds, 0x10, 0x14, 0, PPC2_VSX)
@@ -10275,7 +10277,9 @@ GEN_XX2FORM(xscmpudp, 0x0C, 0x04, PPC2_VSX),
GEN_XX3FORM(xsmaxdp, 0x00, 0x14, PPC2_VSX),
GEN_XX3FORM(xsmindp, 0x00, 0x15, PPC2_VSX),
GEN_XX2FORM(xscvdpsp, 0x12, 0x10, PPC2_VSX),
+GEN_XX2FORM(xscvdpspn, 0x16, 0x10, PPC2_VSX207),
GEN_XX2FORM(xscvspdp, 0x12, 0x14, PPC2_VSX),
+GEN_XX2FORM(xscvspdpn, 0x16, 0x14, PPC2_VSX207),
GEN_XX2FORM(xscvdpsxds, 0x10, 0x15, PPC2_VSX),
GEN_XX2FORM(xscvdpsxws, 0x10, 0x05, PPC2_VSX),
GEN_XX2FORM(xscvdpuxds, 0x10, 0x14, PPC2_VSX),
--
1.7.1
next prev parent reply other threads:[~2014-01-15 14:11 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 14:10 [Qemu-devel] [V7 PATCH 00/18] target-ppc: VSX Stage 4 Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 01/18] target-ppc: VSX Stage 4: Add VSX 2.07 Flag Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 02/18] target-ppc: VSX Stage 4: Refactor lxsdx Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 03/18] target-ppc: VSX Stage 4: Add lxsiwax, lxsiwzx and lxsspx Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 04/18] target-ppc: VSX Stage 4: Refactor stxsdx Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 05/18] target-ppc: VSX Stage 4: Add stxsiwx and stxsspx Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 06/18] target-ppc: VSX Stage 4: Add xsaddsp and xssubsp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 07/18] target-ppc: VSX Stage 4: Add xsmulsp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 08/18] target-ppc: VSX Stage 4: Add xsdivsp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 09/18] target-ppc: VSX Stage 4: Add xsresp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 10/18] target-ppc: VSX Stage 4: Add xssqrtsp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 11/18] target-ppc: VSX Stage 4: add xsrsqrtesp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 12/18] target-ppc: VSX Stage 4: Add Scalar SP Fused Multiply-Adds Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 13/18] target-ppc: VSX Stage 4: Add xscvsxdsp and xscvuxdsp Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 14/18] target-ppc: VSX Stage 4: Add xxleqv, xxlnand and xxlorc Tom Musta
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 15/18] target-ppc: Move To/From VSR Instructions Tom Musta
2014-01-15 21:28 ` Richard Henderson
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 16/18] target-ppc: Floating Merge Word Instructions Tom Musta
2014-01-15 21:21 ` Richard Henderson
2014-01-15 14:10 ` [Qemu-devel] [V7 PATCH 17/18] target-ppc: Scalar Round to Single Precision Tom Musta
2014-01-15 21:22 ` Richard Henderson
2014-01-15 14:10 ` Tom Musta [this message]
2014-01-15 21:26 ` [Qemu-devel] [V7 PATCH 18/18] target-ppc: Scalar Non-Signalling Conversions Richard Henderson
2014-01-27 15:52 ` [Qemu-devel] [Qemu-ppc] [V7 PATCH 00/18] target-ppc: VSX Stage 4 Alexander Graf
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=1389795045-5504-19-git-send-email-tommusta@gmail.com \
--to=tommusta@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/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).