All of lore.kernel.org
 help / color / mirror / Atom feed
* gcc support of mips32 release 2
@ 2004-03-05  7:55 Long Li
  2004-03-05  9:14 ` Eric Christopher
  0 siblings, 1 reply; 24+ messages in thread
From: Long Li @ 2004-03-05  7:55 UTC (permalink / raw)
  To: linux-mips

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=us-ascii, Size: 638 bytes --]

Hi, Guys,

I have a question about gcc support for mips32 release
2. I noticed that in gnu as(assembler) 2.14, there is
an option for it, but does newest gcc version support
mips32 release 2? I did not find it in the mips.c or
configure file. 

Seems to me, this mips32 release 2 is an extension of
mips32, added some new instructions, eg. EHB, etc. So
would it be necessary that gcc be updated, like what
gnu as has done, in the future to reflect this
extension?

Thanks a lot! I really appreciate it.


Long


__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-05  7:55 gcc support of mips32 release 2 Long Li
@ 2004-03-05  9:14 ` Eric Christopher
  2004-03-05 10:12     ` Dominic Sweetman
  0 siblings, 1 reply; 24+ messages in thread
From: Eric Christopher @ 2004-03-05  9:14 UTC (permalink / raw)
  To: Long Li; +Cc: linux-mips


> Seems to me, this mips32 release 2 is an extension of
> mips32, added some new instructions, eg. EHB, etc. So
> would it be necessary that gcc be updated, like what
> gnu as has done, in the future to reflect this
> extension?

It will be in the soon to be released 3.4. Contributed by Chris
Demetriou of Broadcom.

-eric

-- 
Eric Christopher <echristo@redhat.com>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
@ 2004-03-05 10:12     ` Dominic Sweetman
  0 siblings, 0 replies; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-05 10:12 UTC (permalink / raw)
  To: Eric Christopher; +Cc: Long Li, linux-mips, David Ung, Nigel Stephens


> > Seems to me, this mips32 release 2 is an extension of
> > mips32, added some new instructions, eg. EHB, etc. So
> > would it be necessary that gcc be updated, like what
> > gnu as has done, in the future to reflect this
> > extension?
> 
> It will be in the soon to be released 3.4. Contributed by Chris
> Demetriou of Broadcom.

We added patterns to let our (old) GCC use the new rotates and
bit-insert/extracts, at least in simple cases.  I'm not sure whether
we've put those in our 3.4 evolution tree yet, but if we have we
should push those out.

--
Dominic Sweetman
MIPS Technologies.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
@ 2004-03-05 10:12     ` Dominic Sweetman
  0 siblings, 0 replies; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-05 10:12 UTC (permalink / raw)
  To: Eric Christopher; +Cc: Long Li, linux-mips, David Ung, Nigel Stephens


> > Seems to me, this mips32 release 2 is an extension of
> > mips32, added some new instructions, eg. EHB, etc. So
> > would it be necessary that gcc be updated, like what
> > gnu as has done, in the future to reflect this
> > extension?
> 
> It will be in the soon to be released 3.4. Contributed by Chris
> Demetriou of Broadcom.

We added patterns to let our (old) GCC use the new rotates and
bit-insert/extracts, at least in simple cases.  I'm not sure whether
we've put those in our 3.4 evolution tree yet, but if we have we
should push those out.

--
Dominic Sweetman
MIPS Technologies.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-05 10:12     ` Dominic Sweetman
  (?)
@ 2004-03-05 17:03     ` Long Li
  2004-03-08 11:11       ` Dominic Sweetman
  -1 siblings, 1 reply; 24+ messages in thread
From: Long Li @ 2004-03-05 17:03 UTC (permalink / raw)
  To: Dominic Sweetman, Eric Christopher
  Cc: Long Li, linux-mips, David Ung, Nigel Stephens

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=us-ascii, Size: 914 bytes --]

Thanks for the email. Could you give me a link to your
3.4 evolution tree?

Thanks,


Long

