[Mesa-dev] [PATCH] gallium: Disable Altivec on PPC SPE variants

Stuart Young cefiar at gmail.com
Mon Jul 2 11:11:33 UTC 2018


Possibly you might be right. If so, I suspect it'll just continue to
languish in Debian

I will point out that this isn't quite your typical PowerPC core, and quite
a bit was hacked out to implement the Signal Processing Engine by Freescale
when it was created. I will also note that while the core is supposedly
still in production, it's not sold for new designs.

Apart from the missing Altivec unit, the e500v1 and e500v2 cores use the
"Book E instruction set for 32-bit implementations. This is composed
primarily of the user-level instructions defined by the PowerPC user
instruction set architecture (UISA). The e500 does not include Book E
floating-point, load string, or store string instructions."

(Quoted from
http://cache.freescale.com/files/32bit/doc/ref_manual/E500CORERM.pdf page
1-12, section 1.4).


On Mon, 2 Jul 2018 at 19:35, Michel Dänzer <michel at daenzer.net> wrote:

> On 2018-07-01 08:36 AM, Stuart Young wrote:
> > PowerPC variants with the Signal Processing Engine do not support
> > Altivec instructions, as the SPE instruction set uses the same
> > instruction codes as the Altivec set available in most PowerPC
> > cores. Note that this is not related to the "Synergistic Processing
> > Element" units on IBM Cell microprocessors.
> >
> > This patch prevents any Altivec specialising on these cores by
> > looking for __NO_FPRS__ (should only be defined on these variants).
> > ---
> >  src/gallium/include/pipe/p_config.h | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/src/gallium/include/pipe/p_config.h
> b/src/gallium/include/pipe/p_config.h
> > index 3fa43ed797..0a6251e060 100644
> > --- a/src/gallium/include/pipe/p_config.h
> > +++ b/src/gallium/include/pipe/p_config.h
> > @@ -103,12 +103,16 @@
> >  #endif
> >  #endif
> >
> > +#if defined (__NO_FPRS__)
> > +/* Skip PPC tests as possible PowerPC SPE (Signal Processing Engine)
> variant */
> > +#else
> >  #if defined(__ppc__) || defined(__ppc64__) || defined(__PPC__)
> >  #define PIPE_ARCH_PPC
> >  #if defined(__ppc64__) || defined(__PPC64__)
> >  #define PIPE_ARCH_PPC_64
> >  #endif
> >  #endif
> > +#endif
> >
> >  #if defined(__s390x__)
> >  #define PIPE_ARCH_S390
> >
>
> This is probably too big a hammer — PIPE_ARCH_PPC(_64) are used for
> other things than Altivec detection.
>
>
> --
> Earthling Michel Dänzer               |               http://www.amd.com
> Libre software enthusiast             |             Mesa and X developer
>


-- 
Stuart Young (aka Cefiar)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180702/7bc3e39f/attachment.html>


More information about the mesa-dev mailing list