Reviewers: danno, Jakob, Toon Verwaest,
Message:
This CL is submitted on behalf of Intel V8 SIMD team (Haitao Feng, Weiliang
Lin
and Ningxin Hu). We have implemented John McChutchan's SIMD strawman
proposal at
https://github.com/johnmccutchan/ecmascript_simd. This CL is not for
committing,
but to get V8 core team's high-level feedback on the implementation.
Compatibility Risk:
1) I do not know the exact status of the SIMD API acceptance in the TC39
committee.
2) Mozilla is interested with this API. They have landed float32x4 and
int32x4 constructors in the Firefox Nightly
(https://hg.mozilla.org/mozilla-central/rev/6015e057d116).
Impact on the Web platform:
With the V8 implementation, we could get 3X - 6X speedup for the SIMD
benchmarks from
https://github.com/johnmccutchan/ecmascript_simd/tree/master/src/benchmarks,
the
speedup is similar with Dart SIMD implementation, the dart benchmarks are
from
https://github.com/johnmccutchan/ecmascript_simd/tree/master/dart/bin.
Design document:
The design document is at
https://github.com/fenghaitao/v8/blob/simd/doc/Simd128.pdf.
Engine flag:
The SIMD feature could be enabled by --simd_object, by default it is off.
Test cases and benchmarks:
Test cases are uploaded and benchmarks have been mentioned in the "Impact
on the
Web platform" section.
Ports:
We implemented IA32 port (w/ and w/o SSE2) and X64 port (w/ SSE2 always).
ARM
port and MIPS port are missing. The Dart SIMD ARM port is done by community
and
we expect the similar thing could happen for JavaScript SIMD v8
implementation.
Description:
Experimental feature: Exposing SIMD instructions into JavaScript
Please review this at https://codereview.chromium.org/90643003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+12407, -336 lines):
M include/v8.h
M src/api.h
M src/api.cc
M src/ast.cc
M src/bootstrapper.cc
M src/code-stubs.cc
M src/contexts.h
M src/d8.h
M src/d8.js
M src/deoptimizer.h
M src/deoptimizer.cc
M src/elements-kind.h
M src/elements-kind.cc
M src/elements.cc
M src/factory.h
M src/factory.cc
M src/flag-definitions.h
M src/globals.h
M src/heap.h
M src/heap.cc
M src/hydrogen-instructions.h
M src/hydrogen-instructions.cc
M src/hydrogen-representation-changes.cc
M src/hydrogen.h
M src/hydrogen.cc
M src/ia32/assembler-ia32.h
M src/ia32/assembler-ia32.cc
src/ia32/deoptimizer-ia32.cc
M src/ia32/disasm-ia32.cc
M src/ia32/full-codegen-ia32.cc
M src/ia32/lithium-codegen-ia32.h
M src/ia32/lithium-codegen-ia32.cc
M src/ia32/lithium-gap-resolver-ia32.cc
M src/ia32/lithium-ia32.h
M src/ia32/lithium-ia32.cc
M src/ia32/macro-assembler-ia32.h
M src/ia32/macro-assembler-ia32.cc
M src/ia32/stub-cache-ia32.cc
M src/ic-inl.h
M src/ic.cc
M src/lithium-allocator-inl.h
M src/lithium-allocator.h
M src/lithium-allocator.cc
M src/lithium.h
M src/lithium.cc
M src/macros.py
M src/mark-compact.cc
M src/objects-debug.cc
M src/objects-inl.h
M src/objects-printer.cc
M src/objects-visiting.cc
M src/objects.h
M src/objects.cc
M src/property-details.h
M src/runtime.h
M src/runtime.cc
M src/runtime.js
A src/simd128.js
M src/stub-cache.cc
M src/types.h
M src/types.cc
src/v8globals.h
M src/v8memory.h
M src/x64/assembler-x64-inl.h
M src/x64/assembler-x64.h
M src/x64/assembler-x64.cc
M src/x64/deoptimizer-x64.cc
M src/x64/disasm-x64.cc
M src/x64/full-codegen-x64.cc
M src/x64/lithium-codegen-x64.h
M src/x64/lithium-codegen-x64.cc
M src/x64/lithium-gap-resolver-x64.cc
M src/x64/lithium-x64.h
M src/x64/lithium-x64.cc
M src/x64/macro-assembler-x64.h
M src/x64/macro-assembler-x64.cc
M src/x64/stub-cache-x64.cc
M test/cctest/test-disasm-ia32.cc
A test/mjsunit/simd/argument_object.js
A + test/mjsunit/simd/captured_object.js
test/mjsunit/simd/deopt.js
A test/mjsunit/simd/float32x4.js
A test/mjsunit/simd/int32x4.js
A + test/mjsunit/simd/osr.js
A + test/mjsunit/simd/prototype.js
A + test/mjsunit/simd/representation_change.js
M tools/gyp/v8.gyp
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.