v8/test/unittests/compiler
jarin 216bcf9fb3 [turbofan] Initial version of number type feedback.
This introduces optimized number operations based on type feedback.

Summary of changes:

1. Typed lowering produces SpeculativeNumberAdd/Subtract for JSAdd/Subtract if
   there is suitable feedback. The speculative nodes are connected to both the
   effect chain and the control chain and they retain the eager frame state.

2. Simplified lowering now executes in three phases:
  a. Propagation phase computes truncations by traversing the graph from uses to
     definitions until checkpoint is reached. It also records type-check decisions
     for later typing phase, and computes representation.
  b. The typing phase computes more precise types base on the speculative types (and recomputes
     representation for affected nodes).
  c. The lowering phase performs lowering and inserts representation changes and/or checks.

3. Effect-control linearization lowers the checks to machine graphs.

Notes:

- SimplifiedLowering will be refactored to have handling of each operation one place and
  with clearer input/output protocol for each sub-phase. I would prefer to do this once
  we have more operations implemented, and the pattern is clearer.

- The check operations (Checked<A>To<B>) should have some flags that would affect
  the kind of truncations that they can handle. E.g., if we know that a node produces
  a number, we can omit the oddball check in the CheckedTaggedToFloat64 lowering.

- In future, we want the typer to reuse the logic from OperationTyper.

BUG=v8:4583
LOG=n

