All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Froyd <froydnj@codesourcery.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 01/42] target-ppc: add Altivec logical operations.
Date: Tue, 16 Dec 2008 11:51:35 -0800	[thread overview]
Message-ID: <20081216195135.GC24654@codesourcery.com> (raw)
In-Reply-To: <20081215221152.GE8523@volta.aurel32.net>

On Mon, Dec 15, 2008 at 11:11:52PM +0100, Aurelien Jarno wrote:
> On Sun, Dec 14, 2008 at 06:14:34PM -0800, Nathan Froyd wrote:
> > +GEN_VX_LOGICAL(vand, tcg_gen_and_i64, 1028);
> > +GEN_VX_LOGICAL(vandc, tcg_gen_andc_i64, 1092);
> > +GEN_VX_LOGICAL(vor, tcg_gen_or_i64, 1156);
> > +GEN_VX_LOGICAL(vxor, tcg_gen_xor_i64, 1220);
> > +GEN_VX_LOGICAL(vnor, tcg_gen_nor_i64, 1284);
> 
> I know those decimal value comes from the PowerPC manual, but the whole
> QEMU code uses hexadecimal values instead. Also it is usually passed
> directly as opc2 and opc3 values. I guess it is better to continue like
> that for consistencies.
> 
> Otherwise the patch looks good, I'll apply it when that is fixed.

Updated patch below.  I suppose this means redoing a good chunk of the
remainder of the patch series, since the convenience macros use the XO
field approach instead of opc2/opc3, eh?

-Nathan

Signed-off-by: Nathan Froyd <froydnj@codesourcery.com>
---
Use opc2/opc3 instead of one big xo field.  Do this consistency with the
rest of translate.c
---
 target-ppc/translate.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 4c4f9ef..0d1fd57 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -6109,6 +6109,24 @@ GEN_VR_STX(svx, 0x07, 0x07);
 /* As we don't emulate the cache, stvxl is stricly equivalent to stvx */
 GEN_VR_STX(svxl, 0x07, 0x0F);
 
+/* Logical operations */
+#define GEN_VX_LOGICAL(name, tcg_op, opc2, opc3)                        \
+GEN_HANDLER(name, 0x04, opc2, opc3, 0x00000000, PPC_ALTIVEC)            \
+{                                                                       \
+    if (unlikely(!ctx->altivec_enabled)) {                              \
+        gen_exception(ctx, POWERPC_EXCP_VPU);                           \
+        return;                                                         \
+    }                                                                   \
+    tcg_op(cpu_avrh[rD(ctx->opcode)], cpu_avrh[rA(ctx->opcode)], cpu_avrh[rB(ctx->opcode)]); \
+    tcg_op(cpu_avrl[rD(ctx->opcode)], cpu_avrl[rA(ctx->opcode)], cpu_avrl[rB(ctx->opcode)]); \
+}
+
+GEN_VX_LOGICAL(vand, tcg_gen_and_i64, 2, 16);
+GEN_VX_LOGICAL(vandc, tcg_gen_andc_i64, 2, 17);
+GEN_VX_LOGICAL(vor, tcg_gen_or_i64, 2, 18);
+GEN_VX_LOGICAL(vxor, tcg_gen_xor_i64, 2, 19);
+GEN_VX_LOGICAL(vnor, tcg_gen_nor_i64, 2, 20);
+
 /***                           SPE extension                               ***/
 /* Register moves */
 
-- 
1.6.0.5

  reply	other threads:[~2008-12-16 19:51 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-15  2:14 [Qemu-devel] [PATCH] target-ppc: add Altivec instructions, patch-bomb version Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 01/42] target-ppc: add Altivec logical operations Nathan Froyd
