[cairo] Pixman refactoring

Jonathan Morton jonathan.morton at movial.com
Mon May 25 00:43:07 PDT 2009


On Sat, 2009-05-23 at 16:57 +0200, Soeren Sandmann wrote:
> Peter Harris <pharris at opentext.com> writes:
> 
> > Take, for example, the Win64 ABI, which doesn't allow MMX. So you'd want
> 
> Are you sure about this? The MMX registers are aliased onto the
> floating point stack, so the operating system would have to go out of
> its way to not support it.

I think the problem is that the whole x87/MMX/3DNow shebang - everything
that uses the x87 registers - is deprecated (I don't know whether it's
supposed to SIGILL, I'm not an x86 man :) on AMD64, and replaced by
SSE2.

Okay, there's still legacy support for IA32, so the OS still has to
handle the context switching, so you could probably get MMX to "work" in
many cases from 64-bit code (provided it doesn't throw SIGILL at you),
but it's definitely on the dangerous side.  But you also know whether
you're building 64-bit code at compile time.

Generally on ARM you also tend to build for a particular processor, or
at least architecture version, so you can make quite a lot of
optimisation decisions at compile time.  For example, the set of
software that runs on an ARMv7-M CPU (a miniature core, <= 100K
transistors) is very different from that which runs on an ARMv7-A CPU
(near desktop performance, ~100M transistors).

You *could* graft a NEON coprocessor to the side of an ARMv7-M CPU, and
maybe even use the result as a quick-and-dirty graphics accelerator.
Miniature ARM cores are commonly used to control complex co-processors
(a GPU for example), so it would actually make sense to use a NEON unit
to run a basic 2D engine while the main unit, which the ARM core
normally controls, was switched off.

So you probably could get a CPU with NEON but not SIMD, but you'd almost
certainly know about it at compile-time, and there's a fair chance that
it wouldn't be running any kind of normal OS.

On PowerPC there's a whole other kind of mess.  There are two different
kinds of SIMD instruction set - Altivec/VMX and the one you get on some
400-series chips.  But I don't think you ever get both on the same CPU,
as the 400-series really are cut-down basic jobs, probably designed for
those things where an ARM just wasn't quite enough at the time, such as
printers.  So from our perspective it's simple.

-- 
------
From: Jonathan Morton
      jonathan.morton at movial.com




More information about the cairo mailing list