funkcje gcc w jądrze (__ucmpdi2 itp.)

Jakub Bogusz qboosh w pld-linux.org
Wto, 11 Maj 2004, 20:12:15 CEST


On Tue, May 11, 2004 at 01:22:20AM +0200, Paweł Sikora wrote:
> On Tuesday 11 of May 2004 01:12, Maciej 'Agaran' Pijanka wrote:
> > On Tue, May 11, 2004 at 01:09:34AM +0200, Paweł Sikora wrote:
> > > On Tuesday 11 of May 2004 00:44, Jakub Bogusz wrote:
> > > > Eh. _ppc_, nie pentium.
> > > > Użycie tych funkcji jest zależne od zestawu instrukcji procesora.
> > > > Wiadomo, że CISC obsługuje bezpośrednio więcej operacji niż RISC.
> > >
> > > no ale bez jajow. przeciez zadnej cudownych instrukcji cisc gcc nie uzyl.
> > > z tego co widze, to tylko prosta arytmetyka ktora risc tez posiada.
> >
> > obawiam sie ze gcc uzywa sporej czesci rozkazów danego procesora
> > inaczej kod i386 i i686 nie roznilby sie..
> 
> przed chwila pierwszy raz zagladnalem do fragmentu listy rozkazow ppc
> http://pds.twi.tudelft.nl/vakken/in1200/labcourse/instruction-set/
> i widze tam rozkazy z ktorych mozna zbudowac cos podobnego do tego
> co mi wyplul gcc340 na ix86. ztcw, to ppc ma 32 rejestry 32 bitowe
> i chyba nawet kod bylby krotszy niz na ix86, ale glowy nie dam,
> bo tylko toretyzuje.

gcc ma jakieś dziwne nawyki co do switcha.
Na ppc wstawia te wywołania __ucmpdi2() i nie chce tego optymalizować,
niezależnie od -O[023] ani -finline-functions.
Zamiana switcha na porównania (sprawdzenie równości - może przy
nierównościach by tak nie było) likwiduje problem
(a że to jest raptem 6 przypadków, nie ma co się bawić w wyszukiwanie
binarne).


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl