From: Tom Musta <tommusta@gmail.com>
To: qemu-devel@nongnu.org
Cc: Tom Musta <tommusta@gmail.com>, qemu-ppc@nongnu.org
Subject: [Qemu-devel] [PATCH 19/28] target-ppc: Altivec 2.07: Vector Doubleword Rotate and Shift Instructions
Date: Wed, 12 Feb 2014 15:23:10 -0600 [thread overview]
Message-ID: <1392240199-2454-20-git-send-email-tommusta@gmail.com> (raw)
In-Reply-To: <1392240199-2454-1-git-send-email-tommusta@gmail.com>
This patch adds the vector doublword rotate and shift instructions
introduced in Power ISA Version 2.07:
- Vector Rotate Left Doubleword instruction (vrld)
- Vector Shift Left Doubleword (vsld)
- Vector Shift Right Doubleword (vsrd)
- Vector Shift Right Algegbraic Doubleword (vsrad)
Signed-off-by: Tom Musta <tommusta@gmail.com>
---
target-ppc/helper.h | 4 ++++
target-ppc/int_helper.c | 4 ++++
target-ppc/translate.c | 8 ++++++++
3 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/target-ppc/helper.h b/target-ppc/helper.h
index 6a7e99f..3201268 100644
--- a/target-ppc/helper.h
+++ b/target-ppc/helper.h
@@ -184,12 +184,15 @@ DEF_HELPER_3(vmuluwm, void, avr, avr, avr)
DEF_HELPER_3(vsrab, void, avr, avr, avr)
DEF_HELPER_3(vsrah, void, avr, avr, avr)
DEF_HELPER_3(vsraw, void, avr, avr, avr)
+DEF_HELPER_3(vsrad, void, avr, avr, avr)
DEF_HELPER_3(vsrb, void, avr, avr, avr)
DEF_HELPER_3(vsrh, void, avr, avr, avr)
DEF_HELPER_3(vsrw, void, avr, avr, avr)
+DEF_HELPER_3(vsrd, void, avr, avr, avr)
DEF_HELPER_3(vslb, void, avr, avr, avr)
DEF_HELPER_3(vslh, void, avr, avr, avr)
DEF_HELPER_3(vslw, void, avr, avr, avr)
+DEF_HELPER_3(vsld, void, avr, avr, avr)
DEF_HELPER_3(vslo, void, avr, avr, avr)
DEF_HELPER_3(vsro, void, avr, avr, avr)
DEF_HELPER_3(vaddcuw, void, avr, avr, avr)
@@ -211,6 +214,7 @@ DEF_HELPER_4(vsubuws, void, env, avr, avr, avr)
DEF_HELPER_3(vrlb, void, avr, avr, avr)
DEF_HELPER_3(vrlh, void, avr, avr, avr)
DEF_HELPER_3(vrlw, void, avr, avr, avr)
+DEF_HELPER_3(vrld, void, avr, avr, avr)
DEF_HELPER_3(vsl, void, avr, avr, avr)
DEF_HELPER_3(vsr, void, avr, avr, avr)
DEF_HELPER_4(vsldoi, void, avr, avr, avr, i32)
diff --git a/target-ppc/int_helper.c b/target-ppc/int_helper.c
index 59b5a1f..b4a7298 100644
--- a/target-ppc/int_helper.c
+++ b/target-ppc/int_helper.c
@@ -1142,6 +1142,7 @@ VRFI(z, float_round_to_zero)
VROTATE(b, u8, 0x7)
VROTATE(h, u16, 0xF)
VROTATE(w, u32, 0x1F)
+VROTATE(d, u64, 0x3F)
#undef VROTATE
void helper_vrsqrtefp(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *b)
@@ -1236,6 +1237,7 @@ VSHIFT(r, RIGHT)
VSL(b, u8, 0x7)
VSL(h, u16, 0x0F)
VSL(w, u32, 0x1F)
+VSL(d, u64, 0x3F)
#undef VSL
void helper_vsldoi(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, uint32_t shift)
@@ -1332,9 +1334,11 @@ VSPLTI(w, s32, int32_t)
VSR(ab, s8, 0x7)
VSR(ah, s16, 0xF)
VSR(aw, s32, 0x1F)
+VSR(ad, s64, 0x3F)
VSR(b, u8, 0x7)
VSR(h, u16, 0xF)
VSR(w, u32, 0x1F)
+VSR(d, u64, 0x3F)
#undef VSR
void helper_vsro(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 4d3c73d..561d22d 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -7016,12 +7016,15 @@ GEN_VXFORM(vmulesw, 4, 14);
GEN_VXFORM(vslb, 2, 4);
GEN_VXFORM(vslh, 2, 5);
GEN_VXFORM(vslw, 2, 6);
+GEN_VXFORM(vsld, 2, 23);
GEN_VXFORM(vsrb, 2, 8);
GEN_VXFORM(vsrh, 2, 9);
GEN_VXFORM(vsrw, 2, 10);
+GEN_VXFORM(vsrd, 2, 27);
GEN_VXFORM(vsrab, 2, 12);
GEN_VXFORM(vsrah, 2, 13);
GEN_VXFORM(vsraw, 2, 14);
+GEN_VXFORM(vsrad, 2, 15);
GEN_VXFORM(vslo, 6, 16);
GEN_VXFORM(vsro, 6, 17);
GEN_VXFORM(vaddcuw, 0, 6);
@@ -7041,6 +7044,7 @@ GEN_VXFORM_ENV(vsubsws, 0, 30);
GEN_VXFORM(vrlb, 2, 0);
GEN_VXFORM(vrlh, 2, 1);
GEN_VXFORM(vrlw, 2, 2);
+GEN_VXFORM(vrld, 2, 3);
GEN_VXFORM(vsl, 2, 7);
GEN_VXFORM(vsr, 2, 11);
GEN_VXFORM_ENV(vpkuhum, 7, 0);
@@ -10432,12 +10436,15 @@ GEN_VXFORM_207(vmulesw, 4, 14),
GEN_VXFORM(vslb, 2, 4),
GEN_VXFORM(vslh, 2, 5),
GEN_VXFORM(vslw, 2, 6),
+GEN_VXFORM_207(vsld, 2, 23),
GEN_VXFORM(vsrb, 2, 8),
GEN_VXFORM(vsrh, 2, 9),
GEN_VXFORM(vsrw, 2, 10),
+GEN_VXFORM_207(vsrd, 2, 27),
GEN_VXFORM(vsrab, 2, 12),
GEN_VXFORM(vsrah, 2, 13),
GEN_VXFORM(vsraw, 2, 14),
+GEN_VXFORM_207(vsrad, 2, 15),
GEN_VXFORM(vslo, 6, 16),
GEN_VXFORM(vsro, 6, 17),
GEN_VXFORM(vaddcuw, 0, 6),
@@ -10457,6 +10464,7 @@ GEN_VXFORM(vsubsws, 0, 30),
GEN_VXFORM(vrlb, 2, 0),
GEN_VXFORM(vrlh, 2, 1),
GEN_VXFORM(vrlw, 2, 2),
+GEN_VXFORM_207(vrld, 2, 3),
GEN_VXFORM(vsl, 2, 7),
GEN_VXFORM(vsr, 2, 11),
GEN_VXFORM(vpkuhum, 7, 0),
--
1.7.1
next prev parent reply other threads:[~2014-02-12 21:24 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-12 21:22 [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07 Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 01/28] target-ppc: Altivec 2.07: Add Instruction Flag Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 02/28] target-ppc: Altivec 2.07: Update AVR Structure Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 03/28] target-ppc: Altivec 2.07: Add GEN_VXFORM3 Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 04/28] target-ppc: Altivec 2.07: Add Support for Dual Altivec Instructions Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 05/28] target-ppc: Altivec 2.07: Add Opcode Macro for VX Form Instructions Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 06/28] target-ppc: Altivec 2.07: Add Support for R-Form Dual Instructions Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 07/28] target-ppc: Altivec 2.07: Vector Logical Instructions Tom Musta
2014-02-12 21:22 ` [Qemu-devel] [PATCH 08/28] target-ppc: Altivec 2.07: Add/Subtract Unsigned Doubleword Modulo Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 09/28] target-ppc: Altivec 2.07: Change VMUL_DO to Support 64-bit Integers Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 10/28] target-ppc: Altivec 2.07: Multiply Even/Odd Word Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 11/28] target-ppc: Altivec 2.07: vmuluw Instruction Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 12/28] target-ppc: Altivec 2.07: Add Vector Count Leading Zeroes Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 13/28] target-ppc: Altivec 2.07: Vector Population Count Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 14/28] target-ppc: Altivec 2.07: Vector Min/Max Doubleword Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 15/28] target-ppc: Altivec 2.07: Pack " Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 16/28] target-ppc: Altivec 2.07: Unpack Signed Word Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 17/28] target-ppc: Altivec 2.07: Vector Merge Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 18/28] target-ppc: Altivec 2.07: Change Bit Masks to Support 64-bit Rotates and Shifts Tom Musta
2014-02-12 21:23 ` Tom Musta [this message]
2014-02-12 21:23 ` [Qemu-devel] [PATCH 20/28] target-ppc: Altivec 2.07: Quadword Addition and Subtracation Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 21/28] target-ppc: Altivec 2.07: vbpermq Instruction Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 22/28] target-ppc: Altivec 2.07: Doubleword Compares Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 23/28] target-ppc: Altivec 2.07: Vector Gather Bits by Bytes Tom Musta
2014-02-24 17:16 ` Richard Henderson
2014-02-12 21:23 ` [Qemu-devel] [PATCH 24/28] target-ppc: Altivec 2.07: Vector Polynomial Multiply Sum Tom Musta
2014-02-24 18:11 ` Richard Henderson
2014-02-12 21:23 ` [Qemu-devel] [PATCH 25/28] target-ppc: Altivec 2.07: Binary Coded Decimal Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 26/28] target-ppc: Altivec 2.07: AES Instructions Tom Musta
2014-02-24 17:59 ` Richard Henderson
2014-02-24 18:11 ` Peter Maydell
2014-02-24 18:22 ` Richard Henderson
2014-02-26 19:22 ` Tom Musta
2014-02-26 22:06 ` Tom Musta
2014-02-26 22:26 ` Richard Henderson
2014-02-12 21:23 ` [Qemu-devel] [PATCH 27/28] target-ppc: Altivec 2.07: Vector SHA Sigma Instructions Tom Musta
2014-02-12 21:23 ` [Qemu-devel] [PATCH 28/28] target-ppc: Altivec 2.07: Vector Permute and Exclusive OR Tom Musta
2014-02-18 18:52 ` [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07 Richard W.M. Jones
2014-02-18 23:27 ` Tom Musta
2014-02-20 10:23 ` Richard W.M. Jones
2014-02-20 12:34 ` Richard W.M. Jones
2014-02-20 12:36 ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2014-02-20 12:47 ` Richard W.M. Jones
2014-02-21 10:55 ` Aneesh Kumar K.V
2014-02-21 11:21 ` Avik Sil
2014-02-21 11:48 ` Alexander Graf
2014-02-21 11:53 ` Peter Maydell
2014-02-21 12:04 ` Alexander Graf
2014-02-21 12:20 ` Peter Maydell
2014-02-26 11:50 ` Nikunj A Dadhania
2014-02-26 11:58 ` Nikunj A Dadhania
2014-02-20 14:44 ` [Qemu-devel] " Thomas Huth
2014-02-20 14:52 ` Richard W.M. Jones
2014-02-24 6:32 ` [Qemu-devel] [Qemu-ppc] " Nikunj A Dadhania
2014-02-20 15:00 ` 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=1392240199-2454-20-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).