This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v4 2/5] sim: cgen: add MUL2OFSI and MUL1OFSI macros (needed for OR1K l.mul[u])


On Tue, Sep 5, 2017 at 5:32 AM, Simon Marchi <simon.marchi@polymtl.ca> wrote:
>> --- a/sim/common/cgen-ops.h
>> +++ b/sim/common/cgen-ops.h
>> @@ -631,6 +631,22 @@ SUBOFQI (QI a, QI b, BI c)
>>    return res;
>>  }
>>
>> +SEMOPS_INLINE BI
>> +MUL2OFSI (SI a, SI b)
>> +{
>> +  DI tmp = MULDI (EXTSIDI(a), EXTSIDI(b));
>> +  BI res = tmp < -0x80000000LL || tmp > 0x7fffffffLL;
>> +  return res;
>> +}
>> +
>> +SEMOPS_INLINE BI
>> +MUL1OFSI (USI a, USI b)
>> +{
>> +  UDI tmp = MULDI (ZEXTSIDI(a), ZEXTSIDI(b));
>> +  BI res = (tmp > 0xFFFFFFFFULL);
>> +  return res;
>> +}
>
>
> What are these functions expected to return?  They seem to return 1 when the
> result would overflow 32-bits, but just to be sure.

They do just return 1 when there is overflow.

They are used in:
    cpu/or1korbis.cpu

To calculate the overflow and carry flags.

   ; 2's complement overflow
   (set sys-sr-ov (mul-o2flag WI rA (ext WI simm16)))
   ; 1's complement overflow
   (set sys-sr-cy (mul-o1flag UWI rA (ext UWI simm16)))

Thanks for pointing this out though the ChangeLog says "New macro, 1's
complement."  I think it should mention "New macro, 1's complement
_overflow_."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]