--- Dominic Sweetman <dom@mips.com> wrote:
> 
> > > Seems to me, this mips32 release 2 is an
> extension of
> > > mips32, added some new instructions, eg. EHB,
> etc. So
> > > would it be necessary that gcc be updated, like
> what
> > > gnu as has done, in the future to reflect this
> > > extension?
> > 
> > It will be in the soon to be released 3.4.
> Contributed by Chris
> > Demetriou of Broadcom.
> 
> We added patterns to let our (old) GCC use the new
> rotates and
> bit-insert/extracts, at least in simple cases.  I'm
> not sure whether
> we've put those in our 3.4 evolution tree yet, but
> if we have we
> should push those out.
> 
> --
> Dominic Sweetman
> MIPS Technologies.
> 
> 


__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-05 17:03     ` Long Li
@ 2004-03-08 11:11       ` Dominic Sweetman
  2004-03-08 12:15         ` David Ung
  0 siblings, 1 reply; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-08 11:11 UTC (permalink / raw)
  To: Long Li
  Cc: Dominic Sweetman, Eric Christopher, linux-mips, David Ung,
	Nigel Stephens


I wrote:

> > We added patterns to let our (old) GCC use the new rotates and
> > bit-insert/extracts, at least in simple cases.  I'm not sure whether
> > we've put those in our 3.4 evolution tree yet, but if we have we
> > should push those out.

Long Li (long21st@yahoo.com) replied:

> Thanks for the email. Could you give me a link to your
> 3.4 evolution tree?

Interesting.  It's not as simple as I'd like: our 3.4 work is not yet
published, and I'm pretty sure it includes support for hardware etc we
haven't generally released details of yet.

Nigel (our main gcc expert) is on vacation this week.  In his absence,
David: do you know whether the rotate/insert stuff is in 3.4 yet?

--
Dominic

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-08 11:11       ` Dominic Sweetman
@ 2004-03-08 12:15         ` David Ung
  2004-03-08 17:45           ` Eric Christopher
  0 siblings, 1 reply; 24+ messages in thread
From: David Ung @ 2004-03-08 12:15 UTC (permalink / raw)
  To: Dominic Sweetman; +Cc: Long Li, Eric Christopher, linux-mips, Nigel Stephens

On Mon, 2004-03-08 at 11:11, Dominic Sweetman wrote:
> I wrote:
> 
> > > We added patterns to let our (old) GCC use the new rotates and
> > > bit-insert/extracts, at least in simple cases.  I'm not sure whether
> > > we've put those in our 3.4 evolution tree yet, but if we have we
> > > should push those out.
> 
> Long Li (long21st@yahoo.com) replied:
> 
> > Thanks for the email. Could you give me a link to your
> > 3.4 evolution tree?
> 
> Interesting.  It's not as simple as I'd like: our 3.4 work is not yet
> published, and I'm pretty sure it includes support for hardware etc we
> haven't generally released details of yet.
> 
> Nigel (our main gcc expert) is on vacation this week.  In his absence,
> David: do you know whether the rotate/insert stuff is in 3.4 yet?
> 

No, it is not part of the our 3.4 extension yet, but it is part of SDE.
I think the support for rotates already exists in the 3.4 mainline.

David.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-08 12:15         ` David Ung
@ 2004-03-08 17:45           ` Eric Christopher
  0 siblings, 0 replies; 24+ messages in thread
From: Eric Christopher @ 2004-03-08 17:45 UTC (permalink / raw)
  To: David Ung; +Cc: Dominic Sweetman, Long Li, linux-mips, Nigel Stephens


> 
> No, it is not part of the our 3.4 extension yet, but it is part of SDE.
> I think the support for rotates already exists in the 3.4 mainline.

Yes. It was part of Chris's work.

-eric

-- 
Eric Christopher <echristo@redhat.com>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-05 10:12     ` Dominic Sweetman
  (?)
  (?)
@ 2004-03-18 13:18     ` Maciej W. Rozycki
  2004-03-18 14:10       ` Dominic Sweetman
                         ` (2 more replies)
  -1 siblings, 3 replies; 24+ messages in thread
From: Maciej W. Rozycki @ 2004-03-18 13:18 UTC (permalink / raw)
  To: Dominic Sweetman
  Cc: Eric Christopher, Long Li, linux-mips, David Ung, Nigel Stephens

