Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Issue 90643003: Experimental implementation: Exposing SIMD instructions into JavaScript

Created:
7 years ago by haitao.feng
Modified:
7 years ago
CC:
v8-dev, Paweł Hajdan Jr., john_johnmccutchan.com, Weiliang, nhu
Visibility:
Public.

Description

Experimental impelementation: Exposing SIMD instructions into JavaScript

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+12407 lines, -336 lines) Patch
M include/v8.h View 7 chunks +58 lines, -4 lines 0 comments Download
M src/api.h View 3 chunks +8 lines, -0 lines 0 comments Download
M src/api.cc View 4 chunks +16 lines, -0 lines 0 comments Download
M src/ast.cc View 1 chunk +6 lines, -0 lines 0 comments Download
M src/bootstrapper.cc View 5 chunks +98 lines, -0 lines 0 comments Download
M src/code-stubs.cc View 1 chunk +2 lines, -0 lines 0 comments Download
M src/contexts.h View 4 chunks +14 lines, -0 lines 0 comments Download
M src/d8.h View 1 chunk +2 lines, -0 lines 0 comments Download
M src/d8.js View 1 chunk +2 lines, -0 lines 0 comments Download
M src/deoptimizer.h View 13 chunks +104 lines, -7 lines 0 comments Download
M src/deoptimizer.cc View 13 chunks +305 lines, -0 lines 0 comments Download
M src/elements.cc View 6 chunks +32 lines, -0 lines 0 comments Download
M src/elements-kind.h View 2 chunks +12 lines, -0 lines 0 comments Download
M src/elements-kind.cc View 1 chunk +2 lines, -0 lines 0 comments Download
M src/factory.h View 1 chunk +5 lines, -0 lines 0 comments Download
M src/factory.cc View 2 chunks +22 lines, -0 lines 0 comments Download
M src/flag-definitions.h View 1 chunk +1 line, -0 lines 0 comments Download
M src/globals.h View 2 chunks +19 lines, -8 lines 0 comments Download
M src/heap.h View 6 chunks +28 lines, -0 lines 0 comments Download
M src/heap.cc View 6 chunks +80 lines, -0 lines 0 comments Download
M src/hydrogen.h View 2 chunks +16 lines, -0 lines 0 comments Download
M src/hydrogen.cc View 10 chunks +406 lines, -7 lines 0 comments Download
M src/hydrogen-instructions.h View 16 chunks +568 lines, -8 lines 0 comments Download
M src/hydrogen-instructions.cc View 8 chunks +326 lines, -0 lines 0 comments Download
M src/hydrogen-representation-changes.cc View 1 chunk +12 lines, -2 lines 0 comments Download
M src/ia32/assembler-ia32.h View 5 chunks +53 lines, -1 line 0 comments Download
M src/ia32/assembler-ia32.cc View 2 chunks +232 lines, -0 lines 0 comments Download
src/ia32/deoptimizer-ia32.cc View 6 chunks +17 lines, -16 lines 0 comments Download
M src/ia32/disasm-ia32.cc View 7 chunks +97 lines, -3 lines 0 comments Download
M src/ia32/full-codegen-ia32.cc View 1 chunk +8 lines, -0 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.h View 3 chunks +8 lines, -0 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 15 chunks +1065 lines, -9 lines 0 comments Download
M src/ia32/lithium-gap-resolver-ia32.cc View 2 chunks +78 lines, -0 lines 0 comments Download
M src/ia32/lithium-ia32.h View 6 chunks +241 lines, -6 lines 0 comments Download
M src/ia32/lithium-ia32.cc View 10 chunks +373 lines, -23 lines 0 comments Download
M src/ia32/macro-assembler-ia32.h View 2 chunks +13 lines, -0 lines 0 comments Download
M src/ia32/macro-assembler-ia32.cc View 4 chunks +81 lines, -3 lines 0 comments Download
M src/ia32/stub-cache-ia32.cc View 1 chunk +31 lines, -0 lines 0 comments Download
M src/ic.cc View 1 chunk +2 lines, -1 line 0 comments Download
M src/ic-inl.h View 1 chunk +2 lines, -1 line 0 comments Download
M src/lithium.h View 7 chunks +143 lines, -21 lines 0 comments Download
M src/lithium.cc View 4 chunks +23 lines, -3 lines 0 comments Download
M src/lithium-allocator.h View 2 chunks +7 lines, -1 line 0 comments Download
M src/lithium-allocator.cc View 12 chunks +66 lines, -9 lines 0 comments Download
M src/lithium-allocator-inl.h View 1 chunk +3 lines, -1 line 0 comments Download
M src/macros.py View 4 chunks +10 lines, -0 lines 0 comments Download
M src/mark-compact.cc View 1 chunk +2 lines, -0 lines 0 comments Download
M src/objects.h View 13 chunks +226 lines, -3 lines 0 comments Download
M src/objects.cc View 24 chunks +206 lines, -1 line 0 comments Download
M src/objects-debug.cc View 5 chunks +34 lines, -0 lines 0 comments Download
M src/objects-inl.h View 8 chunks +185 lines, -0 lines 0 comments Download
M src/objects-printer.cc View 4 chunks +42 lines, -0 lines 0 comments Download
M src/objects-visiting.cc View 2 chunks +4 lines, -0 lines 0 comments Download
M src/property-details.h View 4 chunks +10 lines, -1 line 0 comments Download
M src/runtime.h View 4 chunks +76 lines, -1 line 0 comments Download
M src/runtime.cc View 13 chunks +1273 lines, -3 lines 0 comments Download
M src/runtime.js View 1 chunk +2 lines, -0 lines 0 comments Download
A src/simd128.js View 1 chunk +1098 lines, -0 lines 0 comments Download
M src/stub-cache.cc View 4 chunks +12 lines, -2 lines 0 comments Download
M src/types.h View 1 chunk +25 lines, -23 lines 0 comments Download
M src/types.cc View 2 chunks +6 lines, -0 lines 0 comments Download
src/v8globals.h View 1 chunk +2 lines, -0 lines 0 comments Download
M src/v8memory.h View 1 chunk +8 lines, -0 lines 0 comments Download
M src/x64/assembler-x64.h View 8 chunks +50 lines, -2 lines 0 comments Download
M src/x64/assembler-x64.cc View 5 chunks +371 lines, -10 lines 0 comments Download
M src/x64/assembler-x64-inl.h View 1 chunk +4 lines, -0 lines 0 comments Download
M src/x64/deoptimizer-x64.cc View 6 chunks +14 lines, -12 lines 0 comments Download
M src/x64/disasm-x64.cc View 7 chunks +184 lines, -0 lines 0 comments Download
M src/x64/full-codegen-x64.cc View 1 chunk +8 lines, -0 lines 0 comments Download
M src/x64/lithium-codegen-x64.h View 3 chunks +6 lines, -0 lines 0 comments Download
M src/x64/lithium-codegen-x64.cc View 16 chunks +967 lines, -1 line 0 comments Download
M src/x64/lithium-gap-resolver-x64.cc View 4 chunks +100 lines, -0 lines 0 comments Download
M src/x64/lithium-x64.h View 4 chunks +213 lines, -0 lines 0 comments Download
M src/x64/lithium-x64.cc View 7 chunks +340 lines, -8 lines 0 comments Download
M src/x64/macro-assembler-x64.h View 2 chunks +22 lines, -0 lines 0 comments Download
M src/x64/macro-assembler-x64.cc View 6 chunks +84 lines, -7 lines 0 comments Download
M src/x64/stub-cache-x64.cc View 1 chunk +29 lines, -0 lines 0 comments Download
M test/cctest/test-disasm-ia32.cc View 2 chunks +55 lines, -0 lines 0 comments Download
A test/mjsunit/simd/argument_object.js View 1 chunk +124 lines, -0 lines 0 comments Download
A + test/mjsunit/simd/captured_object.js View 1 chunk +47 lines, -29 lines 0 comments Download
test/mjsunit/simd/deopt.js View 1 chunk +42 lines, -30 lines 0 comments Download
A test/mjsunit/simd/float32x4.js View 1 chunk +907 lines, -0 lines 0 comments Download
A test/mjsunit/simd/int32x4.js View 1 chunk +873 lines, -0 lines 0 comments Download
A + test/mjsunit/simd/osr.js View 1 chunk +11 lines, -13 lines 0 comments Download
A + test/mjsunit/simd/prototype.js View 1 chunk +25 lines, -37 lines 0 comments Download
A + test/mjsunit/simd/representation_change.js View 1 chunk +21 lines, -18 lines 0 comments Download
M tools/gyp/v8.gyp View 1 chunk +2 lines, -1 line 0 comments Download

Messages

Total messages: 1 (0 generated)
haitao.feng
7 years ago (2013-11-27 05:18:08 UTC) #1
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.

Powered by Google App Engine
This is Rietveld 408576698