summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/liveness_test.cc
Commit message (Collapse)AuthorAgeFilesLines
* Add a parent environment to HEnvironment.Nicolas Geoffray2015-05-111-1/+1
| | | | | | | This code has no functionality change. It adds a placeholder for chaining inlined frames. Change-Id: I5ec57335af76ee406052345b947aad98a6a4423a
* Relax the only one back-edge restriction.Nicolas Geoffray2015-05-071-31/+27
| | | | | | | The rule is in the way for better register allocation, as it creates an artificial join point between multiple paths. Change-Id: Ia4392890f95bcea56d143138f28ddce6c572ad58
* Move the linear order to the HGraph.Nicolas Geoffray2015-04-151-1/+1
| | | | | | | | | Bug found by Zheng Xu: SsaLivenessAnalysis being a stack allocated object, we should not refer to it in later phases of the compiler. Specifically, the code generator was using the linear order, which was stored in the liveness analysis object. Change-Id: I574641f522b7b86fc43f3914166108efc72edb3b
* [optimizing] Implement x86/x86_64 math intrinsicsMark Mendell2015-04-011-1/+4
| | | | | | | | | | | | | | | | | | | Implement floor/ceil/round/RoundFloat on x86 and x86_64. Implement RoundDouble on x86_64. Add support for roundss and roundsd on both architectures. Support them in the disassembler as well. Add the instruction set features for x86, as the 'round' instruction is only supported if SSE4.1 is supported. Fix the tests to handle the addition of passing the instruction set features to x86 and x86_64. Add assembler tests for roundsd and roundss to x86_64 assembler tests. Change-Id: I9742d5930befb0bbc23f3d6c83ce0183ed9fe04f Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
* Fix tests now that the SSA builder is pruning more phis.Nicolas Geoffray2015-03-101-28/+28
| | | | Change-Id: I503400e7343322e31ad393d51367b404d6ed7bd8
* Move arenas into runtimeMathieu Chartier2015-02-191-1/+1
| | | | | | | | | | Moved arena pool into the runtime. Motivation: Allow GC to use arena allocators, recycle arena pool for linear alloc. Bug: 19264997 Change-Id: I8ddbb6d55ee923a980b28fb656c758c5d7697c2f
* Create HGraph outside Builder, print timingsDavid Brazdil2015-02-041-3/+4
| | | | | | | | | This patch refactors the way HGraph objects are created, moving the instantiation out of the Builder class and creating the CodeGenerator earlier. The patch uses this to build a single interface for printing timings info and dumping the CFG. Change-Id: I2eb63eabf28e2d0f5cdc7affaa690c3a4b1bdd21
* Add implicit null checks for the optimizing compilerCalin Juravle2015-01-161-1/+2
| | | | | | | | | - for backends: arm, arm64, x86, x86_64 - fixed parameter passing for CodeGenerator - 003-omnibus-opcodes test verifies that NullPointerExceptions work as expected Change-Id: I1b302acd353342504716c9169a80706cf3aba2c8
* Inlining support in optimizing.Nicolas Geoffray2014-12-151-3/+1
| | | | | | | | | | Currently only inlines simple things that don't require an environment, such as: - Returning a constant. - Returning a parameter. - Returning an arithmetic operation. Change-Id: Ie844950cb44f69e104774a3cf7a8dea66bc85661
* Treat SSA transformation special, as we may have to bailout.Nicolas Geoffray2014-12-021-1/+1
| | | | | | | We forgot to bailout when we found a non-natural loop (on which our optimizations don't work). Change-Id: I11976b5af4c98f4f29267a74c74d34b5ad81e20c
* Fix code generation of materialized conditions.Nicolas Geoffray2014-10-091-0/+3
| | | | | | | | | | | | | Move the logic for knowing if a condition needs to be materialized in an optimization pass (so that the information does not change as a side effect of another optimization). Also clean-up arm and x86_64 codegen: - arm: ldr and str are for power-users when a constant is in play. We should use LoadFromOffset and StoreToOffset. - x86_64: fix misuses of movq instead of movl. Change-Id: I01a03b91803624be2281a344a13ad5efbf4f3ef3
* Improve detection of lifetime holes.Nicolas Geoffray2014-09-301-0/+47
| | | | | | | | The check concluding that the next use was in a successor was too conservative: two blocks following each other in terms of liveness are not necessarily predecessor/sucessor. Change-Id: Ideec98046c812aa5fb63781141b5fde24c706d6d
* Fix valgrind errors.Nicolas Geoffray2014-09-111-2/+3
| | | | | | | | For now just stack allocate the code generator. Will think about cleaning up the root problem later (CodeGenerator being an arena object). Change-Id: I161a6f61c5f27ea88851b446f3c1e12ee9c594d7
* Support fields in optimizing compiler.Nicolas Geoffray2014-07-141-182/+186
| | | | | | | | - Required support for temporaries, to be only used by baseline compiler. - Also fixed a few invalid assumptions around locations and instructions that don't need materialization. These instructions should not have an Out. Change-Id: Idc4a30dd95dd18015137300d36bec55fc024cf62
* Plug code generator into liveness analysis.Nicolas Geoffray2014-06-101-10/+12
| | | | | | Also implement spill slot support. Change-Id: If5e28811e9fbbf3842a258772c633318a2f4fafc
* Don't use Dump for printing a bitset in liveness_test.Nicolas Geoffray2014-06-031-198/+211
| | | | Change-Id: Ib33e975cee838da97a3bebe04176b5ae8b62f9d5
* ART: BitVector not calculating number_of_bits correctlyJean Christophe Beyler2014-06-021-195/+195
| | | | | | | | The number_of_bits_ field has an unclear intent. Instead, using storage_size_ * kWordBits when relevant. Change-Id: I8c13be0d6643de37813fb154296d451f22c298c8 Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
* Linearize the graph before creating live ranges.Nicolas Geoffray2014-05-161-0/+1
| | | | Change-Id: I02eb5671e3304ab062286131745c1366448aff58
* Add loop recognition and CFG simplifications in new compiler.Nicolas Geoffray2014-05-131-29/+42
| | | | | | | | | We do three simplifications: - Split critical edges, for code generation from SSA (new). - Ensure one back edge per loop, to simplify loop recognition (new). - Ensure only one pre header for a loop, to simplify SSA creation (existing). Change-Id: I9bfccd4b236a00486a261078627b091c8a68be33
* Build live-in, live-out and kill sets for each block.Nicolas Geoffray2014-05-071-0/+515
This information will be used when computing live ranges of instructions. Change-Id: I345ee833c1ccb4a8e725c7976453f6d58d350d74