From: Stefan Weil <sw@weilnetz.de>
To: Alexander Graf <agraf@suse.de>, QEMU Developers <qemu-devel@nongnu.org>
Cc: Tom Musta <tommusta@gmail.com>,
"qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>,
Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [Qemu-devel] [PULL 25/32] Add xxsel
Date: Fri, 20 Dec 2013 07:54:10 +0100 [thread overview]
Message-ID: <52B3E992.8010104@weilnetz.de> (raw)
In-Reply-To: <1387501254-60704-26-git-send-email-agraf@suse.de>
Hi,
this patch or one of the two following patches breaks compilation with
--enable-debug (lots of TCGv_i32 - TCGv_i64 mismatches).
Cheers,
Stefan
Am 20.12.2013 02:00, schrieb Alexander Graf:
> From: Tom Musta <tommusta@gmail.com>
>
> This patch adds the VSX Select (xxsel) instruction.
>
> The xxsel instruction has four VSR operands. Thus the xC
> instruction decoder is added.
>
> The xxsel instruction is massively overloaded in the opcode
> table since only bits 26 and 27 are opcode bits. This
> overloading is done in matrix fashion with two macros
> (GEN_XXSEL_ROW and GEN_XX_SEL).
>
> V2: (1) eliminated unecessary XXSEL macro (2) tighter implementation
> using tcg_gen_andc_i64.
>
> Signed-off-by: Tom Musta <tommusta@gmail.com>
> Reviewed-by: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
> target-ppc/translate.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 76 insertions(+)
>
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index 75226fa..e5d7f9d 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -497,6 +497,7 @@ EXTRACT_HELPER_SPLIT(xT, 0, 1, 21, 5);
> EXTRACT_HELPER_SPLIT(xS, 0, 1, 21, 5);
> EXTRACT_HELPER_SPLIT(xA, 2, 1, 16, 5);
> EXTRACT_HELPER_SPLIT(xB, 1, 1, 11, 5);
> +EXTRACT_HELPER_SPLIT(xC, 3, 1, 6, 5);
> EXTRACT_HELPER(DM, 8, 2);
> /*****************************************************************************/
> /* PowerPC instructions table */
> @@ -7325,6 +7326,38 @@ static void glue(gen_, name)(DisasContext * ctx) \
> VSX_XXMRG(xxmrghw, 1)
> VSX_XXMRG(xxmrglw, 0)
>
> +static void gen_xxsel(DisasContext * ctx)
> +{
> + TCGv_i64 a, b, c;
> + if (unlikely(!ctx->vsx_enabled)) {
> + gen_exception(ctx, POWERPC_EXCP_VSXU);
> + return;
> + }
> + a = tcg_temp_new();
> + b = tcg_temp_new();
> + c = tcg_temp_new();
> +
> + tcg_gen_mov_i64(a, cpu_vsrh(xA(ctx->opcode)));
> + tcg_gen_mov_i64(b, cpu_vsrh(xB(ctx->opcode)));
> + tcg_gen_mov_i64(c, cpu_vsrh(xC(ctx->opcode)));
> +
> + tcg_gen_and_i64(b, b, c);
> + tcg_gen_andc_i64(a, a, c);
> + tcg_gen_or_i64(cpu_vsrh(xT(ctx->opcode)), a, b);
> +
> + tcg_gen_mov_i64(a, cpu_vsrl(xA(ctx->opcode)));
> + tcg_gen_mov_i64(b, cpu_vsrl(xB(ctx->opcode)));
> + tcg_gen_mov_i64(c, cpu_vsrl(xC(ctx->opcode)));
> +
> + tcg_gen_and_i64(b, b, c);
> + tcg_gen_andc_i64(a, a, c);
> + tcg_gen_or_i64(cpu_vsrl(xT(ctx->opcode)), a, b);
> +
> + tcg_temp_free(a);
> + tcg_temp_free(b);
> + tcg_temp_free(c);
> +}
> +
>
> /*** SPE extension ***/
> /* Register moves */
> @@ -9840,6 +9873,49 @@ VSX_LOGICAL(xxlnor, 0x8, 0x14, PPC2_VSX),
> GEN_XX3FORM(xxmrghw, 0x08, 0x02, PPC2_VSX),
> GEN_XX3FORM(xxmrglw, 0x08, 0x06, PPC2_VSX),
>
> +#define GEN_XXSEL_ROW(opc3) \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x18, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x19, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1A, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1B, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1C, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1D, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1E, opc3, 0, PPC_NONE, PPC2_VSX), \
> +GEN_HANDLER2_E(xxsel, "xxsel", 0x3C, 0x1F, opc3, 0, PPC_NONE, PPC2_VSX), \
> +
> +GEN_XXSEL_ROW(0x00)
> +GEN_XXSEL_ROW(0x01)
> +GEN_XXSEL_ROW(0x02)
> +GEN_XXSEL_ROW(0x03)
> +GEN_XXSEL_ROW(0x04)
> +GEN_XXSEL_ROW(0x05)
> +GEN_XXSEL_ROW(0x06)
> +GEN_XXSEL_ROW(0x07)
> +GEN_XXSEL_ROW(0x08)
> +GEN_XXSEL_ROW(0x09)
> +GEN_XXSEL_ROW(0x0A)
> +GEN_XXSEL_ROW(0x0B)
> +GEN_XXSEL_ROW(0x0C)
> +GEN_XXSEL_ROW(0x0D)
> +GEN_XXSEL_ROW(0x0E)
> +GEN_XXSEL_ROW(0x0F)
> +GEN_XXSEL_ROW(0x10)
> +GEN_XXSEL_ROW(0x11)
> +GEN_XXSEL_ROW(0x12)
> +GEN_XXSEL_ROW(0x13)
> +GEN_XXSEL_ROW(0x14)
> +GEN_XXSEL_ROW(0x15)
> +GEN_XXSEL_ROW(0x16)
> +GEN_XXSEL_ROW(0x17)
> +GEN_XXSEL_ROW(0x18)
> +GEN_XXSEL_ROW(0x19)
> +GEN_XXSEL_ROW(0x1A)
> +GEN_XXSEL_ROW(0x1B)
> +GEN_XXSEL_ROW(0x1C)
> +GEN_XXSEL_ROW(0x1D)
> +GEN_XXSEL_ROW(0x1E)
> +GEN_XXSEL_ROW(0x1F)
> +
> GEN_XX3FORM_DM(xxpermdi, 0x08, 0x01),
>
> #undef GEN_SPE
next prev parent reply other threads:[~2013-12-20 6:54 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-20 1:00 [Qemu-devel] [PULL 00/32] ppc patch queue 2013-12-20 Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 01/32] target-ppc: add stubs for KVM breakpoints Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 02/32] powerpc: add PVR mask support Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 03/32] Declare and Enable VSX Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 04/32] Add MSR VSX and Associated Exception Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 05/32] Add VSX Instruction Decoders Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 06/32] Add VSR to Global Registers Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 07/32] Add lxvd2x Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 08/32] Add stxvd2x Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 09/32] Add xxpermdi Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 10/32] Add lxsdx Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 11/32] Add lxvdsx Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 12/32] Add lxvw4x Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 13/32] Add stxsdx Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 14/32] Add stxvw4x Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 15/32] target-ppc: move POWER7+ to a separate family Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 16/32] spapr-rtas: replace return code constants with macros Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 17/32] spapr-rtas: add ibm, (get|set)-system-parameter Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 18/32] PPC: Use default pci bus name for grackle and heathrow Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 19/32] spapr: tie spapr-nvram to -pflash Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 20/32] roms: Flush icache when writing roms to guest memory Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 21/32] Add VSX Scalar Move Instructions Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 22/32] Add VSX Vector " Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 23/32] Add Power7 VSX Logical Instructions Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 24/32] Add xxmrgh/xxmrgl Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 25/32] Add xxsel Alexander Graf
2013-12-20 6:54 ` Stefan Weil [this message]
2013-12-20 9:26 ` Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 26/32] Add xxspltw Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 27/32] Add xxsldwi Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 28/32] PPC: Add VSX to hflags Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 29/32] device_tree: s/qemu_devtree/qemu_fdt globally Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 30/32] device_tree: qemu_fdt_setprop: Rename val_array arg Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 31/32] spapr: make sure RMA is in first mode of first memory node Alexander Graf
2013-12-20 1:00 ` [Qemu-devel] [PULL 32/32] spapr: limit numa memory regions by ram size Alexander Graf
2013-12-23 18:08 ` [Qemu-devel] [PULL 00/32] ppc patch queue 2013-12-20 Andreas Färber
2013-12-23 18:10 ` Alexander Graf
2013-12-24 15:19 ` Tom Musta
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=52B3E992.8010104@weilnetz.de \
--to=sw@weilnetz.de \
--cc=agraf@suse.de \
--cc=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=tommusta@gmail.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 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.