All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: cbe-oss-dev@ozlabs.org
Cc: linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org,
	oprofile-list@lists.sourceforge.net, Carl Love <cel@us.ibm.com>
Subject: Re: [Cbe-oss-dev] [RFC, PATCH 4/4] Add support to OProfile for	profiling Cell BE SPUs -- update
Date: Wed, 31 Jan 2007 07:06:11 +0100	[thread overview]
Message-ID: <200701310706.12356.arnd@arndb.de> (raw)
In-Reply-To: <1170199869.5235.38.camel@dyn9047021078.beaverton.ibm.com>

On Wednesday 31 January 2007 00:31, Carl Love wrote:
> Unfortunately, the only way we know how to
> figure out what the LFSR value that corresponds to the number in the
> sequence that is N before the last value (0xFFFFFF) is to calculate the
> previous value N times. =A0It is like trying to ask what is the pseudo
> random number that is N before this pseudo random number?

Well, you can at least implement the lfsr both ways, and choose the one
that is faster to get at, like

u32 get_lfsr(u32 v)
{
	int i;
	u32 r =3D 0xffffff;
	if (v < 0x7fffff) {
		for (i =3D 0; i < v; i++)
			r =3D lfsr_forwards(r);
	} else {
		for (i =3D 0; i < (0x1000000 - v); i++)
			r =3D lfsr_backwards(r);
	}
	return r;
}

Also, if the value doesn't have to be really exact, you could have
a small lookup table with precomputed values, like:

u32 get_lfsr(u32 v)
{
	static const lookup[256] =3D {
		0xab3492, 0x3e3f34, 0xc47610c, ... /* insert actual values */
	};

	return lookup[v >> 16];
}

	Arnd <><

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: cbe-oss-dev@ozlabs.org
Cc: Carl Love <cel@us.ibm.com>,
	maynardj@us.ibm.com, linuxppc-dev@ozlabs.org,
	oprofile-list@lists.sourceforge.net,
	linux-kernel@vger.kernel.org
Subject: Re: [Cbe-oss-dev] [RFC, PATCH 4/4] Add support to OProfile for	profiling Cell BE SPUs -- update
Date: Wed, 31 Jan 2007 07:06:11 +0100	[thread overview]
Message-ID: <200701310706.12356.arnd@arndb.de> (raw)
In-Reply-To: <1170199869.5235.38.camel@dyn9047021078.beaverton.ibm.com>

On Wednesday 31 January 2007 00:31, Carl Love wrote:
> Unfortunately, the only way we know how to
> figure out what the LFSR value that corresponds to the number in the
> sequence that is N before the last value (0xFFFFFF) is to calculate the
> previous value N times.  It is like trying to ask what is the pseudo
> random number that is N before this pseudo random number?

Well, you can at least implement the lfsr both ways, and choose the one
that is faster to get at, like

u32 get_lfsr(u32 v)
{
	int i;
	u32 r = 0xffffff;
	if (v < 0x7fffff) {
		for (i = 0; i < v; i++)
			r = lfsr_forwards(r);
	} else {
		for (i = 0; i < (0x1000000 - v); i++)
			r = lfsr_backwards(r);
	}
	return r;
}

Also, if the value doesn't have to be really exact, you could have
a small lookup table with precomputed values, like:

