All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
To: Richard Henderson <rth@twiddle.net>,
	qemu-ppc@nongnu.org, david@gibson.dropbear.id.au
Cc: qemu-devel@nongnu.org, bharata@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH v1 07/10] target/ppc: update ov/ov32 for nego
Date: Wed, 22 Feb 2017 15:53:14 +0530	[thread overview]
Message-ID: <87fuj6bk31.fsf@abhimanyu.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <77aa30af-6e2e-4a44-f293-05ab00d05c8e@twiddle.net>

Richard Henderson <rth@twiddle.net> writes:

> On 02/22/2017 02:53 PM, Nikunj A Dadhania wrote:
>> Richard Henderson <rth@twiddle.net> writes:
>>
>>> On 02/21/2017 08:26 PM, Nikunj A Dadhania wrote:
>>>> Richard Henderson <rth@twiddle.net> writes:
>>>>
>>>>> On 02/20/2017 09:11 PM, Nikunj A Dadhania wrote:
>>>>>> For 64-bit mode if the register RA contains 0x8000_0000_0000_0000, OV
>>>>>> and OV32 are set to 1.
>>>>>>
>>>>>> For 32-bit mode if the register RA contains 0x8000_0000, OV and OV32 are
>>>>>> set to 1.
>>>>>>
>>>>>> Use the tcg-ops for negation (neg_tl) and drop gen_op_arith_neg() as
>>>>>> nego was the last user.
>>>>>>
>>>>>> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
>>>>> @@ -1488,7 +1480,20 @@ static void gen_neg(DisasContext *ctx)
>>>>>>
>>>>>>  static void gen_nego(DisasContext *ctx)
>>>>>>  {
>>>>>> -    gen_op_arith_neg(ctx, 1);
>>>>>> +    TCGv t0 = tcg_temp_new();
>>>>>> +    TCGv zero = tcg_const_tl(0);
>>>>>> +
>>>>>> +    if (NARROW_MODE(ctx)) {
>>>>>> +        tcg_gen_xori_tl(t0, cpu_gpr[rA(ctx->opcode)], INT32_MIN);
>>>>>> +    } else {
>>>>>> +        tcg_gen_xori_tl(t0, cpu_gpr[rA(ctx->opcode)], (target_ulong)INT64_MIN);
>>>>>> +    }
>>>>>> +
>>>>>> +    tcg_gen_setcond_tl(TCG_COND_EQ, cpu_ov, t0, zero);
>>>>>> +    tcg_gen_mov_tl(cpu_ov32, cpu_ov);
>>>>>> +    tcg_gen_neg_tl(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)]);
>>>>>> +    tcg_temp_free(t0);
>>>>>> +    tcg_temp_free(zero);
>>>>>>  }
>>>>>
>>>>> Again, you're forgetting "nego.".  Don't try to simplify from gen_op_arith_subf
>>>>> by hand.
>>>>
>>>> The reason of the simplification was the interpretation of ov and ov32.
>>>> I will add a code to compute the Rc.
>>>
>>> Why do you believe that the computation for overflow is different between neg
>>> and subf?
>>
>> For example in 64-bit mode, if we negate INT64_MIN(nego[.]), both OV and
>> OV32 has to be set to 1 according to ISA 3.0. If I use subf, only OV is
>> set to 1.
>
> What an odd corner case for OV32 wrt nego.  But you're right that's what the 
> manual says.  I wonder why the hardware folk designed the chip that way.  It 
> seems broken.
>
> You might want to confirm with the hardware folk that this isn't a bug in the 
> manual.

Sure, moreover I figured out that the hardware simulator isnt following
the ISA3.0 behaviour (setting OV and OV32 both)

Regards
Nikunj

  reply	other threads:[~2017-02-22 10:23 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-20 10:11 [Qemu-devel] [PATCH v1 00/10] POWER9 TCG enablements - part15 Nikunj A Dadhania
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 01/10] target/ppc: support for 32-bit carry and overflow Nikunj A Dadhania
2017-02-20 19:28   ` Richard Henderson
2017-02-21  4:45     ` Nikunj A Dadhania
2017-02-22  2:27       ` David Gibson
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 02/10] target/ppc: Update ca32 in arithmetic add Nikunj A Dadhania
2017-02-20 19:32   ` Richard Henderson
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 03/10] target/ppc: move subf logic block Nikunj A Dadhania
2017-02-20 19:34   ` Richard Henderson
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 04/10] target/ppc: compute ca32 for arithmetic substract Nikunj A Dadhania
2017-02-20 19:38   ` Richard Henderson
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 05/10] target/ppc: update overflow flags for add/sub Nikunj A Dadhania
2017-02-20 19:39   ` Richard Henderson
2017-02-21  9:22     ` Nikunj A Dadhania
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 06/10] target/ppc: use tcg ops for neg instruction Nikunj A Dadhania
2017-02-20 19:54   ` Richard Henderson
2017-02-21  9:23     ` Nikunj A Dadhania
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 07/10] target/ppc: update ov/ov32 for nego Nikunj A Dadhania
2017-02-20 19:55   ` Richard Henderson
2017-02-21  9:26     ` Nikunj A Dadhania
2017-02-21 19:56       ` Richard Henderson
2017-02-22  3:53         ` Nikunj A Dadhania
2017-02-22 10:17           ` Richard Henderson
2017-02-22 10:23             ` Nikunj A Dadhania [this message]
2017-02-20 10:11 ` [Qemu-devel] [PATCH v1 08/10] target/ppc: add ov32 flag for multiply low insns Nikunj A Dadhania
2017-02-20 19:59   ` Richard Henderson
2017-02-20 10:12 ` [Qemu-devel] [PATCH v1 09/10] target/ppc: add ov32 flag in divide operations Nikunj A Dadhania
2017-02-20 20:00   ` Richard Henderson
2017-02-20 10:12 ` [Qemu-devel] [PATCH v1 10/10] target/ppc: add mcrxrx instruction Nikunj A Dadhania
2017-02-20 20:06   ` Richard Henderson

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=87fuj6bk31.fsf@abhimanyu.i-did-not-set--mail-host-address--so-tickle-me \
    --to=nikunj@linux.vnet.ibm.com \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=rth@twiddle.net \
    /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.