- 26 Oct, 2016 1 commit
-
-
bbudge authored
- Modifies RegisterConfiguration to specify complex aliasing on ARM 32. - Modifies RegisterAllocator to consider aliasing. - Modifies ParallelMove::PrepareInsertAfter to handle aliasing. - Modifies GapResolver to split wider register moves when interference with smaller moves is detected. - Modifies MoveOptimizer to handle aliasing. - Adds ARM 32 macro-assembler pseudo move instructions to handle cases where split moves don't correspond to actual s-registers. - Modifies CodeGenerator::AssembleMove and AssembleSwap to handle moves of different widths, and moves involving pseudo-s-registers. - Adds unit tests for FP operand interference checking and PrepareInsertAfter. - Adds more tests of FP for the move optimizer and register allocator. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2410673002 Cr-Commit-Position: refs/heads/master@{#40597}
-
- 11 Oct, 2016 1 commit
-
-
mtrofin authored
Treat allocation of splintered ranges differently, by optimizing for move counts (i.e. try to have less move counts), rather than optimizing for quality of moves (which is what normal allocation does). We can see reductions in code size in the benchmarks that measure it (e.g. Unity) BUG= Review-Url: https://codereview.chromium.org/2347563004 Cr-Commit-Position: refs/heads/master@{#40178}
-
- 19 Sep, 2016 1 commit
-
-
jarin authored
Review-Url: https://codereview.chromium.org/2349983002 Cr-Commit-Position: refs/heads/master@{#39492}
-
- 06 Sep, 2016 1 commit
-
-
mtrofin authored
The Print APIs on the instruction model are for debugging. At debug time, we cannot (easily) synthesize an output stream, hence the choice of directing to stdout in those APIs. The concern in https://codereview.chromium.org/2293413004/ is addressed by the changes in pipeline.cc, using the various operator<<, and does not require the changes in instruction.{h|cc}, and the generalization of the Print APIs. BUG= Review-Url: https://codereview.chromium.org/2304423002 Cr-Commit-Position: refs/heads/master@{#39190}
-
- 01 Sep, 2016 1 commit
-
-
ofrobots authored
On larger workloads, lots of output on stdout becomes unwieldy. R=bmeurer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2293413004 Cr-Commit-Position: refs/heads/master@{#39111}
-
- 16 Aug, 2016 1 commit
-
-
mvstanton authored
These new representations aren't used yet. BUG= Review-Url: https://codereview.chromium.org/2216383002 Cr-Commit-Position: refs/heads/master@{#38657}
-
- 29 Jul, 2016 1 commit
-
-
bbudge authored
- Changes register allocation to only use even numbered registers on Arm. - Turns on float32 testing in test-gap-resolver.cc. This is effectively a revert of: https://codereview.chromium.org/2086653003/ LOG=N BUG=V8:4124, V8:5202 Review-Url: https://codereview.chromium.org/2176173003 Cr-Commit-Position: refs/heads/master@{#38151}
-
- 18 Jul, 2016 1 commit
-
-
bmeurer authored
So far TurboFan wasn't adding the deoptimization reasons for eager/soft deoptimization exits that can be used by either the DevTools profiler or the --trace-deopt flag. This adds basic support for deopt reasons on Deoptimize, DeoptimizeIf and DeoptimizeUnless nodes and threads through the reasons to the code generation. Also moves the DeoptReason to it's own file (to resolve include cycles) and drops unused reasons. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2161543002 Cr-Commit-Position: refs/heads/master@{#37823}
-
- 04 Jul, 2016 1 commit
-
-
bbudge authored
LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2116203002 Cr-Commit-Position: refs/heads/master@{#37498}
-
- 30 Jun, 2016 1 commit
-
-
ahaas authored
The call to String::Flatten can cause garbage collection and in general adds complexity to the code generation. It also blocks the way to run code generation on worker threads. The call to String::Flatten in Constant::ToHeapObject() seems not to be necessary for correctness. If removing this call affects performance negatively, we can revert this CL. Review-Url: https://codereview.chromium.org/2107243002 Cr-Commit-Position: refs/heads/master@{#37422}
-
- 29 Jun, 2016 2 commits
-
-
georgia.kouveli authored
Perform the following transformation: | Before | After | |------------------+---------------------| | add w2, w0, w1 | adds w2, w0, w1 | | cmp w2, #0x0 | b.<cond'> <addr> | | b.<cond> <addr> | | |------------------+---------------------| | add w2, w0, w1 | adds w2, w0, w1 | | cmp #0x0, w2 | b.<cond'> <addr> | | b.<cond> <addr> | | and the same for and instructions instead of add. When the result of the add/and is not used, generate cmn/tst instead. We need to take care with which conditions we can handle and what new condition we map them to. BUG= Review-Url: https://codereview.chromium.org/2065243005 Cr-Commit-Position: refs/heads/master@{#37400}
-
bbudge authored
- Changes InstructionOperand canonicalization to map all FP operands to kFloat64 on Intel and other platforms with simple aliasing. - Bypass expensive interference calculations and fixed FP live range processing for platforms with simple aliasing. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2101653003 Cr-Commit-Position: refs/heads/master@{#37388}
-
- 27 Jun, 2016 1 commit
-
-
bbudge authored
Replaces ArchDefault method with Crankshaft and Turbofan getters. Eliminates IsAllocated method on Register, FloatRegister, DoubleRegister. Eliminates ToString method too. Changes call sites to access appropriate arch default RegisterConfiguration. LOG=N BUG= Review-Url: https://codereview.chromium.org/2092413002 Cr-Commit-Position: refs/heads/master@{#37297}
-
- 24 Jun, 2016 2 commits
-
-
bbudge authored
- Adds the concept of FP register aliasing to RegisterConfiguration. - Changes RegisterAllocator to distinguish between FP representations when allocating. - Changes LinearScanAllocator to detect interference when FP register aliasing is combining, as on ARM. - Changes ARM code generation to allow all registers s0 - s31 to be accessed. - Adds unit tests for RegisterConfiguration, mostly to test aliasing calculations. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2086653003 Cr-Commit-Position: refs/heads/master@{#37251}
-
balazs.kilvady authored
Port fc59eb8a Original commit message: Moves between operands with different representations shouldn't happen, so don't test them. This makes it easier to modify canonicalization to differentiate between floating point types, which is needed to support floating point register aliasing for ARM and MIPS. This change also expands tests to include explicit FP moves (both register and stack slot). LOG=N BUG=v8:4124 BUG=chromium:622619 Review-Url: https://codereview.chromium.org/2090993002 Cr-Commit-Position: refs/heads/master@{#37241}
-
- 15 Jun, 2016 1 commit
-
-
bbudge authored
Review-Url: https://codereview.chromium.org/2054343002 Cr-Commit-Position: refs/heads/master@{#37013}
-
- 03 Jun, 2016 1 commit
-
-
bbudge authored
- Adds names for float registers to RegisterConfiguration and uses them when we have the MachineRepresentation. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/2030143002 Cr-Commit-Position: refs/heads/master@{#36712}
-
- 27 May, 2016 1 commit
-
-
bbudge authored
- Renames UnallocatedOperandenum values to reflect the fact that there are multiple FP machine representations. - Renames enum values for RegisterAllocatorVerifier enum. - Template-izes DefineAsFixed and UseFixed methods to handle multiple FP register types. BUG=v8:4124 Review-Url: https://codereview.chromium.org/2017733002 Cr-Commit-Position: refs/heads/master@{#36558}
-
- 10 May, 2016 1 commit
-
-
bbudge authored
Renames IsDouble* predicates to IsFP*. Adds specific IsFloat*, IsDouble*, and IsSimd128* predicates. Adds specific GetFloatRegister, GetDoubleRegister, and GetSimd128Register methods. This is mostly a mechanical renaming of IsDouble* to IsFP* methods. This shouldn't change code generation at all. All fp registers are still treated as double registers. LOG=N BUG=v8:4124 Review-Url: https://codereview.chromium.org/1959763002 Cr-Commit-Position: refs/heads/master@{#36146}
-
- 04 May, 2016 1 commit
-
-
gdeepti authored
Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code. - Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions. - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org Review-Url: https://codereview.chromium.org/1921203002 Cr-Commit-Position: refs/heads/master@{#36044}
-
- 30 Apr, 2016 1 commit
-
-
bmeurer authored
Further refactor the pipeline to even run the first scheduler (part of the effect control linearization) concurrently. This temporarily disables most of the write barrier elimination, but we will get back to that later. Drive-by-fix: Remove the dead code from ChangeLowering, and stack allocate the Typer in the pipeline. Also migrate the AllocateStub to a native code builtin, so that we have the code object + a handle to it available all the time. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel R=mstarzinger@chromium.org BUG=v8:4969 LOG=n Review-Url: https://codereview.chromium.org/1926023002 Cr-Commit-Position: refs/heads/master@{#35918}
-
- 28 Apr, 2016 2 commits
-
-
machenbach authored
Revert of [turbofan] Run everything after representation selection concurrently. (patchset #2 id:20001 of https://codereview.chromium.org/1926023002/ ) Reason for revert: [Sheriff] Flaky crashed here and there: https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/9867 https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/9589 https://build.chromium.org/p/client.v8/builders/V8%20Mac/builds/7679 Original issue's description: > [turbofan] Run everything after representation selection concurrently. > > Further refactor the pipeline to even run the first scheduler (part of > the effect control linearization) concurrently. This temporarily > disables most of the write barrier elimination, but we will get back to > that later. TBR=mstarzinger@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/1925073002 Cr-Commit-Position: refs/heads/master@{#35863}
-
bmeurer authored
Further refactor the pipeline to even run the first scheduler (part of the effect control linearization) concurrently. This temporarily disables most of the write barrier elimination, but we will get back to that later. Review-Url: https://codereview.chromium.org/1926023002 Cr-Commit-Position: refs/heads/master@{#35861}
-
- 23 Apr, 2016 1 commit
-
-
mtrofin authored
If a deferred block has multiple predecessors, they have to be all deferred. Otherwise, we can run into a situation where if a range that spills only in deferred blocks inserts its spill in the block, and other ranges need moves inserted by ResolveControlFlow in the predecessors, the register of the range spilled in the deferred block may be clobbered. To avoid that, when a deferred block has multiple predecessors, and some are not deferred, we add a non-deferred block to collect all such edges. This CL addresses the validator assertion failure the referenced issue, as well as the greedy allocator failure - which was caused by the situation described above. BUG=v8:4940 LOG=n Review URL: https://codereview.chromium.org/1912093005 Cr-Commit-Position: refs/heads/master@{#35742}
-
- 21 Apr, 2016 1 commit
-
-
mtrofin authored
GetInstructionBlock shows up in some compile time-intensive profiles. Changing it to a O(1) operation. The compile benchmark confirms the improvement. BUG= Review URL: https://codereview.chromium.org/1896813003 Cr-Commit-Position: refs/heads/master@{#35711}
-
- 12 Apr, 2016 2 commits
-
-
gdeepti authored
Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5 Cr-Commit-Position: refs/heads/master@{#35182} Committed: https://crrev.com/297932a302ce0b73c3618ef9e4eba9d9d241f2b3 Cr-Commit-Position: refs/heads/master@{#35400} Review URL: https://codereview.chromium.org/1759383003 Cr-Commit-Position: refs/heads/master@{#35407}
-
machenbach authored
Revert of [compiler] Add relocatable pointer constants for wasm memory references. (patchset #15 id:320001 of https://codereview.chromium.org/1759383003/ ) Reason for revert: [Sheriff] Breaks msan: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/7842 Original issue's description: > [compiler] Add relocatable pointer constants for wasm memory references. > > Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. > > R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org > > Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5 > Cr-Commit-Position: refs/heads/master@{#35182} > > Committed: https://crrev.com/297932a302ce0b73c3618ef9e4eba9d9d241f2b3 > Cr-Commit-Position: refs/heads/master@{#35400} TBR=bradnelson@chromium.org,titzer@chromium.org,bmeurer@chromium.org,bradnelson@google.com,gdeepti@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1881913002 Cr-Commit-Position: refs/heads/master@{#35401}
-
- 11 Apr, 2016 1 commit
-
-
gdeepti authored
Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5 Cr-Commit-Position: refs/heads/master@{#35182} Review URL: https://codereview.chromium.org/1759383003 Cr-Commit-Position: refs/heads/master@{#35400}
-
- 01 Apr, 2016 2 commits
-
-
yangguo authored
Revert of [compiler] Add relocatable pointer constants for wasm memory references. (patchset #14 id:300001 of https://codereview.chromium.org/1759383003/ ) Reason for revert: Test failures: https://build.chromium.org/p/client.v8/builders/V8%20Mac64/builds/8046 Original issue's description: > [compiler] Add relocatable pointer constants for wasm memory references. > > Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. > > R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org > > Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5 > Cr-Commit-Position: refs/heads/master@{#35182} TBR=bradnelson@chromium.org,titzer@chromium.org,gdeepti@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1846083005 Cr-Commit-Position: refs/heads/master@{#35185}
-
gdeepti authored
Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates. R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org Review URL: https://codereview.chromium.org/1759383003 Cr-Commit-Position: refs/heads/master@{#35182}
-
- 23 Mar, 2016 1 commit
-
-
mtrofin authored
Validate that the transition from deferred to hot happens through a deferred block with one successor. This is needed for frame elision: if we need to deconstruct the frame on the deferred path, this extra block offers that location. A precondition for this validation is that the sequence is in split edge form. BUG= Review URL: https://codereview.chromium.org/1811213003 Cr-Commit-Position: refs/heads/master@{#35015}
-
- 18 Mar, 2016 1 commit
-
-
mtrofin authored
There are multiple ways we may construct an instruction sequence. Moved the split edge form validation where they must all eventually chokepoint to - the register allocation pipeline, which is also the main and first consumer of this property. BUG= Review URL: https://codereview.chromium.org/1810293003 Cr-Commit-Position: refs/heads/master@{#34903}
-
- 04 Mar, 2016 1 commit
-
-
mtrofin authored
It benefits certain algorithms in register allocation to assume the input is SSA - understanding that ResolvePhis in the regalloc pipeline lowers phis, thus blurring the SSA invariant. BUG= Review URL: https://codereview.chromium.org/1760323002 Cr-Commit-Position: refs/heads/master@{#34509}
-
- 29 Feb, 2016 1 commit
-
-
mtrofin authored
BUG= Review URL: https://codereview.chromium.org/1738973002 Cr-Commit-Position: refs/heads/master@{#34363}
-
- 24 Feb, 2016 1 commit
-
-
bmeurer authored
These macro operators represent a conditional eager deoptimization exit without explicit branching, which greatly reduces overhead of both scheduling and register allocation, and thereby greatly reduces overall compilation time, esp. when there are a lot of eager deoptimization exits. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1721103003 Cr-Commit-Position: refs/heads/master@{#34239}
-
- 17 Feb, 2016 1 commit
-
-
bbudge authored
Adds kSimd128 to MachineRepresentation. Adds a Simd128Register concept that's platform independent. Adds UntaggedSimd128 to types.h. LOG=N BUG=v8:4124 Review URL: https://codereview.chromium.org/1693963004 Cr-Commit-Position: refs/heads/master@{#34089}
-
- 05 Feb, 2016 1 commit
-
-
mtrofin authored
We assume split-edge form throughout the register allocation pipeline, so added validation in isel. BUG= Review URL: https://codereview.chromium.org/1668953002 Cr-Commit-Position: refs/heads/master@{#33789}
-
- 26 Jan, 2016 1 commit
-
-
mtrofin authored
Debugging helper. Centralized the logic for printing blocks from InstructionSequence. A clean(-er) design would be to define an operator<< on a PrintableInstructionBlock. However, we've discussed moving off those operators, so it seemed unnecessary to complicate the change. BUG= Review URL: https://codereview.chromium.org/1632803003 Cr-Commit-Position: refs/heads/master@{#33505}
-
- 11 Jan, 2016 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1578723002 Cr-Commit-Position: refs/heads/master@{#33202}
-
- 05 Jan, 2016 1 commit
-
-
sigurds authored
Deopt support is added on two levels. On the IR level, a new ObjectState node is added, which represenents an object to be materialized. ObjectState nodes appear as inputs of FrameState and StateValues nodes. On the instruction select/code-generation level, the FrameStateDescriptor class handles the nesting introduced by ObjectState, and ensures that deopt code with CAPTURED_OBJECT/DUPLICATED_OBJECT entries are generated similarly to what crankshaft's escape analysis does. Two unittests test correctness of the IR level implementation. Correctness for instruction selection / code generation is tested by mjsunit tests. R=jarin@chromium.org,mstarzinger@chromium.org BUG=v8:4586 LOG=n Review URL: https://codereview.chromium.org/1485183002 Cr-Commit-Position: refs/heads/master@{#33115}
-