u32 get_lfsr(u32 v)
{
	static const lookup[256] = {
		0xab3492, 0x3e3f34, 0xc47610c, ... /* insert actual values */
	};

	return lookup[v >> 16];
}

	Arnd <><

  parent reply	other threads:[~2007-01-31  6:06 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-29 19:45 [RFC, PATCH 0/4] Add support to OProfile for profiling Cell BE SPUs -- update Maynard Johnson
2007-01-29 19:46 ` [RFC, PATCH 1/4] " Maynard Johnson
2007-01-30  4:07   ` [Cbe-oss-dev] " Arnd Bergmann
2007-01-30  4:07     ` Arnd Bergmann
2007-01-30 10:39   ` Christoph Hellwig
2007-01-30 10:39     ` Christoph Hellwig
2007-01-30 22:49     ` Carl Love
2007-01-30 22:49       ` Carl Love
2007-01-30 22:57       ` Benjamin Herrenschmidt
2007-01-30 22:57         ` Benjamin Herrenschmidt
2007-01-31  8:47         ` Christoph Hellwig
2007-01-31  8:47           ` Christoph Hellwig
2007-01-30 22:59       ` Benjamin Herrenschmidt
2007-01-30 22:59         ` Benjamin Herrenschmidt
2007-01-29 19:47 ` [RFC, PATCH 2/4] " Maynard Johnson
2007-01-30  4:08   ` [Cbe-oss-dev] " Arnd Bergmann
2007-01-30  4:08     ` Arnd Bergmann
2007-01-30 23:51     ` Carl Love
2007-01-30 23:51       ` Carl Love
2007-01-29 19:48 ` [RFC, PATCH 3/4] " Maynard Johnson
2007-01-30  4:24   ` [Cbe-oss-dev] " Arnd Bergmann
2007-01-30  4:24     ` Arnd Bergmann
2007-01-30 15:31     ` Maynard Johnson
2007-01-30 15:31       ` Maynard Johnson
2007-01-31  0:35       ` Arnd Bergmann
2007-01-31  0:35         ` Arnd Bergmann
2007-01-29 19:48 ` [RFC, PATCH 4/4] " Maynard Johnson
2007-01-30  7:39   ` [Cbe-oss-dev] " Arnd Bergmann
2007-01-30  7:53     ` Benjamin Herrenschmidt
2007-01-30  7:53       ` Benjamin Herrenschmidt
2007-01-30 10:41       ` Christoph Hellwig
2007-01-30 10:41         ` Christoph Hellwig
2007-01-30 23:09         ` Maynard Johnson
2007-01-30 23:09           ` Maynard Johnson
2007-01-30 21:41     ` Maynard Johnson
2007-01-30 21:41       ` Maynard Johnson
2007-01-30 22:54       ` Maynard Johnson
2007-01-30 22:54         ` Maynard Johnson
2007-01-30 23:34         ` Benjamin Herrenschmidt
2007-01-30 23:34           ` Benjamin Herrenschmidt
2007-01-31  0:29           ` Maynard Johnson
2007-01-31  0:29             ` Maynard Johnson
2007-01-31  6:52         ` Arnd Bergmann
2007-01-31  6:52           ` Arnd Bergmann
2007-02-02 16:47           ` Maynard Johnson
2007-02-02 16:47             ` Maynard Johnson
2007-02-03  7:40             ` Arnd Bergmann
2007-02-03  7:40               ` Arnd Bergmann
2007-02-03 20:03               ` Maynard Johnson
2007-02-03 20:03                 ` Maynard Johnson
2007-02-04  2:42                 ` Arnd Bergmann
2007-02-04  2:42                   ` Arnd Bergmann
2007-02-04 17:11                   ` Maynard Johnson
2007-02-04 17:11                     ` Maynard Johnson
2007-01-30 23:31       ` Carl Love
2007-01-30 23:31         ` Carl Love
2007-01-31  1:25         ` Christian Krafft
2007-01-31  1:25           ` Christian Krafft
2007-01-31  6:06         ` Arnd Bergmann [this message]
2007-01-31  6:06           ` Arnd Bergmann
2007-01-31  5:57       ` Arnd Bergmann
2007-01-31  5:57         ` Arnd Bergmann
2007-02-02 19:27         ` Maynard Johnson
2007-02-02 19:27           ` Maynard Johnson
2007-02-03 23:49     ` Maynard Johnson
2007-02-03 23:49       ` Maynard Johnson
2007-02-04  2:52       ` Arnd Bergmann
2007-02-04  2:52         ` Arnd Bergmann
2007-02-04 17:33         ` Maynard Johnson
2007-02-04 17:33           ` Maynard Johnson
2007-01-31  9:24   ` Milton Miller
2007-01-31 15:42     ` Arnd Bergmann
2007-02-01 18:56       ` Milton Miller
2007-02-02  0:54         ` Arnd Bergmann
2007-01-30  8:37 ` [RFC, PATCH 0/4] " Arnd Bergmann
2007-01-30  8:37   ` Arnd Bergmann

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=200701310706.12356.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=cbe-oss-dev@ozlabs.org \
    --cc=cel@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=oprofile-list@lists.sourceforge.net \
    /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.