[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [RFC v2 05/13] target-ppc: add modulo word operations
From: |
Nikunj A Dadhania |
Subject: |
Re: [Qemu-ppc] [RFC v2 05/13] target-ppc: add modulo word operations |
Date: |
Mon, 25 Jul 2016 11:37:38 +0530 |
User-agent: |
Notmuch/0.21 (https://notmuchmail.org) Emacs/25.0.94.1 (x86_64-redhat-linux-gnu) |
Nikunj A Dadhania <address@hidden> writes:
> Richard Henderson <address@hidden> writes:
>
>> On 07/23/2016 02:14 PM, Nikunj A Dadhania wrote:
>> +uint32_t helper_modsw(uint32_t rau, uint32_t rbu)
>>> +{
>>> + int32_t ra = (int32_t) rau;
>>> + int32_t rb = (int32_t) rbu;
>>> +
>>> + if ((rb == 0) || (ra == INT32_MIN && rb == -1)) {
>>> + return 0;
>>> + }
>>> + return ra % rb;
>>> +}
>>> +
>>> +uint32_t helper_moduw(uint32_t ra, uint32_t rb)
>>> +{
>>> + return rb ? ra % rb : 0;
>>> +}
>>
>> I think, like you, I got distracted by the current div implementation in
>> ppc.
>> I've just re-read the spec and seen the "undefined" language. Which of
>> course
>> gives us much more freedom.
>
> Right, I too thought of the same but didn't do it in this series.
> Current div implementation is pretty complicated.
To be precise gen_op_arith_div[d,w]() implementation.
>> With this freedom, we can do the division inline, without branches. Please
>> see
>> target-mips/translate.c, gen_r6_muldiv.
>>
>> Basically, we check for the offending cases and modify the divisor prior to
>> the
>> division. For unsigned:
>>
>> a / (b == 0 ? 1 : b)
>>
>> For signed:
>>
>> a / ((a == INT_MAX & b == -1) | (b == 0) ? : b)
>
> Sure, will add it in this series.
>
> Regards
> Nikunj
- [Qemu-ppc] [RFC v2 01/13] target-ppc: Introduce Power9 family, (continued)
- [Qemu-ppc] [RFC v2 01/13] target-ppc: Introduce Power9 family, Nikunj A Dadhania, 2016/07/23
- [Qemu-ppc] [RFC v2 02/13] target-ppc: Introduce POWER ISA 3.0 flag, Nikunj A Dadhania, 2016/07/23
- [Qemu-ppc] [RFC v2 03/13] target-ppc: adding addpcis instruction, Nikunj A Dadhania, 2016/07/23
- [Qemu-ppc] [RFC v2 04/13] target-ppc: add cmprb instruction, Nikunj A Dadhania, 2016/07/23
- [Qemu-ppc] [RFC v2 05/13] target-ppc: add modulo word operations, Nikunj A Dadhania, 2016/07/23
- Re: [Qemu-ppc] [RFC v2 05/13] target-ppc: add modulo word operations, Nikunj A Dadhania, 2016/07/25
[Qemu-ppc] [RFC v2 06/13] target-ppc: add modulo dword operations, Nikunj A Dadhania, 2016/07/23
[Qemu-ppc] [RFC v2 08/13] target-ppc: add cnttzw[.] instruction, Nikunj A Dadhania, 2016/07/23
[Qemu-ppc] [RFC v2 09/13] target-ppc: add cmpeqb instruction, Nikunj A Dadhania, 2016/07/23
[Qemu-ppc] [RFC v2 10/13] target-ppc: add setb instruction, Nikunj A Dadhania, 2016/07/23