On Wed, 2006-08-16 at 00:19 +0000, Aivars Kalvans wrote: > Jorn Baayen wrote: > > On Fri, 2006-08-11 at 09:42 +0100, Michael Meeks wrote: > > > >> Is the common case of that a multiplication by a unit matrix, [ ie. a > >> no-op ;-] that could be elided if that's detectable / propagate-able ? > >> [ though it seems there is no space in 'matrix' to ram an 'unsigned int > >> is-unit : 1' into ;-) Or is it perhaps a simple scaling [ reduce by 2x > >> the muls ? ]. > >> > > > > I'm not so sure. Carl? > > > > Matrix with values like { 1.0, 0.0, 0.0, 1.0, 0.0, 0.0 } does not > require any multiplication, because result is the same as input. Both > gstate->ctm and gstate->target->device_transform had such values when I > run your test program. This often seems to be true for "real" > applications as well (tried gedit). Sometimes x0 and y0 are not 0.0, but > for such cases we could add another workaround (x += x0, y+= y0).
Yea, I was not sure whether this was a common case. Apparently it is, because your patch causes __muldf3() to drop from 7.7% to 3.9% :) The full patched cairo profile is here: http://www.o-hand.com/~jorn/pango-benchmarks/210-softfloat/cairo-must-transform.txt Cool stuff. Thanks, Jorn -- OpenedHand Ltd. http://o-hand.com/ _______________________________________________ Performance-list mailing list Performance-list@gnome.org http://mail.gnome.org/mailman/listinfo/performance-list