bradnelson
4db99810da
Add wasm internal opcodes for asm.js stdlib functions we're missing.
...
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org,yangguo@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1729833002
Cr-Commit-Position: refs/heads/master@{#34452}
2016-03-03 01:23:22 +00:00
bradnelson
2a9a770c2a
Convert float64 to float32 when coerced with a heapf32 assignment.
...
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=titzer@chromium.org ,aseemgarg@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1749233002
Cr-Commit-Position: refs/heads/master@{#34404}
2016-03-01 18:07:19 +00:00
aseemgarg
4537f09374
Replace __init__ function in asm-wasm-builder with the start function section
...
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=titzer@chromium.org ,bradnelson@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1750153002
Cr-Commit-Position: refs/heads/master@{#34375}
2016-03-01 05:50:55 +00:00
titzer
8344687c76
[wasm] Properly plumb the origin of the WASM module from asm.js translation.
...
R=bradnelson@chromium.org ,aseemgarg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1742073002
Cr-Commit-Position: refs/heads/master@{#34345}
2016-02-27 20:40:06 +00:00
bradnelson
a52967680e
Allow bitwise operators to convert from intish to int in heap ops.
...
We previously supported use of bitwise operations to convert
from intish to int, but use of kAsmInt in some places and kAsmIntQ
in others prevents this from working with heap accesses.
Switch to use kAsmIntQ where appropriate (even though intish_ != 0
in principle captures the superset of these cases),
as it's more conservative (and uses types.h better).
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1731603002
Cr-Commit-Position: refs/heads/master@{#34233}
2016-02-24 07:36:39 +00:00
bradnelson
c8c5b3fddf
Allow negative literals in asm->wasm non-conversion operations.
...
This allows expressions like:
(x + y) & -1
[intish] & [signed]
The previous conversion condition was too strict (intended to
forbid non-int expression conversion). Expressing in
a different way.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1717213002
Cr-Commit-Position: refs/heads/master@{#34228}
2016-02-23 21:10:16 +00:00
bradnelson
0dd24015fb
Allow constant multiply both ways.
...
asm.js permits both:
int * constant
constant * int
It does not, however, allow intishes in multiplies.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm,test-asm-validator
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1718083004
Cr-Commit-Position: refs/heads/master@{#34222}
2016-02-23 19:04:58 +00:00
bradnelson
af903021c6
Add asm.js stdlib portion implementable as wasm opcodes.
...
Lost in the repo shuffle:
https://github.com/WebAssembly/v8-native-prototype/pull/102
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1702293002
Cr-Commit-Position: refs/heads/master@{#34218}
2016-02-23 16:23:29 +00:00
bradnelson
7e805faa30
Allow intish and floatish to be coerced by heap assignment.
...
When assigning to an integer view of the heap an intish
value does not need to be collapsed with |0.
Similarly a floatish value does not need to be collapsed with
fround when assigned to a float view of the heap.
i32[0] = i32_1 + i32_2; // ok
f32[0] = f32_1 + f32_2; // ok
However, floatish values cannot be safely assigned to double
arrays.
f64[0] = f32_1 + f32_2; // not ok
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm,test-asm-validator
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1722473002
Cr-Commit-Position: refs/heads/master@{#34206}
2016-02-23 06:18:54 +00:00
bradnelson
37fc16ece4
Allow bitwise-or aside from type annotations in asm->wasm conversion.
...
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1720773002
Cr-Commit-Position: refs/heads/master@{#34185}
2016-02-22 05:56:25 +00:00
bradnelson
6357ad847b
Support blocks in asm->wasm global section.
...
The parser can fold together comma separated declarations
into a single block. The AsmWasmBuilder needs to support
this case in order to handle asm.js modules that use this form.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1697423003
Cr-Commit-Position: refs/heads/master@{#34048}
2016-02-16 19:33:53 +00:00
bradnelson
f0d7c7a83b
Implementing comma operator for asm->wasm.
...
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1704553002
Cr-Commit-Position: refs/heads/master@{#34044}
2016-02-16 18:34:17 +00:00
bradnelson
f9ee14e519
Allow looser heap accesses historically emitted by Emscripten.
...
Older versions of Emscripten appear to emit Asm.js containing:
HEAP8[x] with x in int
As opposed to the spec legal construct:
HEAP8[x>>0] with x in int
As older programs and even benchmarks such as Embenchen
include these constructs, support them for compatibility.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-asm-validator,mjsunit/asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1692713006
Cr-Commit-Position: refs/heads/master@{#33964}
2016-02-13 06:21:35 +00:00
bradnelson
821c603e0c
Adding support for asm.js foreign globals.
...
Since wasm has no direct notion of foreign globals,
pass the ffi object on to the AsmWasmBuilder
so that foreign globals can be extracted at module
instantiation time.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=mjsunit/asm-wasm
R=titzer@chromium.org ,aseemgarg@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1677373002
Cr-Commit-Position: refs/heads/master@{#33956}
2016-02-12 17:31:48 +00:00
aseemgarg
0e22baac12
fix int type coercion in asm to wasm
...
R=bradnelson@chromium.org
BUG=https://bugs.chromium.org/p/v8/issues/detail?id=4203
TEST=asm-wasm.js
LOG=N
Review URL: https://codereview.chromium.org/1675903002
Cr-Commit-Position: refs/heads/master@{#33793}
2016-02-06 00:57:02 +00:00
aseemgarg
f060922369
Add Foreign Functions to asm to wasm
...
R=bradnelson@chromium.org
BUG=https://bugs.chromium.org/p/v8/issues/detail?id=4203
TEST=asm-wasm.js
LOG=N
Review URL: https://codereview.chromium.org/1667253003
Cr-Commit-Position: refs/heads/master@{#33757}
2016-02-05 02:07:58 +00:00
aseemgarg
66018a0ea8
Fix asm-wasm.js test.
...
R=bradnelson@chromium.org
BUG=https://bugs.chromium.org/p/v8/issues/detail?id=4203
TEST=asm-wasm.js
LOG=N
Review URL: https://codereview.chromium.org/1664993002
Cr-Commit-Position: refs/heads/master@{#33713}
2016-02-03 22:40:31 +00:00
bradnelson
255f4507ec
Drop the compileRun + asmCompileRun methods from wasm.
...
Now that we have full fledged module instantiation,
keeping alive a second interface seems clunky.
Droping it and switching the tests.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-asm-validator,asm-wasm,other wasm
R=titzer@chromium.org ,aseemgarg@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1660083002
Cr-Commit-Position: refs/heads/master@{#33700}
2016-02-03 10:16:22 +00:00
aseemgarg
6492686241
Add function tables to asm to wasm
...
R=titzer@chromium.org ,aseemgarg@chromium.org
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-asm-validator, asm-wasm.js
LOG=N
Review URL: https://codereview.chromium.org/1609893002
Cr-Commit-Position: refs/heads/master@{#33421}
2016-01-20 23:37:41 +00:00
bradnelson
3dcbc57e73
Allow asm modules to be instatiated with external heaps.
...
This merges the instantiation logic between instantiateModule
and instantiateModuleFromAsm.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1581913005
Cr-Commit-Position: refs/heads/master@{#33316}
2016-01-14 23:09:03 +00:00
bradnelson
090bf558f5
Reformat asm-wasm.js for increased readability.
...
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=asm-wasm
R=aseemgarg@chromium.org ,titzer@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1587213003
Cr-Commit-Position: refs/heads/master@{#33315}
2016-01-14 22:10:07 +00:00
aseemgarg
9933b03de8
Add __init__ function to all modules created in asm-to-wasm
...
TEST=asm-wasm.js
R=titzer@chromium.org ,bradnelson@google.com
BUG=
Review URL: https://codereview.chromium.org/1583603002
Cr-Commit-Position: refs/heads/master@{#33256}
2016-01-13 01:24:00 +00:00
aseemgarg
cd646f88a1
refactor BlockVisitor in asm to wasm and fix tests
...
TEST=asm-wasm.js
R=titzer@chromium.org ,bradnelson@google.com
BUG=
Review URL: https://codereview.chromium.org/1584573002
Cr-Commit-Position: refs/heads/master@{#33253}
2016-01-12 21:59:53 +00:00
titzer
995c9fe3dc
[wasm] Rename the WASM object to _WASMEXP_.
...
R=ahaas@chromium.org ,bradnelson@chromium.org
LOG=Y
BUG=chromium:575167
Review URL: https://codereview.chromium.org/1577803002
Cr-Commit-Position: refs/heads/master@{#33251}
2016-01-12 20:16:46 +00:00
titzer
ed6fea15a9
[wasm] Fix double to int conversions.
...
R=ahaas@chromium.org
LOG=Y
BUG=chromium:576560
Review URL: https://codereview.chromium.org/1574063005
Cr-Commit-Position: refs/heads/master@{#33239}
2016-01-12 13:47:01 +00:00
titzer
d672ee30c9
[wasm] Fix empty asm.js function in ASM->WASM.
...
R=ahaas@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1574263002
Cr-Commit-Position: refs/heads/master@{#33238}
2016-01-12 13:34:19 +00:00
aseemgarg
210e65ed12
Add switch to asm to wasm
...
TEST=asm-wasm.js
R=titzer@chromium.org ,bradnelson@google.com
BUG=
Review URL: https://codereview.chromium.org/1573413002
Cr-Commit-Position: refs/heads/master@{#33220}
2016-01-12 02:02:51 +00:00
aseemgarg
7fdb0da001
Add do-while and conditional and mark non asm nodes as unreachable
...
TEST=asm-wasm.js
R=titzer@chromium.org ,bradnelson@chromium.org
BUG=
Add for loop to asm-to-wasm
TEST=asm-wasm.js
R=titzer@chromium.org ,bradnelson@google.com
Review URL: https://codereview.chromium.org/1530093002
Cr-Commit-Position: refs/heads/master@{#33101}
2016-01-04 23:47:08 +00:00
bradnelson
98d4fbfb2d
Add --enable-wasm to wasm tests.
...
In preparation for switching wasm from a compile to
a runtime option, add the runtime flag to all mjsunit tests.
R=ahaas@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1537643002
Cr-Commit-Position: refs/heads/master@{#32938}
2015-12-17 10:54:55 +00:00
aseemgarg
1c8130bd89
Add for loop to asm-to-wasm
...
TEST=asm-wasm.js
R=titzer@chromium.org ,bradnelson@google.com
BUG=
Review URL: https://codereview.chromium.org/1523843003
Cr-Commit-Position: refs/heads/master@{#32895}
2015-12-16 12:10:33 +00:00
bradnelson
ff0cc4a4c1
Reland addition of init function for asm->wasm.
...
This relands this, in it's new home:
032faa8a90
R=titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1522473002
Cr-Commit-Position: refs/heads/master@{#32798}
2015-12-11 14:10:00 +00:00
titzer
4c5b3609fd
Initial import of v8-native WASM.
...
As discussed in person, this adds the code from v8-native-prototype into
V8 proper, guarded by GYP flags that do not build the code by default.
Passing wasm=on to 'make' or setting v8_wasm as a GYP flag activates
building of this code.
An additional header file is added to and exported from the compiler
directory, src/compiler/wasm-compiler.h. This exposes a limited interface
with opaque Node and Graph types to the decoder to build TF graphs, as
well as functions to compile WASM graphs.
The mjsunit tests added are blacklisted because they fail without the
WASM object exposed to JS, which is also disabled by the build config
option.
This corresponds closely to 5981e06ebc
, with some formatting fixes and moving some files into src/compiler.
R=mstarzinger@chromium.org , bradnelson@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1504713014
Cr-Commit-Position: refs/heads/master@{#32794}
2015-12-11 12:27:05 +00:00