On Fri, 5 Mar 2004, Dominic Sweetman wrote:

> We added patterns to let our (old) GCC use the new rotates and
> bit-insert/extracts, at least in simple cases.  I'm not sure whether
> we've put those in our 3.4 evolution tree yet, but if we have we
> should push those out.

 As a side note, it makes me wonder where the borderline of the RISC
actually is.  Even Intel abandoned support for bit insert/extract
instructions after an initial attempt for the i386.  They figured out the
implementation was too complicated. ;-)

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 13:18     ` Maciej W. Rozycki
@ 2004-03-18 14:10       ` Dominic Sweetman
  2004-03-18 21:19         ` Ralf Baechle
  2004-03-19 13:44         ` Maciej W. Rozycki
  2004-03-18 16:52       ` Michael Uhler
  2004-03-18 21:37       ` Ralf Baechle
  2 siblings, 2 replies; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-18 14:10 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens


Maciej W. Rozycki (macro@ds2.pg.gda.pl) writes:
> 
> > We added patterns to let our (old) GCC use the new rotates and
> > bit-insert/extracts, at least in simple cases.  I'm not sure whether
> > we've put those in our 3.4 evolution tree yet, but if we have we
> > should push those out.
> 
>  As a side note, it makes me wonder where the borderline of the RISC
> actually is.  Even Intel abandoned support for bit insert/extract
> instructions after an initial attempt for the i386.  They figured out the
> implementation was too complicated. ;-)

It probably was... but MIPS uses register-to-register ALU operations
and no condition codes.  The interface to the ALU is typically rather
simple.  So adding some peculiar new 2- or 3-operand computation is
relatively easy.

If the instruction is too complicated, of course, it might eventually
become a critical path and make the whole CPU slower.  But
insert/extract - while elaborate to describe - involve only fairly
shallow logic.

Remember: the point of RISC was never to have less instructions
(that's just a cute acronym) - the point was and is to define an
instruction set which is easy to implement as an efficient pipeline.

Of course, instructions still have to be *useful* to be added.
Insert/extract make a reasonable case for themselves, but actually
arrived in MIPS32 release 2 as part of a bunch of other bit-shuffle
instructions (also includes rotates and various byte-swaps) which -
together - help quite a bit to manipulate sub-word data in registers.

--
Dominic Sweetman
MIPS Technologies

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 13:18     ` Maciej W. Rozycki
  2004-03-18 14:10       ` Dominic Sweetman
@ 2004-03-18 16:52       ` Michael Uhler
  2004-03-18 21:37       ` Ralf Baechle
  2 siblings, 0 replies; 24+ messages in thread
From: Michael Uhler @ 2004-03-18 16:52 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens

Dominic already gave the long explanation.

When we added field insert and extract, we were very sensitive to the
implementability of the instructions.  If you look at the semantic
definition, independent of the somewhat complex explanation, you'll
find that both insert and extract can be implemented with a
left or right shift, followed by a mux-per-bit which selects between
the shifted operand or the unshifted operand.  That can be done
very efficiently in hardware.

/gmu

On Thu, 2004-03-18 at 05:18, Maciej W. Rozycki wrote:
> On Fri, 5 Mar 2004, Dominic Sweetman wrote:
> 
> > We added patterns to let our (old) GCC use the new rotates and
> > bit-insert/extracts, at least in simple cases.  I'm not sure whether
> > we've put those in our 3.4 evolution tree yet, but if we have we
> > should push those out.
> 
>  As a side note, it makes me wonder where the borderline of the RISC
> actually is.  Even Intel abandoned support for bit insert/extract
> instructions after an initial attempt for the i386.  They figured out the
> implementation was too complicated. ;-)
> 
> -- 
> +  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
> +--------------------------------------------------------------+
> +        e-mail: macro@ds2.pg.gda.pl, PGP key available        +
> 
-- 
Michael Uhler, Chief Technology Officer
MIPS Technologies, Inc.  Email: uhler@mips.com
1225 Charleston Road     Voice:  (650)567-5025  FAX:   (650)567-5225
Mountain View, CA 94043  Mobile: (650)868-6870  Admin: (650)567-5085

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 14:10       ` Dominic Sweetman
@ 2004-03-18 21:19         ` Ralf Baechle
  2004-03-19 13:44         ` Maciej W. Rozycki
  1 sibling, 0 replies; 24+ messages in thread
From: Ralf Baechle @ 2004-03-18 21:19 UTC (permalink / raw)
  To: Dominic Sweetman
  Cc: Maciej W. Rozycki, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens

On Thu, Mar 18, 2004 at 02:10:35PM +0000, Dominic Sweetman wrote:

> Of course, instructions still have to be *useful* to be added.
> Insert/extract make a reasonable case for themselves, but actually
> arrived in MIPS32 release 2 as part of a bunch of other bit-shuffle
> instructions (also includes rotates and various byte-swaps) which -
> together - help quite a bit to manipulate sub-word data in registers.

And in some case where MIPS such as certain crypto algorithms where MIPS
and RISCs used to look rather pale the new instructions will help
significantly.

  Ralf

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 13:18     ` Maciej W. Rozycki
  2004-03-18 14:10       ` Dominic Sweetman
  2004-03-18 16:52       ` Michael Uhler
