All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	jsrhbz@kanargh.force9.co.uk,
	christoph.muellner@theobroma-systems.com,
	linux@rasmusvillemoes.dk, paulmck@linux.vnet.ibm.com,
	tglx@linutronix.de, mingo@kernel.org, akpm@linux-foundation.org,
	hpa@zytor.com, maxime.coquelin@st.com,
	linux-kernel@vger.kernel.org, peterz@infradead.org,
	martink@posteo.de, tytso@mit.edu
Cc: linux-tip-commits@vger.kernel.org
Subject: Re: [tip:core/types] bitops: Add sign_extend8(), 16 and 64 functions
Date: Sun, 18 Jan 2015 17:11:31 -0800	[thread overview]
Message-ID: <54BC59C3.8010208@roeck-us.net> (raw)
In-Reply-To: <CA+55aFyc7TbnLBi3rcQDrtkwg9TgDnb5dAfupMGSbTKZC6Xd0g@mail.gmail.com>

On 01/18/2015 11:54 AM, Linus Torvalds wrote:
> Why?
>

Probably because some of us are, unfortunately, sometimes clueless :-(.

Guenter

> The 8- and 16- bit versions are the same as the 32-bit one. This seems pointless. If you want something where the sign is in bit 3, they all return the same value, just the return type differs, but that's really a *caller* thing, no?
>
>       Linus
>
> On Jan 19, 2015 7:07 AM, "tip-bot for Martin Kepplinger" <tipbot@zytor.com <mailto:tipbot@zytor.com>> wrote:
>
>     Commit-ID:  7e9358073d3f0ed0a028c48aa54009b3296dffc9
>     Gitweb: http://git.kernel.org/tip/7e9358073d3f0ed0a028c48aa54009b3296dffc9
>     Author:     Martin Kepplinger <martink@posteo.de <mailto:martink@posteo.de>>
>     AuthorDate: Mon, 12 Jan 2015 18:22:50 +0100
>     Committer:  Ingo Molnar <mingo@kernel.org <mailto:mingo@kernel.org>>
>     CommitDate: Sun, 18 Jan 2015 20:03:51 +0100
>
>     bitops: Add sign_extend8(), 16 and 64 functions
>
>     This adds helper functions for sign-extending signed values of any
>     lower (hardware-)given size to s8, s16 or s64 respectively, just like
>     sign_extend32() for s32.
>
>     This completes the sign_extend*() API family to work on all bit sizes
>     like most other bitops APIs do.
>
>     Suggested-by: Christoph Muellner <christoph.muellner@theobroma-systems.com <mailto:christoph.muellner@theobroma-systems.com>>
>     Signed-off-by: Martin Kepplinger <martink@posteo.de <mailto:martink@posteo.de>>
>     Reviewed-by: Guenter Roeck <linux@roeck-us.net <mailto:linux@roeck-us.net>>
>     Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org <mailto:peterz@infradead.org>>
>     Cc: John Sullivan <jsrhbz@kanargh.force9.co.uk <mailto:jsrhbz@kanargh.force9.co.uk>>
>     Cc: Linus Torvalds <torvalds@linux-foundation.org <mailto:torvalds@linux-foundation.org>>
>     Cc: Maxime COQUELIN <maxime.coquelin@st.com <mailto:maxime.coquelin@st.com>>
>     Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com <mailto:paulmck@linux.vnet.ibm.com>>
>     Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk <mailto:linux@rasmusvillemoes.dk>>
>     Cc: Theodore Ts'o <tytso@mit.edu <mailto:tytso@mit.edu>>
>     Cc: Andrew Morton <akpm@linux-foundation.org <mailto:akpm@linux-foundation.org>>
>     Link: http://lkml.kernel.org/r/1421083370-24924-1-git-send-email-martink@posteo.de
>     Signed-off-by <http://lkml.kernel.org/r/1421083370-24924-1-git-send-email-martink@posteo.de Signed-off-by>: Ingo Molnar <mingo@kernel.org <mailto:mingo@kernel.org>>
>     ---
>       include/linux/bitops.h | 33 +++++++++++++++++++++++++++++++++
>       1 file changed, 33 insertions(+)
>
>     diff --git a/include/linux/bitops.h b/include/linux/bitops.h
>     index 5d858e0..9c31680 100644
>     --- a/include/linux/bitops.h
>     +++ b/include/linux/bitops.h
>     @@ -161,6 +161,28 @@ static inline __u8 ror8(__u8 word, unsigned int shift)
>       }
>
>       /**
>     + * sign_extend8 - sign extend a 8-bit value using specified bit as sign-bit
>     + * @value: value to sign extend
>     + * @index: 0 based bit index (0<=index<8) to sign bit
>     + */
>     +static inline __s8 sign_extend8(__u8 value, int index)
>     +{
>     +       __u8 shift = 7 - index;
>     +       return (__s8)(value << shift) >> shift;
>     +}
>     +
>     +/**
>     + * sign_extend16 - sign extend a 16-bit value using specified bit as sign-bit
>     + * @value: value to sign extend
>     + * @index: 0 based bit index (0<=index<16) to sign bit
>     + */
>     +static inline __s16 sign_extend16(__u16 value, int index)
>     +{
>     +       __u8 shift = 15 - index;
>     +       return (__s16)(value << shift) >> shift;
>     +}
>     +
>     +/**
>        * sign_extend32 - sign extend a 32-bit value using specified bit as sign-bit
>        * @value: value to sign extend
>        * @index: 0 based bit index (0<=index<32) to sign bit
>     @@ -171,6 +193,17 @@ static inline __s32 sign_extend32(__u32 value, int index)
>              return (__s32)(value << shift) >> shift;
>       }
>
>     +/**
>     + * sign_extend64 - sign extend a 64-bit value using specified bit as sign-bit
>     + * @value: value to sign extend
>     + * @index: 0 based bit index (0<=index<64) to sign bit
>     + */
>     +static inline __s64 sign_extend64(__u64 value, int index)
>     +{
>     +       __u8 shift = 63 - index;
>     +       return (__s64)(value << shift) >> shift;
>     +}
>     +
>       static inline unsigned fls_long(unsigned long l)
>       {
>              if (sizeof(l) == 4)
>


  parent reply	other threads:[~2015-01-19  1:12 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-12 17:22 [PATCH v2] bitops.h: add sign_extend8(), 16 and 64 functions Martin Kepplinger
2015-01-12 17:28 ` [RFC] input: gtco: use bitops' sign_extend8 Martin Kepplinger
2015-01-12 17:28   ` [RFC] rtc: use sign_extend8 instead of manual conversion Martin Kepplinger
2015-01-12 17:28   ` [RFC] media: stb0899: use sign_extend8 instead of manual work Martin Kepplinger
2015-01-12 17:28   ` [RFC] hwmon: jc42: use bitops' sign_extend16 Martin Kepplinger
2015-01-12 19:53     ` Guenter Roeck
2015-01-12 19:48 ` [PATCH v2] bitops.h: add sign_extend8(), 16 and 64 functions Guenter Roeck
2015-01-14 16:56 ` [RFC PATCH 0/4] Example changes using proposed sign_extend functions Martin Kepplinger
2015-01-14 16:56   ` [PATCH 1/4] input: gtco: use bitops' sign_extend8 Martin Kepplinger
2015-01-14 16:56   ` [PATCH 2/4] rtc: use sign_extend8 instead of manual conversion Martin Kepplinger
2015-01-14 16:56   ` [PATCH 3/4] media: stb0899: use sign_extend8 instead of manual work Martin Kepplinger
2015-01-14 16:56   ` [PATCH 4/4] hwmon: jc42: use bitops' sign_extend16 Martin Kepplinger
2015-01-18 19:06 ` [tip:core/types] bitops: Add sign_extend8(), 16 and 64 functions tip-bot for Martin Kepplinger
     [not found]   ` <CA+55aFyc7TbnLBi3rcQDrtkwg9TgDnb5dAfupMGSbTKZC6Xd0g@mail.gmail.com>
2015-01-19  1:11     ` Guenter Roeck [this message]
2015-01-19  4:00     ` Linus Torvalds
2015-01-20 12:30       ` [PATCH v3 0/2] bitops.h: add sign_extend64() API and improve doc Martin Kepplinger
2015-01-20 12:30         ` [PATCH 1/2] bitops.h: improve documentation for sign_extend32() Martin Kepplinger
2015-01-20 12:30         ` [PATCH 2/2] bitops.h: Add sign_extend64() API Martin Kepplinger
2015-01-19 10:04     ` [tip:core/types] bitops: Add sign_extend8(), 16 and 64 functions Peter Zijlstra
2015-01-21 20:22       ` H. Peter Anvin
2015-02-05  7:17         ` Ingo Molnar
2015-02-05 14:11           ` Guenter Roeck
2015-02-12 11:11             ` Example use of sign_extend64() Martin Kepplinger
2015-02-12 11:11               ` [RFC][PATCH] arch: sh: use sign_extend64() for sign extension Martin Kepplinger
2015-02-05 16:39           ` [tip:core/types] bitops: Add sign_extend8(), 16 and 64 functions H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54BC59C3.8010208@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=akpm@linux-foundation.org \
    --cc=christoph.muellner@theobroma-systems.com \
    --cc=hpa@zytor.com \
    --cc=jsrhbz@kanargh.force9.co.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=martink@posteo.de \
    --cc=maxime.coquelin@st.com \
    --cc=mingo@kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.