Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Dec 2015 08:57:04 +0100
From:      "Ranjan1018 ." <214748mv@gmail.com>
To:        araujo@freebsd.org
Cc:        Michael McConville <mmcco@mykolab.com>, freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: [PATCH] XOR uses
Message-ID:  <CACyC=qY5neO%2BF%2B9ds8JtSHixssc=crGFW==Fa0KpAOaoR0z0mQ@mail.gmail.com>
In-Reply-To: <CAOfEmZiwq0vH6vN34c=3-0PJL1gTNjOjksNyQR1Ojve%2BuPbRYA@mail.gmail.com>
References:  <20151208031327.GA17554@thinkpad.swarthmore.edu> <CAOfEmZiwq0vH6vN34c=3-0PJL1gTNjOjksNyQR1Ojve%2BuPbRYA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
2015-12-08 5:40 GMT+01:00 Marcelo Araujo <araujobsdport@gmail.com>:

> Hi Michael,
>
> What would be the advantage of it?
> I still prefer explicit than implicit. The current code is much more
> readable.
>
> Best,
>
> 2015-12-08 11:13 GMT+08:00 Michael McConville <mmcco@mykolab.com>:
>
> > A minor simplification patch:
> >
> >
> > Index: sys/arm/allwinner/a10_gpio.c
> > ===================================================================
> > --- sys/arm/allwinner/a10_gpio.c        (revision 291978)
> > +++ sys/arm/allwinner/a10_gpio.c        (working copy)
> > @@ -356,10 +356,7 @@
> >         sc = device_get_softc(dev);
> >         A10_GPIO_LOCK(sc);
> >         data = A10_GPIO_READ(sc, A10_GPIO_GP_DAT(bank));
> > -       if (data & (1 << pin))
> > -               data &= ~(1 << pin);
> > -       else
> > -               data |= (1 << pin);
> > +       data ^= (1 << pin);
> >         A10_GPIO_WRITE(sc, A10_GPIO_GP_DAT(bank), data);
> >         A10_GPIO_UNLOCK(sc);
> >
> > Index: sys/arm/altera/socfpga/socfpga_gpio.c
> > ===================================================================
> > --- sys/arm/altera/socfpga/socfpga_gpio.c       (revision 291978)
> > +++ sys/arm/altera/socfpga/socfpga_gpio.c       (working copy)
> > @@ -336,10 +336,7 @@
> >
> >         GPIO_LOCK(sc);
> >         reg = READ4(sc, GPIO_SWPORTA_DR);
> > -       if (reg & (1 << i))
> > -               reg &= ~(1 << i);
> > -       else
> > -               reg |= (1 << i);
> > +       reg ^= (1 << i);
> >         WRITE4(sc, GPIO_SWPORTA_DR, reg);
> >         GPIO_UNLOCK(sc);
> >
> > Index: sys/arm/rockchip/rk30xx_gpio.c
> > ===================================================================
> > --- sys/arm/rockchip/rk30xx_gpio.c      (revision 291978)
> > +++ sys/arm/rockchip/rk30xx_gpio.c      (working copy)
> > @@ -375,10 +375,7 @@
> >                 return (EINVAL);
> >         RK30_GPIO_LOCK(sc);
> >         data = RK30_GPIO_READ(sc, RK30_GPIO_SWPORT_DR);
> > -       if (data & (1U << pin))
> > -               data &= ~(1U << pin);
> > -       else
> > -               data |= (1U << pin);
> > +       data ^= (1U << pin);
> >         RK30_GPIO_WRITE(sc, RK30_GPIO_SWPORT_DR, data);
> >         RK30_GPIO_UNLOCK(sc);
> >
> > Index: sys/arm/samsung/exynos/exynos5_pad.c
> > ===================================================================
> > --- sys/arm/samsung/exynos/exynos5_pad.c        (revision 291978)
> > +++ sys/arm/samsung/exynos/exynos5_pad.c        (working copy)
> > @@ -722,10 +722,7 @@
> >
> >         GPIO_LOCK(sc);
> >         reg = READ4(sc, bank.port, bank.con + 0x4);
> > -       if (reg & (1 << pin_shift))
> > -               reg &= ~(1 << pin_shift);
> > -       else
> > -               reg |= (1 << pin_shift);
> > +       reg ^= (1 << pin_shift);
> >         WRITE4(sc, bank.port, bank.con + 0x4, reg);
> >         GPIO_UNLOCK(sc);
> >
> > Index: sys/dev/nand/nandsim_ctrl.c
> > ===================================================================
> > --- sys/dev/nand/nandsim_ctrl.c (revision 291978)
> > +++ sys/dev/nand/nandsim_ctrl.c (working copy)
> > @@ -388,9 +388,6 @@
> >         rand = random();
> >         if ((rand % 1000000) < chip->error_ratio) {
> >                 bit = rand % 8;
> > -               if (*byte & (1 << bit))
> > -                       *byte &= ~(1 << bit);
> > -               else
> > -                       *byte |= (1 << bit);
> > +               *byte ^= (1 << bit);
> >         }
> >  }
> >
>

Hi,

I prefer the syntax in the patch:
- the semantic is more clear for me: if you want to flip a bit you should
use xor
- it saves, probably, some bytes of assembly code

Regards
Maurizio



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACyC=qY5neO%2BF%2B9ds8JtSHixssc=crGFW==Fa0KpAOaoR0z0mQ>