@ 2004-03-18 21:37       ` Ralf Baechle
  2004-03-19 10:42         ` Geert Uytterhoeven
  2004-03-19 13:47         ` Maciej W. Rozycki
  2 siblings, 2 replies; 24+ messages in thread
From: Ralf Baechle @ 2004-03-18 21:37 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens

On Thu, Mar 18, 2004 at 02:18:01PM +0100, Maciej W. Rozycki wrote:

>  As a side note, it makes me wonder where the borderline of the RISC
> actually is.  Even Intel abandoned support for bit insert/extract
> instructions after an initial attempt for the i386.  They figured out the
> implementation was too complicated. ;-)

Take a look at the 68020 to see where instruction set madness can lead:

	movel	([42, a0, d0.2*2],123), ([43, a0, d0.2*2], 22)
	bfextu	([42, a0, d0.2*2],123){8:8}, d2

And I haven't even started bitching about CALLM's bloat over jsr on a
system with MMU disabled or the fantastic complexities it offers with
all gadgets enabled.  Probably desigend for MACH but in the end just
useless no known OS used them and Moto removed them again for the 030.

  Ralf

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 21:37       ` Ralf Baechle
@ 2004-03-19 10:42         ` Geert Uytterhoeven
  2004-03-19 12:55           ` Ralf Baechle
  2004-03-19 13:47         ` Maciej W. Rozycki
  1 sibling, 1 reply; 24+ messages in thread
From: Geert Uytterhoeven @ 2004-03-19 10:42 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Maciej W. Rozycki, Dominic Sweetman, Eric Christopher, Long Li,
	Linux/MIPS Development, David Ung, Nigel Stephens

On Thu, 18 Mar 2004, Ralf Baechle wrote:
> On Thu, Mar 18, 2004 at 02:18:01PM +0100, Maciej W. Rozycki wrote:
> >  As a side note, it makes me wonder where the borderline of the RISC
> > actually is.  Even Intel abandoned support for bit insert/extract
> > instructions after an initial attempt for the i386.  They figured out the
> > implementation was too complicated. ;-)
>
> Take a look at the 68020 to see where instruction set madness can lead:
>
> 	movel	([42, a0, d0.2*2],123), ([43, a0, d0.2*2], 22)
> 	bfextu	([42, a0, d0.2*2],123){8:8}, d2

These instructions didn't complete in 1 cycle, while the new RISCies do.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-19 10:42         ` Geert Uytterhoeven
@ 2004-03-19 12:55           ` Ralf Baechle
  2004-03-24 12:38             ` Goswin von Brederlow
  0 siblings, 1 reply; 24+ messages in thread
From: Ralf Baechle @ 2004-03-19 12:55 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Maciej W. Rozycki, Dominic Sweetman, Eric Christopher, Long Li,
	Linux/MIPS Development, David Ung, Nigel Stephens

On Fri, Mar 19, 2004 at 11:42:11AM +0100, Geert Uytterhoeven wrote:

