All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
	qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, proljc@gmail.com
Subject: Re: [Qemu-devel] [PATCH 02/17] target-openrisc: Streamline arithmetic and OVE
Date: Thu, 3 Sep 2015 07:44:44 -0700	[thread overview]
Message-ID: <55E85CDC.7040003@twiddle.net> (raw)
In-Reply-To: <55E85633.3070909@mail.uni-paderborn.de>

On 09/03/2015 07:16 AM, Bastian Koppelmann wrote:
>
>
> On 09/03/2015 02:17 AM, Richard Henderson wrote:
>> +
>> +void HELPER(ove)(CPUOpenRISCState *env, target_ulong test)
>> +{
>> +    if (unlikely(test) && (env->sr & SR_OVE)) {
>> +        OpenRISCCPU *cpu = openrisc_env_get_cpu(env);
>> +        CPUState *cs = CPU(cpu);
>> +
>> +        cs->exception_index = EXCP_RANGE;
>> +        cpu_restore_state(cs, GETPC());
>> +        cpu_loop_exit(cs);
>> +    }
>> +}
>
> You forgot to check the AECR register, whether the exception really occurs.

The current state of the port suggests it's written to a (pre?) 1.0 
specification, prior to the AECR register being invented.  Let's not try to 
introduce new features just yet.

>> +static void gen_ove_cy(DisasContext *dc, TCGv cy)
>> +{
>> +    gen_helper_ove(cpu_env, cy);
>> +}
>> +
>> +static void gen_ove_ov(DisasContext *dc, TCGv ov)
>> +{
>> +    gen_helper_ove(cpu_env, ov);
>> +}
>> +
>
> Do we really need two functions here? They differ only by the name of the
> second argument. We should directly use gen_helper_ove ().

This is prep work for patch 7/17.

> I do wonder, if we should use TCG globals for sr_cy and sr_ov, as you
> recommended for the TriCore target. It would not change the helper in case of
> no ovf/carry, but simplify addc. And we would not need two deposits for every
> add/sub.

That's patch 7/17.  ;-)

>
>> -            if (ra != 0 && rb != 0) {
>> -                gen_helper_mul32(cpu_R[rd], cpu_env, cpu_R[ra], cpu_R[rb]);
>> -            } else {
>> -                tcg_gen_movi_tl(cpu_R[rd], 0x0);
>> -            }
>> +            gen_mul(dc, cpu_R[rd], cpu_R[ra], cpu_R[rb]);
>
> What happened to this special case here? r0 should always hold zero, so we can
> keep this optimization here, or at least move it to gen_mul().

R0 is not an *architectural* zero.  It's a software convention.  The spec is 
fairly clear on this point.

I agree that there ought to be some special-casing of the software convention, 
but that should require a TB flag to verify the convention is followed.  But 
even then I would not bother retaining the special case here in multiply.  I 
would only use it in the "move" and constant formation types of pseudo 
instructions (or, ori, etc).


r~

  reply	other threads:[~2015-09-03 14:44 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-03  0:17 [Qemu-devel] [PATCH 00/17] target-openrisc improvements Richard Henderson
2015-09-03  0:17 ` [Qemu-devel] [PATCH 01/17] target-openrisc: Always enable OPENRISC_DISAS Richard Henderson
2015-09-03 14:15   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 02/17] target-openrisc: Streamline arithmetic and OVE Richard Henderson
2015-09-03 14:16   ` Bastian Koppelmann
2015-09-03 14:44     ` Richard Henderson [this message]
2015-09-04 13:12       ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 03/17] target-openrisc: Invert the decoding in dec_calc Richard Henderson
2015-09-03 14:48   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 04/17] target-openrisc: Keep SR_F in a separate variable Richard Henderson
2015-09-03 15:09   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 05/17] target-openrisc: Use movcond where appropriate Richard Henderson
2015-09-03 16:04   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 06/17] target-openrisc: Put SR[OVE] in TB flags Richard Henderson
2015-09-04 13:05   ` Bastian Koppelmann
2015-09-04 14:29     ` Richard Henderson
2015-09-03  0:17 ` [Qemu-devel] [PATCH 07/17] target-openrisc: Keep SR_CY and SR_OV in a separate variables Richard Henderson
2015-09-04 13:33   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 08/17] target-openrisc: Set flags on helpers Richard Henderson
2015-09-04 13:58   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 09/17] target-openrisc: Implement ff1 and fl1 for 64-bit Richard Henderson
2015-09-04 13:59   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 10/17] target-openrisc: Represent MACHI:MACLO as a single unit Richard Henderson
2015-09-04 15:04   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 11/17] target-openrisc: Rationalize immediate extraction Richard Henderson
2015-09-04 15:24   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 12/17] target-openrisc: Enable m[tf]spr from user mode Richard Henderson
2015-09-05 21:35   ` Bastian Koppelmann
2015-09-06 20:36     ` Richard Henderson
2015-09-13  8:34       ` Bastian Koppelmann
2015-09-14 17:11         ` Richard Henderson
2015-09-15  7:22           ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 13/17] target-openrisc: Enable trap, csync, msync, psync for " Richard Henderson
2015-09-06  9:30   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 14/17] target-openrisc: Implement muld, muldu, macu, msbu Richard Henderson
2015-09-06 11:38   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 15/17] target-openrisc: Fix madd Richard Henderson
2015-09-13  8:21   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 16/17] target-openrisc: Write back result before FPE exception Richard Henderson
2015-09-15 13:02   ` Bastian Koppelmann
2015-09-03  0:17 ` [Qemu-devel] [PATCH 17/17] target-openrisc: Implement lwa, swa Richard Henderson
2015-09-15 13:04   ` Bastian Koppelmann

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=55E85CDC.7040003@twiddle.net \
    --to=rth@twiddle.net \
    --cc=kbastian@mail.uni-paderborn.de \
    --cc=peter.maydell@linaro.org \
    --cc=proljc@gmail.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.