SIMD/Multimedia code

Wolfgang Spraul wolfgang at sharism.cc
Thu Apr 29 00:56:28 EDT 2010


Ben,
sorry it took so long to reply...

On Tue, Apr 06, 2010 at 12:44:38AM -0400, Benjamin M. Schwartz wrote:
> According to the datasheet [1], the Ingenic Jz4720 CPU has
> (1) XBurst SIMD Instruction set to support multimedia acceleration
> (2) Image Processing Unit (IPU) for video frame resize and color space
> conversion
> To what extent are these documented?  I hear that there is some source

We haven't started looking into the IPU yet, the SIMD instructions seem
like lower hanging fruits and not much work has started there either yet...
There was a thread about SIMD back in August of last year:
http://en.qi-hardware.com/pipermail/developer/2009-August/thread.html#267

That's basically still where things are standing. The CPU in the Ben NanoNote
has a set of SIMD instructions that could be used to accelerate all sorts of
things, like video or image processing.
All Ingenic CPUs support the SIMD instructions, except for the 4730 which is
their oldest one. The newer CPUs like 4755 may have a few extra instructions,
so you may see references to SIMD2. But the bulk of it was introduced with
the 4740 aka 4720/4725.

Quite a few pieces are publicly available, probably enough to make it all
work, given enough time:

1) Brief introduction document

ftp://ftp.ingenic.cn/3sw/01linux/06docs/20100304/mxu_user_guide_EN.pdf

2) Assembler, mxu_as

Available inside jz-crosstools:
ftp://ftp.ingenic.cn/3sw/01linux/00toolchain/jz-crosstools-src.tar.bz2
(misc/mxu_as, 43850 bytes, dated 5 Dec 2008)

If anybody wants to take a quick look here is a one-click link to an
older version:
http://gitorious.org/~jz4740/jz4740_project/ucosII/blobs/580224eb86acaaebd40925e17591fb69e14cc745/mxu_as

3) jz_mxu.h file including translations of some instructions into C

There is a misc/jz_mxu.h in jz-crosstools already (and yet another one in the
new mplayer sources), but a better documented version was published as part
of the jpeg sources:
ftp://ftp.ingenic.cn/3sw/01linux/04utils/jpeg-6b/jpeg-6b-idctmxu-jz4740-080422.tgz
Some of the SIMD instructions are listed together with their C translations.

4) MPlayer sources including SIMD acceleration

There are two versions
ftp://ftp.ingenic.cn/3sw/01linux/05apps/mplayer/MPlayer-1.0rc2-20090218.tar.bz2
ftp://ftp.ingenic.cn/3sw/01linux/05apps/mplayer/mplayer-1.0rc2-jz47-20100415.tar.bz2

Both contain different kinds of information, search for any filenames
*mxu*. The older one has C files and corresponding _mxu.s machine
instructions, the newer one has yet another copy of jz_mxu.h as
well as more codecs utilizing the SIMD instructions.

---
@Sander - I know you setup a European mirror at
ftp://grids.be/mirror/ftp.ingenic.cn
but I just tried and always got errors like "3sw: No such file or directory"
trying to cd into that dir.

Anyway this sums up what I believe we currently know about XBurst SIMD.
It's all out there, someone would need to collect the pieces, clean it up,
integrate it into the toolchain etc.
Hope this helps,
Wolfgang




More information about the discussion mailing list


interactive