2008-12-15 22:11   ` Aurelien Jarno
2008-12-16 19:51     ` Nathan Froyd [this message]
2008-12-18 22:48       ` Aurelien Jarno
2008-12-15  2:14 ` [Qemu-devel] [PATCH 02/42] target-ppc: add helper macros for later patches Nathan Froyd
2008-12-15 22:15   ` Aurelien Jarno
2008-12-16 15:25   ` Aurelien Jarno
2008-12-15  2:14 ` [Qemu-devel] [PATCH 03/42] target-ppc: add gen_avr_ptr function Nathan Froyd
2008-12-15 22:16   ` Aurelien Jarno
2008-12-15 22:41     ` Aurelien Jarno
2008-12-15 23:13     ` Paul Brook
2008-12-18 22:51   ` Aurelien Jarno
2008-12-15  2:14 ` [Qemu-devel] [PATCH 04/42] target-ppc: add GEN_VXFORM macro for subsequent instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 05/42] target-ppc: add v{add, sub}u{b, h, w}m instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 06/42] target-ppc: add signed fields to ppc_avr_t Nathan Froyd
2008-12-15  7:04   ` Aurelien Jarno
2008-12-15  2:14 ` [Qemu-devel] [PATCH 07/42] target-ppc: add vavg{s, u}{b, h, w} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 08/42] target-ppc: add v{min, max}{s, " Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 09/42] target-ppc: add GEN_VXRFORM{, 1} macros for subsequent instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 10/42] target-ppc: add vcmpequ{b, h, w} and vcmpgt{s, u}{b, h, w} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 11/42] target-ppc: add vscr access macros Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 12/42] target-ppc: add vmrg{l, h}{b, h, w} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 13/42] target-ppc: add vmul{e, o}{s, u}{b, h} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 14/42] target-ppc: add vsr{, a}{b, h, w} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 15/42] target-ppc: add vsl{b, " Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 16/42] target-ppc: add vs{l,r}o instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 17/42] target-ppc: add v{add, sub}cuw instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 18/42] target-ppc: add lvs{l,r} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 19/42] target-ppc: add m{f, t}vscr instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 20/42] target-ppc: add v{add, sub}{s, u}{b, h, w}s instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 21/42] target-ppc: add vrl{b, h, w} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 22/42] target-ppc: add vs{l,r} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 23/42] target-ppc: add vsldoi instruction Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 24/42] target-ppc: add GEN_VXFORM_SIMM macro for subsequent instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 25/42] target-ppc: add vspltis{b, h, w} instructions Nathan Froyd
2008-12-15  2:14 ` [Qemu-devel] [PATCH 26/42] target-ppc: add GEN_VXFORM_UIMM macro for subsequent instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 27/42] target-ppc: add vsplt{b, h, w} instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 28/42] target-ppc: add GEN_VXFORM_NOA macro for subsequent instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 29/42] target-ppc: add vupk{h, l}px instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 30/42] target-ppc: add vupk{h, l}s{b, h} instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 31/42] target-ppc: add GEN_VAFORM_PAIRED macro for subsequent instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 32/42] target-ppc: add vmsum{u, m}bm instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 33/42] target-ppc: add vsel and vperm instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 34/42] target-ppc: add saturating arithmetic conversion functions for subsequent instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 35/42] target-ppc: add vpks{h, w}{s, u}s, vpku{h, w}us, and vpku{h, w}um instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 36/42] target-ppc: add vpkpx instruction Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 37/42] target-ppc: add vmh{, r}addshs instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 38/42] target-ppc: add vmsumuh{m, s} instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 39/42] target-ppc: add vmsumsh{m, " Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 40/42] target-ppc: add vmladduhm instruction Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 41/42] target-ppc: add {l, st}ve{b, h, w}x instructions Nathan Froyd
2008-12-15  2:15 ` [Qemu-devel] [PATCH 42/42] target-ppc: add vsumsws, vsum2sws, and vsum4{sbs, shs, ubs} instructions Nathan Froyd
2008-12-15  6:40 ` [Qemu-devel] [PATCH] target-ppc: add Altivec instructions, patch-bomb version Aurelien Jarno
2008-12-15  7:11   ` Laurent Desnogues
2008-12-15 17:38   ` Nathan Froyd

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=20081216195135.GC24654@codesourcery.com \
    --to=froydnj@codesourcery.com \
    --cc=qemu-devel@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 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.