Review-Url: https://codereview.chromium.org/1921563002
Cr-Commit-Position: refs/heads/master@{#36674}
2016-06-02 09:23:13 +00:00
..
arm [arm] [arm64] Add optional operators Float32Neg and Float64Neg. 2016-05-27 11:22:07 +00:00
arm64 [turbofan] ARM64: Match 64 bit compare with zero and branch 2016-06-01 08:03:01 +00:00
ia32 [turbofan] Store nodes use only MachineRepresentation, not MachineType. 2015-12-11 15:34:16 +00:00
mips MIPS: [turbofan] Optimize Float32 to Int32 rep. changes with Float32 round ops. 2015-12-18 16:12:51 +00:00
mips64 MIPS: [turbofan] Optimize Float32 to Int32 rep. changes with Float32 round ops. 2015-12-18 16:12:51 +00:00
ppc Update PPC OWNERS 2015-07-27 21:37:55 +00:00
s390 S390: Initial test changes and files checkin. 2016-03-15 18:09:36 +00:00
x64 [turbofan] Store nodes use only MachineRepresentation, not MachineType. 2015-12-11 15:34:16 +00:00
branch-elimination-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
checkpoint-elimination-unittest.cc [turbofan] Rename {CheckPoint} to {Checkpoint} everywhere. 2016-06-01 09:07:19 +00:00
coalesced-live-ranges-unittest.cc [turbofan] Factored out the test live range builder. 2015-08-31 09:57:48 +00:00
common-operator-reducer-unittest.cc [turbofan] We never use Int64Constant for branch/select conditions. 2016-05-18 07:20:19 +00:00
common-operator-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
compiler-test-utils.h [turbofan] Drop V8_TURBOFAN_BACKEND and V8_TURBOFAN_TARGET defines. 2015-08-10 07:17:34 +00:00
control-equivalence-unittest.cc [tubofan] Remove .dot output of --trace-turbo 2015-12-11 16:58:31 +00:00
control-flow-optimizer-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
dead-code-elimination-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
diamond-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
effect-control-linearizer-unittest.cc [turbofan] Wire in floating control during effect linearization phase. 2016-04-25 04:29:23 +00:00
escape-analysis-unittest.cc Turn on -Wmissing-field-initializers on Linux. 2016-05-06 10:20:30 +00:00
graph-reducer-unittest.cc [turbofan] Make Node::set_op safer via wrapper. 2015-09-24 14:46:37 +00:00
graph-reducer-unittest.h [turbofan] Add AdvancedReducer::ReplaceWithValue() method and convert JSInlining to an AdvancedReducer. 2015-05-12 12:41:36 +00:00
graph-trimmer-unittest.cc [turbofan] Proper dead code elimination as regular reducer. 2015-06-19 12:07:26 +00:00
graph-unittest.cc [turbofan] Get rid of type lower bounds. 2015-09-16 11:55:43 +00:00
graph-unittest.h [wasm] New attempt to implement the Int64Lowering of phis. 2016-03-30 08:14:35 +00:00
instruction-selector-unittest.cc Turbofan: Rename IsFloat -> IsFP 2016-05-27 17:44:41 +00:00
instruction-selector-unittest.h [turbofan] Enforce that C calls do not use floating point params. 2016-02-15 13:25:23 +00:00
instruction-sequence-unittest.cc RegisterAllocator: Clean up before adding aliasing. 2016-04-25 20:11:40 +00:00
instruction-sequence-unittest.h [turbofan] Create ExplicitOperands to specify operands without virtual registers 2015-10-27 13:27:00 +00:00
int64-lowering-unittest.cc [wasm] Mark all 64-bit instructions as supported on 32-bit platforms. 2016-05-03 11:47:59 +00:00
js-builtin-reducer-unittest.cc [turbofan] Eager frame state gone from JSCallFunction. 2016-06-02 08:49:30 +00:00
js-create-lowering-unittest.cc [runtime] Fix number of literals for builtin functions. 2016-05-24 15:12:58 +00:00
js-intrinsic-lowering-unittest.cc [turbofan] Remove the EmptyFrameState caching on JSGraph. 2016-05-25 11:05:13 +00:00
js-operator-unittest.cc [compiler] Remove obsolete JSYield operator. 2016-05-18 08:55:33 +00:00
js-type-feedback-unittest.cc Remove support for "loads and stores to global vars through property cell shortcuts installed into parent script context" from all compilers. 2015-10-22 09:17:24 +00:00
js-typed-lowering-unittest.cc [turbofan] Initial version of number type feedback. 2016-06-02 09:23:13 +00:00
linkage-tail-call-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
live-range-builder.h [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
live-range-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
liveness-analyzer-unittest.cc [turbofan] Remove the JSContextRelaxation reducer. 2016-02-19 07:55:48 +00:00
load-elimination-unittest.cc [turbofan] Turn common Guard operator into simplified TypeGuard. 2016-05-18 06:19:30 +00:00
loop-peeling-unittest.cc Expose a lower bound of malloc'd memory via heap statistics 2016-04-01 10:01:56 +00:00
machine-operator-reducer-unittest.cc [turbofan] Introduce TruncateTaggedToWord32 simplified operator. 2016-04-24 11:41:20 +00:00
machine-operator-unittest.cc [arm] [arm64] Add optional operators Float32Neg and Float64Neg. 2016-05-27 11:22:07 +00:00
move-optimizer-unittest.cc [turbofan] fine grained in-block move optimization 2016-02-04 06:30:34 +00:00
node-cache-unittest.cc [test] Turn compiler/test-node-cache into a unit test. 2015-04-29 14:40:05 +00:00
node-matchers-unittest.cc [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
node-properties-unittest.cc [turbofan] Proper dead code elimination as regular reducer. 2015-06-19 12:07:26 +00:00
node-test-utils.cc [turbofan] Initial version of number type feedback. 2016-06-02 09:23:13 +00:00
node-test-utils.h [turbofan] Initial version of number type feedback. 2016-06-02 09:23:13 +00:00
node-unittest.cc Fix -Wsign-compare errors in TF tests under GCC 4.9.2 2015-06-15 12:03:45 +00:00
opcodes-unittest.cc [turbofan] Strength reduction for inline comparisons. 2015-02-24 12:26:29 +00:00
register-allocator-unittest.cc Re-reland: Remove register index/code indirection 2015-10-02 16:55:22 +00:00
schedule-unittest.cc Model exceptional edges from call nodes in TurboFan. 2015-02-20 09:55:00 +00:00
scheduler-rpo-unittest.cc Move RPO unittests into their own file. 2016-02-14 11:27:46 +00:00
scheduler-unittest.cc [turbofan] Handle dead diamonds in scheduling and add a test. 2016-04-04 17:45:59 +00:00
simplified-operator-reducer-unittest.cc [turbofan] Remove left-over change bits from ChangeLowering. 2016-05-02 10:23:43 +00:00
simplified-operator-unittest.cc Turn on -Wmissing-field-initializers on Linux. 2016-05-06 10:20:30 +00:00
state-values-utils-unittest.cc [turbofan] Move SimplifiedOperatorBuilder into JSGraph. 2015-10-16 12:38:52 +00:00
tail-call-optimization-unittest.cc [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
typer-unittest.cc Remove strong mode support from binary operations. 2016-02-16 13:55:29 +00:00
value-numbering-reducer-unittest.cc [turbofan] Check node input/use consistency for changed operators and new nodes. 2015-09-25 08:43:11 +00:00
zone-pool-unittest.cc Expose a lower bound of malloc'd memory via heap statistics 2016-04-01 10:01:56 +00:00