Once type-feedback told hydrogen that division happened to produce
double value it does not try to revert it to integer division.

The only exception is (quite fragile) MathFloorOfDiv optimization
performed by HUnaryMathOperation::Canonicalize.

Consider contributing your patch :-)

--
Vyacheslav Egorov


On Tue, Jul 24, 2012 at 8:18 PM, Evan Wallace <[email protected]> wrote:
> I've been trying to optimize image manipulation and I couldn't get V8 to
> emit integer division instructions. Does V8 currently emit any integer
> division instructions? It seems odd that it wouldn't because it does have
> the capability to emit them (see LDivI). I was going to submit a bug but
> wanted to check first that this really is the case.
>
> When using typed arrays, division causes lots of conversions to and from
> doubles. Since V8 does range analysis, it should be possible to emit integer
> division for at least the case with non-negative dividends and positive
> divisors when the target location is an integer. I hacked up a quick proof
> of concept yesterday and got an easy 2x speedup (for converting a
> premultiplied alpha image to non-premultiplied alpha). This puts V8 at the
> speed of optimized C code and seems like too good an optimization to pass
> up. This optimization would also be useful for tools like emscripten.
>
> function undoPremultiplication(image, w, h) {
>   for (var y = 0, i = 0; y < h; y++) {
>     for (var x = 0; x < w; x++, i += 4) {
>       var alpha = image[i + 3];
>       if (alpha > 0) {
>         image[i + 0] = image[i + 0] * 0xFF / alpha;
>         image[i + 1] = image[i + 1] * 0xFF / alpha;
>         image[i + 2] = image[i + 2] * 0xFF / alpha;
>       }
>     }
>   }
> }
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to