> > Take a look at the 68020 to see where instruction set madness can lead:
> >
> > 	movel	([42, a0, d0.2*2],123), ([43, a0, d0.2*2], 22)
> > 	bfextu	([42, a0, d0.2*2],123){8:8}, d2
> 
> These instructions didn't complete in 1 cycle, while the new RISCies do.

That's the point, they went overboard with their C^2ISC philosophy.  These
instructions were more or less unusable by compilers of the time and the
given the rarity were not the most performant instructions of the
architecture either, so made sense only relativly rarely.  So in the end
the didn't get it right in the beginning which lead to the removal of the
instruction in 060, if I recall right.

  Ralf

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 14:10       ` Dominic Sweetman
  2004-03-18 21:19         ` Ralf Baechle
@ 2004-03-19 13:44         ` Maciej W. Rozycki
  2004-03-22  9:42           ` Dominic Sweetman
  1 sibling, 1 reply; 24+ messages in thread
From: Maciej W. Rozycki @ 2004-03-19 13:44 UTC (permalink / raw)
  To: Dominic Sweetman
  Cc: Eric Christopher, Long Li, linux-mips, David Ung, Nigel Stephens

On Thu, 18 Mar 2004, Dominic Sweetman wrote:

> >  As a side note, it makes me wonder where the borderline of the RISC
> > actually is.  Even Intel abandoned support for bit insert/extract
> > instructions after an initial attempt for the i386.  They figured out the
> > implementation was too complicated. ;-)
> 
> It probably was... but MIPS uses register-to-register ALU operations
> and no condition codes.  The interface to the ALU is typically rather
> simple.  So adding some peculiar new 2- or 3-operand computation is
> relatively easy.

 Well, I suppose that's not much different for a processor like the i386,
which is already capable to load a source operand or store (or RMW) a
destination one for whatever operation is to be executed by the ALU or
microcoded.  Intel could have taken the baroque (or rococo?) approach as
usual, though, and thus run out of die space. ;-)

> Remember: the point of RISC was never to have less instructions
> (that's just a cute acronym) - the point was and is to define an
> instruction set which is easy to implement as an efficient pipeline.

 Well, the meaning of RISC indeed depends on what you express by "reduced"  
there (i.e. whether it's "small" or "simple").  Historically, the
instruction set used to include about the smallest reasonable set of 
operations needed for efficient programming, with any redundancy offloaded 
to short sequences of simple instructions.  This could have changed, as 
technology evolved, though.

> Of course, instructions still have to be *useful* to be added.

 Well, I suppose so, as long as you set a reasonable threshold on 
usefulness.

> Insert/extract make a reasonable case for themselves, but actually
> arrived in MIPS32 release 2 as part of a bunch of other bit-shuffle
> instructions (also includes rotates and various byte-swaps) which -
> together - help quite a bit to manipulate sub-word data in registers.

 I see.  Actually all of them are a bit redundant, often replaceable with
short sequences of other instructions, but I guess code compacting may
matter more for the embedded environment than for general-purpose
computing.

 And while we are at instruction usefulness -- why are there the "di" and
"ei" instructions, but there is no a complement instruction, say "si" (for
"set interrupts"), that would copy bit #0 from a GPR to cp0.status.ie
compactly and atomically?

  Maciej

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-18 21:37       ` Ralf Baechle
  2004-03-19 10:42         ` Geert Uytterhoeven
@ 2004-03-19 13:47         ` Maciej W. Rozycki
  1 sibling, 0 replies; 24+ messages in thread
From: Maciej W. Rozycki @ 2004-03-19 13:47 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens

On Thu, 18 Mar 2004, Ralf Baechle wrote:

> Take a look at the 68020 to see where instruction set madness can lead:
> 
> 	movel	([42, a0, d0.2*2],123), ([43, a0, d0.2*2], 22)
> 	bfextu	([42, a0, d0.2*2],123){8:8}, d2
> 
> And I haven't even started bitching about CALLM's bloat over jsr on a
> system with MMU disabled or the fantastic complexities it offers with
> all gadgets enabled.  Probably desigend for MACH but in the end just
> useless no known OS used them and Moto removed them again for the 030.

 But m68k isn't exactly RISC and high code density was a priority over
microcode simplicty (or absence) for the architecture.

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-19 13:44         ` Maciej W. Rozycki
@ 2004-03-22  9:42           ` Dominic Sweetman
  2004-03-22 11:14             ` Maciej W. Rozycki
  0 siblings, 1 reply; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-22  9:42 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens


Maciej

> > Insert/extract make a reasonable case for themselves, but actually
> > arrived in MIPS32 release 2 as part of a bunch of other bit-shuffle
> > instructions (also includes rotates and various byte-swaps) which -
> > together - help quite a bit to manipulate sub-word data in registers.
> 
>  I see.  Actually all of them are a bit redundant, often replaceable with
> short sequences of other instructions, but I guess code compacting may
> matter more for the embedded environment than for general-purpose
> computing.

When we relied on things like Specmarks for benchmarks, those are
mostly general purpose C programs.  They tend to be intricate
programs, not dominated by repetitive handling of large-scale data
(the floating point benchmarks *are* data-intensive, which is why 
architectural strangeness is much more successful on those).

Moreover, Specmarks have a strong tendency to use 'int' data types;
sub-word data handling is essentially irrelevant to performance on
them.  RISCs are good at the fiddly stuff (at least, well-designed
RISCs are) and happy with the int data types: so the Specmarks are
relatively good and we're happy.

But an important sub-class of embedded workloads are data intensive,
where the data represents some sort of stream.  Basic data items are
often 8- or 16-bits in size.  Existing RISC instruction sets end up
bloating the inner loops of these programs, and it's marginal
performance gains rather than code size which motivates us to make
this work better.

>  And while we are at instruction usefulness -- why are there the "di" and
> "ei" instructions, but there is no a complement instruction, say "si" (for
> "set interrupts"), that would copy bit #0 from a GPR to cp0.status.ie
> compactly and atomically?

The 'di' is there to be atomic.  Such sequences are rare and code
compactness is not an issue.  As you probably heard before, the use of
a potentially-interruptible RMW sequence on the status register to
disable interrupts is potentially troublesome (most common OS' manage
themselves so it isn't an issue, but still...)

The 'ei' comes for free with it.

In encoding terms, di/ei can be seen to be individual members of a
generic instruction whose action is something like "atomically
set/clear bit in a CP0 register".  But CP0 registers are low-level
things, whose bits have real hardware functions; so implementing the
bit-set/bit-clear is not the same in all cases.  So we've defined
this instruction minimally, only or critical bits.

--
Dominic

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-22  9:42           ` Dominic Sweetman
@ 2004-03-22 11:14             ` Maciej W. Rozycki
  2004-03-22 14:49               ` Dominic Sweetman
  2004-03-22 16:19               ` Michael Uhler
  0 siblings, 2 replies; 24+ messages in thread
From: Maciej W. Rozycki @ 2004-03-22 11:14 UTC (permalink / raw)
  To: Dominic Sweetman
  Cc: Eric Christopher, Long Li, linux-mips, David Ung, Nigel Stephens

Dominic,

> But an important sub-class of embedded workloads are data intensive,
> where the data represents some sort of stream.  Basic data items are
> often 8- or 16-bits in size.  Existing RISC instruction sets end up
> bloating the inner loops of these programs, and it's marginal
> performance gains rather than code size which motivates us to make
> this work better.

 I see.  Though the associated code compaction reduces cache footprint
which improves performance as well.

> The 'di' is there to be atomic.  Such sequences are rare and code
> compactness is not an issue.  As you probably heard before, the use of
> a potentially-interruptible RMW sequence on the status register to
> disable interrupts is potentially troublesome (most common OS' manage
> themselves so it isn't an issue, but still...)

 Hmm, is the remaining minority of the OSes, that can't manage the
sequence, important enough to add such an instruction?  The atomicity of
this operation should only matter if interrupt handlers are expected to
leave interrupts disabled upon an exit to the same context -- such a setup
should be pretty rare.

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-22 11:14             ` Maciej W. Rozycki
@ 2004-03-22 14:49               ` Dominic Sweetman
  2004-03-22 16:19               ` Michael Uhler
  1 sibling, 0 replies; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-22 14:49 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens


Maciej,

> > The 'di' is there to be atomic...
> 
>  Hmm, is the remaining minority of the OSes, that can't manage the
> sequence, important enough to add such an instruction?

Perhaps not.  The case I always suggest is that of a serial port
transmit interrupt handler, which often wants to disable the TxReady
interrupt when it finds there's no more data to send.  There's almost
always a way to do that without changing the SR interrupt mask, of
course... 

--
Dominic

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-22 11:14             ` Maciej W. Rozycki
  2004-03-22 14:49               ` Dominic Sweetman
@ 2004-03-22 16:19               ` Michael Uhler
  1 sibling, 0 replies; 24+ messages in thread
From: Michael Uhler @ 2004-03-22 16:19 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Dominic Sweetman, Eric Christopher, Long Li, linux-mips,
	David Ung, Nigel Stephens

The real issue is one of strictly nested interrupts.  The lack of an
atomic di, in particular, works fine as long as all interrupts are
strictly nested in such a way that no interrupt code changes the
state of the IM bits between the read and write of the sequence.
While most operating systems appear to be strictly nested, there
are some very important kernels in embedded markets which are not
strictly nested.

When I added di (and, for symmetry, ei) to Release 2, I did so after
spending considerable time talking with these customers and was
convinced that it was important.

/gmu

On Mon, 2004-03-22 at 03:14, Maciej W. Rozycki wrote:

> > The 'di' is there to be atomic.  Such sequences are rare and code
> > compactness is not an issue.  As you probably heard before, the use of
> > a potentially-interruptible RMW sequence on the status register to
> > disable interrupts is potentially troublesome (most common OS' manage
> > themselves so it isn't an issue, but still...)
> 
>  Hmm, is the remaining minority of the OSes, that can't manage the
> sequence, important enough to add such an instruction?  The atomicity of
> this operation should only matter if interrupt handlers are expected to
> leave interrupts disabled upon an exit to the same context -- such a setup
> should be pretty rare.

-- 
Michael Uhler, Chief Technology Officer
MIPS Technologies, Inc.  Email: uhler@mips.com
1225 Charleston Road     Voice:  (650)567-5025  FAX:   (650)567-5225
Mountain View, CA 94043  Mobile: (650)868-6870  Admin: (650)567-5085

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-19 12:55           ` Ralf Baechle
@ 2004-03-24 12:38             ` Goswin von Brederlow
  2004-03-24 13:52               ` Ralf Baechle
  0 siblings, 1 reply; 24+ messages in thread
From: Goswin von Brederlow @ 2004-03-24 12:38 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Geert Uytterhoeven, Maciej W. Rozycki, Dominic Sweetman,
	Eric Christopher, Long Li, Linux/MIPS Development, David Ung,
	Nigel Stephens

Ralf Baechle <ralf@linux-mips.org> writes:

> On Fri, Mar 19, 2004 at 11:42:11AM +0100, Geert Uytterhoeven wrote:
> 
> > > Take a look at the 68020 to see where instruction set madness can lead:
> > >
> > > 	movel	([42, a0, d0.2*2],123), ([43, a0, d0.2*2], 22)
> > > 	bfextu	([42, a0, d0.2*2],123){8:8}, d2
> > 
> > These instructions didn't complete in 1 cycle, while the new RISCies do.
> 
> That's the point, they went overboard with their C^2ISC philosophy.  These
> instructions were more or less unusable by compilers of the time and the
> given the rarity were not the most performant instructions of the
> architecture either, so made sense only relativly rarely.  So in the end
> the didn't get it right in the beginning which lead to the removal of the
> instruction in 060, if I recall right.
> 
>   Ralf

Thats a

 move.l 31530(A0, D0*2), 5675(A0, D0*2)  (that would give a bus error)

before assembly right?

That instruction is great to access array or aligned structure members
with an offset and compilers should be able to generate it for it. But
its only realy usefull if your short on registers, which gcc does not
optimize for.

Don't think they got removed. Could it be you are thinking about
mulu.l d0,d0:d1   (32*32=64 bit mul) and the like?

MfG
        Goswin

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-24 12:38             ` Goswin von Brederlow
@ 2004-03-24 13:52               ` Ralf Baechle
  2004-03-24 17:57                 ` Dominic Sweetman
  0 siblings, 1 reply; 24+ messages in thread
From: Ralf Baechle @ 2004-03-24 13:52 UTC (permalink / raw)
  To: Goswin von Brederlow
  Cc: Geert Uytterhoeven, Maciej W. Rozycki, Dominic Sweetman,
	Eric Christopher, Long Li, Linux/MIPS Development, David Ung,
	Nigel Stephens

On Wed, Mar 24, 2004 at 01:38:27PM +0100, Goswin von Brederlow wrote:

>  move.l 31530(A0, D0*2), 5675(A0, D0*2)  (that would give a bus error)
> 
> before assembly right?
> 
> That instruction is great to access array or aligned structure members
> with an offset and compilers should be able to generate it for it. But
> its only realy usefull if your short on registers, which gcc does not
> optimize for.
> 
> Don't think they got removed. Could it be you are thinking about
> mulu.l d0,d0:d1   (32*32=64 bit mul) and the like?

Maybe - my memories of 68k are getting dusty.  In '92 or '93 I had started
my own Linux/68k port but disgusted by the complexity of some parts of the
68k architecture - such as execution timing tables of several pages just
for the move instruction or even shell scripts in case of the 68851 MMU.
Eventually I got my hands on a MIPS box in '94, again for porting Linux
to MIPS as the very first MIPS project I ever did.  Architectures tend to
get ugly when they age, when new features are added and compatibility
issues arrise but for most part I think MIPS has managed to age very
gracefully which I believe in part is one of the benefits of RISC design
principles, so I'm still happy after 10 years of MIPS stuff and feel
little desire to open those Motorola manuals on my shelf :-)

  Ralf

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: gcc support of mips32 release 2
  2004-03-24 13:52               ` Ralf Baechle
@ 2004-03-24 17:57                 ` Dominic Sweetman
  0 siblings, 0 replies; 24+ messages in thread
From: Dominic Sweetman @ 2004-03-24 17:57 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Goswin von Brederlow, Geert Uytterhoeven, Maciej W. Rozycki,
	Dominic Sweetman, Eric Christopher, Long Li,
	Linux/MIPS Development, David Ung, Nigel Stephens


> ... I think MIPS has managed to age very
> gracefully which I believe in part is one of the benefits of RISC design
> principles, so I'm still happy after 10 years of MIPS stuff

Thanks Ralf, the cheque will be in the post :-)

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2004-03-24 17:57 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-05  7:55 gcc support of mips32 release 2 Long Li
2004-03-05  9:14 ` Eric Christopher
2004-03-05 10:12   ` Dominic Sweetman
2004-03-05 10:12     ` Dominic Sweetman
2004-03-05 17:03     ` Long Li
2004-03-08 11:11       ` Dominic Sweetman
2004-03-08 12:15         ` David Ung
2004-03-08 17:45           ` Eric Christopher
2004-03-18 13:18     ` Maciej W. Rozycki
2004-03-18 14:10       ` Dominic Sweetman
2004-03-18 21:19         ` Ralf Baechle
2004-03-19 13:44         ` Maciej W. Rozycki
2004-03-22  9:42           ` Dominic Sweetman
2004-03-22 11:14             ` Maciej W. Rozycki
2004-03-22 14:49               ` Dominic Sweetman
2004-03-22 16:19               ` Michael Uhler
2004-03-18 16:52       ` Michael Uhler
2004-03-18 21:37       ` Ralf Baechle
2004-03-19 10:42         ` Geert Uytterhoeven
2004-03-19 12:55           ` Ralf Baechle
2004-03-24 12:38             ` Goswin von Brederlow
2004-03-24 13:52               ` Ralf Baechle
2004-03-24 17:57                 ` Dominic Sweetman
2004-03-19 13:47         ` Maciej W. Rozycki

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.