- 12 Jul, 2017 1 commit
-
-
Michael Starzinger authored
This introduces 2^16 as an upper limit for the allowed value range of a table switch on all architectures. It also fixes several overflows in the table size calculation. R=bmeurer@chromium.org TEST=mjsunit/regress/regress-crbug-736633 BUG=chromium:736633 Change-Id: I931bd226c99eb8a1ae1770c159fc314ff650bf57 Reviewed-on: https://chromium-review.googlesource.com/566829Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46575}
-
- 05 Jul, 2017 1 commit
-
-
jing.bao authored
Add Pxor, Pshuflw, Pshufb, Pextrb, Pextrw macros Reconstruct SIMD opcodes to macros BUG= Review-Url: https://codereview.chromium.org/2937653002 Cr-Commit-Position: refs/heads/master@{#46400}
-
- 12 Jun, 2017 1 commit
-
-
jing.bao authored
Add vpinsrd, vpextrd, vmovd. Supplement pshufd and add vpshufd. Add Movd and Pshufd macro. Add AVX support to Pextrd. Fix disassembler to recognize "pinsrd/pextrd xmm,[mem],imm8". BUG= Review-Url: https://codereview.chromium.org/2916093002 Cr-Commit-Position: refs/heads/master@{#45833}
-
- 08 Jun, 2017 1 commit
-
-
bbudge authored
- Eliminates b1x4, b1x8, and b1x16 as distinct WASM types. - All vector comparisons return v128 type. - Eliminates b1xN and, or, xor, not. - Selects take a v128 mask vector and are now bit-wise. - Adds a new test for Select, where mask is non-canonical (not 0's and -1's). LOG=N BUG=v8:6020 Review-Url: https://codereview.chromium.org/2919203002 Cr-Commit-Position: refs/heads/master@{#45795}
-
- 16 May, 2017 1 commit
-
-
ivica.bogosavljevic authored
Reland d8bfdb7a Original commit message: If alignment parameter is set, the memory returned by the StackSlot operator will be aligned according to the parameter. The implementation goes like this. If alignment parameter is set we allocate a bit more memory than actually needed and so we can move the beginning of the StackSlot in order to have it aligned. BUG= Review-Url: https://codereview.chromium.org/2874713003 Cr-Commit-Position: refs/heads/master@{#45339}
-
- 09 May, 2017 2 commits
-
-
machenbach authored
Revert of [turbofan] Add alignment parameter to StackSlot operator (patchset #7 id:120001 of https://codereview.chromium.org/2816743003/ ) Reason for revert: Seems to break cfi: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20cfi/builds/9989 Original issue's description: > [turbofan] Add alignment parameter to StackSlot operator > > If alignment parameter is set, the memory returned by the > StackSlot operator will be aligned according to the parameter. > > The implementation goes like this. If alignment parameter is set > we allocate a bit more memory than actually needed and so we > can move the beginning of the StackSlot in order to have it aligned. > > > BUG= > > Review-Url: https://codereview.chromium.org/2816743003 > Cr-Commit-Position: refs/heads/master@{#45197} > Committed: https://chromium.googlesource.com/v8/v8/+/d8bfdb7a998adadc56aa5705a5998e75ceae7675 TBR=ahaas@chromium.org,clemensh@chromium.org,titzer@chromium.org,bmeurer@chromium.org,ivica.bogosavljevic@imgtec.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review-Url: https://codereview.chromium.org/2867403002 Cr-Commit-Position: refs/heads/master@{#45203}
-
ivica.bogosavljevic authored
If alignment parameter is set, the memory returned by the StackSlot operator will be aligned according to the parameter. The implementation goes like this. If alignment parameter is set we allocate a bit more memory than actually needed and so we can move the beginning of the StackSlot in order to have it aligned. BUG= Review-Url: https://codereview.chromium.org/2816743003 Cr-Commit-Position: refs/heads/master@{#45197}
-
- 12 Apr, 2017 1 commit
-
-
binji authored
It's required by the spec -- and observable -- that the index be validated before the conversion of the value(s) via ToInteger. The previous implementation also had an old test for validating the atomic index, which has now been switched to ToIndex. This also exposed an issue in the ia32 code generator: cmpxchg_b requires a byte register, but the ia32 instruction selector was ensuring that the new_value was a byte register, not the TempRegister. This change forces the temp register to use edx, which always can be used as a byte register (dl). This is the same behavior as currently used in UseByteRegister. BUG=v8:4614 R=jarin@chromium.org,jkummerow@chromium.org Review-Url: https://codereview.chromium.org/2814753003 Cr-Commit-Position: refs/heads/master@{#44626}
-
- 11 Apr, 2017 1 commit
-
-
aseemgarg authored
BUG=v8:4614 R=binji@chromium.org,jarin@chromium.org Review-Url: https://codereview.chromium.org/2799863002 Cr-Commit-Position: refs/heads/master@{#44542}
-
- 31 Mar, 2017 1 commit
-
-
jyan authored
some arch like s390 has native instr can benefit from this. see ~10% improvement on MathAbs on s390 Review-Url: https://codereview.chromium.org/2785773002 Cr-Commit-Position: refs/heads/master@{#44310}
-
- 29 Mar, 2017 1 commit
-
-
gdeepti authored
- Fix opcode names to be consistent with opcodes as in wasm-opcodes.h - Fix Ordering of Ops, inconsistencies BUG=v8:6020 Review-Url: https://codereview.chromium.org/2776753004 Cr-Commit-Position: refs/heads/master@{#44239}
-
- 16 Mar, 2017 1 commit
-
-
aseemgarg authored
BUG=v8:4614 R=binji@chromium.org Review-Url: https://codereview.chromium.org/2649703002 Cr-Commit-Position: refs/heads/master@{#43878}
-
- 13 Mar, 2017 1 commit
-
-
shiyu.zhang authored
With this change, on ia32 and x64, a load from memory into a register can be replaced by a memory operand for integer binops if it makes sense. BUG= Review-Url: https://codereview.chromium.org/2728533003 Cr-Commit-Position: refs/heads/master@{#43739}
-
- 10 Mar, 2017 1 commit
-
-
jing.bao authored
CreateInt32x4, Int32x4ExtractLane, Int32x4ReplaceLane Int32x4Add, Int32x4Sub Also add paddd, psubd, vpaddd, vpsubd, pinsrw to ia32-assembler BUG= Review-Url: https://codereview.chromium.org/2695613004 Cr-Original-Commit-Position: refs/heads/master@{#43483} Committed: https://chromium.googlesource.com/v8/v8/+/4deb9ffdecf121c69a3db7eae6698eae23a80a15 Review-Url: https://codereview.chromium.org/2695613004 Cr-Commit-Position: refs/heads/master@{#43708}
-
- 07 Mar, 2017 1 commit
-
-
aseemgarg authored
BUG=v8:4614 R=binji@chromium.org Review-Url: https://codereview.chromium.org/2623633003 Cr-Commit-Position: refs/heads/master@{#43623}
-
- 28 Feb, 2017 2 commits
-
-
machenbach authored
Revert of Add several SIMD opcodes to IA32 (patchset #9 id:160001 of https://codereview.chromium.org/2695613004/ ) Reason for revert: Fails with nosse4: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20debug/builds/13853 Original issue's description: > Add several SIMD opcodes to IA32 > > CreateInt32x4, Int32x4ExtractLane, Int32x4ReplaceLane > Int32x4Add, Int32x4Sub > > Also add paddd and psubd to ia32-assembler > > BUG= > > Review-Url: https://codereview.chromium.org/2695613004 > Cr-Commit-Position: refs/heads/master@{#43483} > Committed: https://chromium.googlesource.com/v8/v8/+/4deb9ffdecf121c69a3db7eae6698eae23a80a15 TBR=bbudge@chromium.org,gdeepti@chromium.org,bmeurer@chromium.org,jing.bao@intel.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review-Url: https://codereview.chromium.org/2717423003 Cr-Commit-Position: refs/heads/master@{#43489}
-
jing.bao authored
CreateInt32x4, Int32x4ExtractLane, Int32x4ReplaceLane Int32x4Add, Int32x4Sub Also add paddd and psubd to ia32-assembler BUG= Review-Url: https://codereview.chromium.org/2695613004 Cr-Commit-Position: refs/heads/master@{#43483}
-
- 21 Feb, 2017 1 commit
-
-
bbudge authored
- Adds new machine types SimdBool4/8/16 for the different boolean vector types. - Adds a kSimdMaskRegisters flag for each platform. These are all false for now. - Removes Create, ExtractLane, ReplaceLane, Equal, NotEqual, Swizzle and Shuffle opcodes from the Boolean types. These are unlikely to be well supported natively, and can be synthesized using Select. - Changes the signature of Relational opcodes to return boolean vectors. - Changes the signature of Select opcodes to take boolean vectors. - Updates the ARM implementation of Relational and Select opcodes. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2700813002 Cr-Commit-Position: refs/heads/master@{#43348}
-
- 14 Feb, 2017 1 commit
-
-
Daniel Clifford authored
Change-Id: Id10be318965d7ec81af8fce8ec230557d3bf1369 Reviewed-on: https://chromium-review.googlesource.com/442126Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#43191}
-
- 12 Feb, 2017 1 commit
-
-
shiyu.zhang authored
It reduces the add operation for certain checked load/stores by pre-do the add in compiling phase. BUG= Review-Url: https://codereview.chromium.org/2593483002 Cr-Commit-Position: refs/heads/master@{#43128}
-
- 10 Feb, 2017 1 commit
-
-
verwaest authored
BUG= Review-Url: https://codereview.chromium.org/2682143002 Cr-Original-Commit-Position: refs/heads/master@{#43065} Committed: https://chromium.googlesource.com/v8/v8/+/193a0c118845d068ab386b5c90d04daaa64e1e86 Review-Url: https://codereview.chromium.org/2682143002 Cr-Commit-Position: refs/heads/master@{#43085}
-
- 09 Feb, 2017 2 commits
-
-
machenbach authored
Revert of [compiler] Pass deoptimization_kind through DeoptimizeParameters and FlagsContinuation (patchset #3 id:40001 of https://codereview.chromium.org/2682143002/ ) Reason for revert: cfi failure: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20cfi/builds/8635 Original issue's description: > [compiler] Pass deoptimization_kind through DeoptimizeParameters and FlagsContinuation > > BUG= > > Review-Url: https://codereview.chromium.org/2682143002 > Cr-Commit-Position: refs/heads/master@{#43065} > Committed: https://chromium.googlesource.com/v8/v8/+/193a0c118845d068ab386b5c90d04daaa64e1e86 TBR=jarin@chromium.org,verwaest@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review-Url: https://codereview.chromium.org/2683203002 Cr-Commit-Position: refs/heads/master@{#43070}
-
verwaest authored
BUG= Review-Url: https://codereview.chromium.org/2682143002 Cr-Commit-Position: refs/heads/master@{#43065}
-
- 01 Feb, 2017 3 commits
-
-
bbudge authored
- Uses macros to reduce code duplication. - Uses calls to VisitRO, VisitRR, VisitRROFloat, and VisitFloatUnop to reduce code bloat. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2669683002 Cr-Original-Commit-Position: refs/heads/master@{#42830} Committed: https://chromium.googlesource.com/v8/v8/+/5e6eb91d0d66c9a118f1cc576accb649a17c5a9d Review-Url: https://codereview.chromium.org/2669683002 Cr-Commit-Position: refs/heads/master@{#42870}
-
bbudge authored
Revert of [Turbofan] Macro-ize instruction selection for ia32. (patchset #1 id:1 of https://codereview.chromium.org/2669683002/ ) Reason for revert: Breaks Issue 1398 Original issue's description: > [Turbofan] Macro-ize instruction selection for ia32. > - Uses macros to reduce code duplication. > - Uses calls to VisitRO, VisitRR, VisitRROFloat, and VisitFloatUnop to > reduce code bloat. > > LOG=N > BUG=v8:4124 > > Review-Url: https://codereview.chromium.org/2669683002 > Cr-Commit-Position: refs/heads/master@{#42830} > Committed: https://chromium.googlesource.com/v8/v8/+/5e6eb91d0d66c9a118f1cc576accb649a17c5a9d TBR=titzer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4124 Review-Url: https://codereview.chromium.org/2664403002 Cr-Commit-Position: refs/heads/master@{#42832}
-
bbudge authored
- Uses macros to reduce code duplication. - Uses calls to VisitRO, VisitRR, VisitRROFloat, and VisitFloatUnop to reduce code bloat. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2669683002 Cr-Commit-Position: refs/heads/master@{#42830}
-
- 13 Jan, 2017 1 commit
-
-
danno authored
Recognize and emit in-memory comparisons of 8-bit and 16-bit values with immediate values that fit. LOG=N R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2605863002 Cr-Commit-Position: refs/heads/master@{#42344}
-
- 05 Jan, 2017 1 commit
-
-
epertoso authored
Revert of [turbofan] Improve codegen for 8- and 16-bit memory comparisons on Intel platforms (patchset #3 id:40001 of https://codereview.chromium.org/2605863002/ ) Reason for revert: Breaks wasm benchmark (http://crbug.com/v8/5798). Original issue's description: > [turbofan] Improve codegen for 8- and 16-bit memory comparisons on Intel platforms > > Recognize and emit in-memory comparisons of 8-bit and 16-bit values with > immediate values that fit. > > LOG=N > R=epertoso@chromium.org > > Review-Url: https://codereview.chromium.org/2605863002 > Cr-Commit-Position: refs/heads/master@{#41971} > Committed: https://chromium.googlesource.com/v8/v8/+/be11812c53ff6c8ce320887bc76a3b60d8103695 TBR=danno@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. Review-Url: https://codereview.chromium.org/2618443003 Cr-Commit-Position: refs/heads/master@{#42092}
-
- 28 Dec, 2016 1 commit
-
-
danno authored
Recognize and emit in-memory comparisons of 8-bit and 16-bit values with immediate values that fit. LOG=N R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2605863002 Cr-Commit-Position: refs/heads/master@{#41971}
-
- 19 Dec, 2016 1 commit
-
-
titzer authored
This also fixes UBSAN failures due to improper OpParameter<> calls. R=machenbach@chromium.org, clemensh@chromium.org BUG= Review-Url: https://codereview.chromium.org/2587763003 Cr-Commit-Position: refs/heads/master@{#41790}
-
- 15 Dec, 2016 2 commits
-
-
ahaas authored
Original commit message: [wasm] Introduce the TrapIf and TrapUnless operators to generate trap code. Some instructions in WebAssembly trap for some inputs, which means that the execution is terminated and (at least at the moment) a JavaScript exception is thrown. Examples for traps are out-of-bounds memory accesses, or integer divisions by zero. Without the TrapIf and TrapUnless operators trap check in WebAssembly introduces 5 TurboFan nodes (branch, if_true, if_false, trap-reason constant, trap-position constant), in addition to the trap condition itself. Additionally, each WebAssembly function has four TurboFan nodes (merge, effect_phi, 2 phis) whose number of inputs is linear to the number of trap checks in the function. Especially for functions with high numbers of trap checks we observe a significant slowdown in compilation time, down to 0.22 MiB/s in the sqlite benchmark instead of the average of 3 MiB/s in other benchmarks. By introducing a TrapIf common operator only a single node is necessary per trap check, in addition to the trap condition. Also the nodes which are shared between trap checks (merge, effect_phi, 2 phis) would disappear. First measurements suggest a speedup of 30-50% on average. This CL only implements TrapIf and TrapUnless on x64. The implementation is also hidden behind the --wasm-trap-if flag. Please take a special look at how the source position is transfered from the instruction selector to the code generator, and at the context that is used for the runtime call. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2571813002 Cr-Commit-Position: refs/heads/master@{#41735}
-
ahaas authored
Some instructions in WebAssembly trap for some inputs, which means that the execution is terminated and (at least at the moment) a JavaScript exception is thrown. Examples for traps are out-of-bounds memory accesses, or integer divisions by zero. Without the TrapIf and TrapUnless operators trap check in WebAssembly introduces 5 TurboFan nodes (branch, if_true, if_false, trap-reason constant, trap-position constant), in addition to the trap condition itself. Additionally, each WebAssembly function has four TurboFan nodes (merge, effect_phi, 2 phis) whose number of inputs is linear to the number of trap checks in the function. Especially for functions with high numbers of trap checks we observe a significant slowdown in compilation time, down to 0.22 MiB/s in the sqlite benchmark instead of the average of 3 MiB/s in other benchmarks. By introducing a TrapIf common operator only a single node is necessary per trap check, in addition to the trap condition. Also the nodes which are shared between trap checks (merge, effect_phi, 2 phis) would disappear. First measurements suggest a speedup of 30-50% on average. This CL only implements TrapIf and TrapUnless on x64. The implementation is also hidden behind the --wasm-trap-if flag. Please take a special look at how the source position is transfered from the instruction selector to the code generator, and at the context that is used for the runtime call. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2562393002 Cr-Commit-Position: refs/heads/master@{#41720}
-
- 14 Dec, 2016 1 commit
-
-
bradnelson authored
This reverts commit 5c1babcc. This seems to regress a range of benchmarks on ia32: Emscripten for Fannkuch, Zlib, MemOps, Life, Bullet AreWeFastYet for BulletLoadTime, Fasta, Fannkuch JetStream for towers.c, quicksort.c, gcc-loops.cpp, bigfib.cpp BUG=673861 R=jarin@chromium.org,shiyu.zhang@intel.com Review-Url: https://codereview.chromium.org/2573983003 Cr-Commit-Position: refs/heads/master@{#41696}
-
- 13 Dec, 2016 1 commit
-
-
shiyu.zhang authored
It reduces the add operation for certain checked load/stores by pre-do the add in compiling phase. BUG= Review-Url: https://codereview.chromium.org/2563483005 Cr-Commit-Position: refs/heads/master@{#41671}
-
- 30 Nov, 2016 2 commits
-
-
eholk authored
This is necessary for signal-based out of bounds handling in WebAssembly. Adds a ProtectedStore instruction that is analogous to the previously added ProtectedLoad instruction. Rather than using bounds checks, ProtectedStore emits an out of line section of code that throws a JavaScript exception and provides the necessary metadata for a signal handler to be able to find the out of line code. BUG= https://bugs.chromium.org/p/v8/issues/detail?id=5277 Review-Url: https://codereview.chromium.org/2516413003 Cr-Commit-Position: refs/heads/master@{#41398}
-
shiyu.zhang authored
Remove redundant operands swap for compare operation. BUG= Review-Url: https://codereview.chromium.org/2507683002 Cr-Commit-Position: refs/heads/master@{#41385}
-
- 03 Nov, 2016 1 commit
-
-
jarin authored
Review-Url: https://codereview.chromium.org/2475433005 Cr-Commit-Position: refs/heads/master@{#40721}
-
- 19 Oct, 2016 1 commit
-
-
ahaas authored
The scheduler expects a trimmed graph, so we have to trim the graph before scheduling. R=titzer@chromium.org, bmeurer@chromium.org TEST=cctest/test-run-wasm/RunWasmCompiled_GraphTrimming Review-Url: https://chromiumcodereview.appspot.com/2428443002 Cr-Commit-Position: refs/heads/master@{#40446}
-
- 09 Sep, 2016 1 commit
-
-
eholk authored
This CL introduces a ProtectedLoad instruction with is needed for out of bounds trap handling. ProtectedLoad behaves like a regular load, but it takes a context and source position parameter as well. These are used by an out of line code fragment to generate code to throw a JS exception for an out of bounds memory reference in Wasm. These changes a cleaned up subset of https://codereview.chromium.org/2148743004/ The rest of this feature will follow in future CLs. This includes a table mapping memory instructions to landing pads as well as the actual signal handler. BUG= https://bugs.chromium.org/p/v8/issues/detail?id=5277 Review-Url: https://codereview.chromium.org/2301833004 Cr-Commit-Position: refs/heads/master@{#39318}
-
- 29 Aug, 2016 1 commit
-
-
mvstanton authored
Introduced MachineType::TaggedSigned() and TaggedPointer(). The idea is to quit using the representational dimension of Type, and instead encode this information in the MachineRepresentation (itself lightly wrapped in MachineType, along with MachineSemantic). There are three parts to the whole change: 1) Places that set the machine representation - constant nodes, loads nad stores, global object and native context specialization. 2) Places that propagate type/representation - this is representation inference (aka simplified lowering). At the end of this process we expect to have a MachineRepresentation for every node. An interesting part of this is phi merging. 3) Places that examine representation - WriteBarrier elimination does this. Currently it's looking at the Type representation dimension, but as a part of this change (or in a soon-to-follow change) it can simply examine the MachineRepresentation. BUG= Review-Url: https://codereview.chromium.org/2258073002 Cr-Commit-Position: refs/heads/master@{#38978}
-