[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 4/4] target-tilegx: Integrate floating pointe
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH v3 4/4] target-tilegx: Integrate floating pointer implementation |
Date: |
Thu, 10 Dec 2015 13:37:18 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 |
On 12/10/2015 06:16 AM, Chen Gang wrote:
>
> It passes normal building, and gcc testsuite.
>
> Signed-off-by: Chen Gang <address@hidden>
> ---
> target-tilegx/Makefile.objs | 3 +-
> target-tilegx/cpu.h | 2 ++
> target-tilegx/helper.h | 12 ++++++++
> target-tilegx/translate.c | 68
> +++++++++++++++++++++++++++++++++++++++------
> 4 files changed, 75 insertions(+), 10 deletions(-)
>
> diff --git a/target-tilegx/Makefile.objs b/target-tilegx/Makefile.objs
> index 0db778f..136ad60 100644
> --- a/target-tilegx/Makefile.objs
> +++ b/target-tilegx/Makefile.objs
> @@ -1 +1,2 @@
> -obj-y += cpu.o translate.o helper.o simd_helper.o
> +obj-y += cpu.o translate.o helper.o simd_helper.o \
> + helper-fsingle.o helper-fdouble.o
> diff --git a/target-tilegx/cpu.h b/target-tilegx/cpu.h
> index 03df107..445a606 100644
> --- a/target-tilegx/cpu.h
> +++ b/target-tilegx/cpu.h
> @@ -88,6 +88,8 @@ typedef struct CPUTLGState {
> uint64_t spregs[TILEGX_SPR_COUNT]; /* Special used registers by outside
> */
> uint64_t pc; /* Current pc */
>
> + float_status fp_status; /* floating point status */
As mentioned elsewhere, this is pointless.
> + case OE_RR_X0(FSINGLE_PACK1):
> + case OE_RR_Y0(FSINGLE_PACK1):
> + mnemonic = "fsingle_pack1";
> + goto done2;
This could use a comment that we're "copying" dest to dest.
> @@ -742,13 +745,21 @@ static TileExcp gen_rr_opcode(DisasContext *dc,
> unsigned opext,
> static TileExcp gen_rrr_opcode(DisasContext *dc, unsigned opext,
> unsigned dest, unsigned srca, unsigned srcb)
> {
> - TCGv tdest = dest_gr(dc, dest);
> - TCGv tsrca = load_gr(dc, srca);
> - TCGv tsrcb = load_gr(dc, srcb);
> + TCGv tdest, tsrca, tsrcb;
> TCGv t0;
> const char *mnemonic;
>
> switch (opext) {
> + case OE_RRR(FSINGLE_ADDSUB2, 0, X0):
> + mnemonic = "fsingle_addsub2";
> + goto done2;
> + }
Likewise.
r~