I've just been looking at liboil, the "Library of optimised inner
loops" with an idea to using it to speed cpu-intensive parts of gnash
up, but my impression is pretty negative.
The documentation is miserable: you cannot figure out how to use any
of their functions just by reading the documentation: many function
parameters are totally undocumented. There is no mention of whether
pointer parameters are used to return a single value or an array, no
adequate description (let alone an actual *definition*, which is what
the doc should be) of what any function does, no mention of what
enumerated or bitfield return values can have or mean. Function naming
is incoherent (add_f64 but sum_f32 - maybe the same function, maybe
not). Pathetic.
Then I looked at the code. Oh dear.
No accelleration for anything but mmx sse and other x86 friends. C
implementations make x86-specific assumptions about pointer values and
data layout. Unaligned data access is encouraged if it is possible,
not edge-trimmed and fixed. The thing coded as "duff's device" is not
duff's device, it is something else that looks similar. The
unaccellerated versions of code are less efficient than what I would
normally code in speed-optimised C, unless you happen to be using a
very intelligent compiler that put parameters in registers...
Nice idea. Maybe it will get better in a few years.
M
_______________________________________________
Gnash-dev mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/gnash-dev