[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v2 1/7] target-ppc: Implement bcd_is_valid functio
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [PATCH v2 1/7] target-ppc: Implement bcd_is_valid function |
Date: |
Wed, 7 Dec 2016 16:48:51 +1100 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Tue, Dec 06, 2016 at 05:40:04PM -0200, Jose Ricardo Ziviani wrote:
> A function to check if all digits of a given BCD number is valid is
> here presented because more instructions will need to reuse the
> same code.
>
> Signed-off-by: Jose Ricardo Ziviani <address@hidden>
I've applied this patch to ppc-for-2.9, the rest still have comments
on them.
> ---
> target-ppc/int_helper.c | 27 ++++++++++++++++++++-------
> 1 file changed, 20 insertions(+), 7 deletions(-)
>
> diff --git a/target-ppc/int_helper.c b/target-ppc/int_helper.c
> index 7030f61..7989b1f 100644
> --- a/target-ppc/int_helper.c
> +++ b/target-ppc/int_helper.c
> @@ -2596,6 +2596,24 @@ static void bcd_put_digit(ppc_avr_t *bcd, uint8_t
> digit, int n)
> }
> }
>
> +static bool bcd_is_valid(ppc_avr_t *bcd)
> +{
> + int i;
> + int invalid = 0;
> +
> + if (bcd_get_sgn(bcd) == 0) {
> + return false;
> + }
> +
> + for (i = 1; i < 32; i++) {
> + bcd_get_digit(bcd, i, &invalid);
> + if (unlikely(invalid)) {
> + return false;
> + }
> + }
> + return true;
> +}
> +
> static int bcd_cmp_zero(ppc_avr_t *bcd)
> {
> if (bcd->u64[HI_IDX] == 0 && (bcd->u64[LO_IDX] >> 4) == 0) {
> @@ -3013,18 +3031,13 @@ uint32_t helper_bcdcpsgn(ppc_avr_t *r, ppc_avr_t *a,
> ppc_avr_t *b, uint32_t ps)
>
> uint32_t helper_bcdsetsgn(ppc_avr_t *r, ppc_avr_t *b, uint32_t ps)
> {
> - int i;
> - int invalid = 0;
> int sgnb = bcd_get_sgn(b);
>
> *r = *b;
> bcd_put_digit(r, bcd_preferred_sgn(sgnb, ps), 0);
>
> - for (i = 1; i < 32; i++) {
> - bcd_get_digit(b, i, &invalid);
> - if (unlikely(invalid)) {
> - return CRF_SO;
> - }
> + if (bcd_is_valid(b) == false) {
> + return CRF_SO;
> }
>
> return bcd_cmp_zero(r);
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [Qemu-ppc] [PATCH v2 0/7] POWER9 TCG enablements - BCD functions - final part, Jose Ricardo Ziviani, 2016/12/06
- [Qemu-ppc] [PATCH v2 1/7] target-ppc: Implement bcd_is_valid function, Jose Ricardo Ziviani, 2016/12/06
- Re: [Qemu-ppc] [PATCH v2 1/7] target-ppc: Implement bcd_is_valid function,
David Gibson <=
- [Qemu-ppc] [PATCH v2 2/7] target-ppc: Implement unsigned quadword left/right shift and unit tests, Jose Ricardo Ziviani, 2016/12/06
- [Qemu-ppc] [PATCH v2 3/7] target-ppc: Implement bcds. instruction, Jose Ricardo Ziviani, 2016/12/06
- [Qemu-ppc] [PATCH v2 4/7] target-ppc: Implement bcdus. instruction, Jose Ricardo Ziviani, 2016/12/06
- [Qemu-ppc] [PATCH v2 5/7] target-ppc: Implement bcdsr. instruction, Jose Ricardo Ziviani, 2016/12/06
- [Qemu-ppc] [PATCH v2 6/7] target-ppc: Implement bcdtrunc. instruction, Jose Ricardo Ziviani, 2016/12/06
- [Qemu-ppc] [PATCH v2 7/7] target-ppc: Implement bcdtrunc. instruction, Jose Ricardo Ziviani, 2016/12/06