qemu-riscv
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v5 11/60] target/riscv: vector integer add-with-carry / subtr


From: Richard Henderson
Subject: Re: [PATCH v5 11/60] target/riscv: vector integer add-with-carry / subtract-with-borrow instructions
Date: Fri, 13 Mar 2020 22:58:53 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1

On 3/12/20 7:58 AM, LIU Zhiwei wrote:
> +#define DO_MADC(N, M, C) ((__typeof(N))(N + M + C) < N ? 1 : 0)

Incorrect.  E.g N = 1, M = UINT_MAX, C = 1, adds to 1, which is not less than
N, despite the carry-out.

You want

    C ? N + M <= N : N + M < N

> +#define DO_MSBC(N, M, C) ((__typeof(N))(N - M - C) > N ? 1 : 0)

Similarly

    C ? N <= M : N < M


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]