Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: src/compiler/common-operator.cc

Issue 2164263003: [turbofan] Induction variable bound analysis. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/common-operator.h ('k') | src/compiler/loop-analysis.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/common-operator.h" 5 #include "src/compiler/common-operator.h"
6 6
7 #include "src/assembler.h" 7 #include "src/assembler.h"
8 #include "src/base/lazy-instance.h" 8 #include "src/base/lazy-instance.h"
9 #include "src/compiler/linkage.h" 9 #include "src/compiler/linkage.h"
10 #include "src/compiler/opcodes.h" 10 #include "src/compiler/opcodes.h"
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 269
270 270
271 #define CACHED_EFFECT_PHI_LIST(V) \ 271 #define CACHED_EFFECT_PHI_LIST(V) \
272 V(1) \ 272 V(1) \
273 V(2) \ 273 V(2) \
274 V(3) \ 274 V(3) \
275 V(4) \ 275 V(4) \
276 V(5) \ 276 V(5) \
277 V(6) 277 V(6)
278 278
279 #define CACHED_INDUCTION_VARIABLE_PHI_LIST(V) \
280 V(4) \
281 V(5) \
282 V(6) \
283 V(7)
279 284
280 #define CACHED_LOOP_LIST(V) \ 285 #define CACHED_LOOP_LIST(V) \
281 V(1) \ 286 V(1) \
282 V(2) 287 V(2)
283 288
284 289
285 #define CACHED_MERGE_LIST(V) \ 290 #define CACHED_MERGE_LIST(V) \
286 V(1) \ 291 V(1) \
287 V(2) \ 292 V(2) \
288 V(3) \ 293 V(3) \
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 "Phi", // name 471 "Phi", // name
467 kInputCount, 0, 1, 1, 0, 0, // counts 472 kInputCount, 0, 1, 1, 0, 0, // counts
468 kRep) {} // parameter 473 kRep) {} // parameter
469 }; 474 };
470 #define CACHED_PHI(rep, input_count) \ 475 #define CACHED_PHI(rep, input_count) \
471 PhiOperator<MachineRepresentation::rep, input_count> \ 476 PhiOperator<MachineRepresentation::rep, input_count> \
472 kPhi##rep##input_count##Operator; 477 kPhi##rep##input_count##Operator;
473 CACHED_PHI_LIST(CACHED_PHI) 478 CACHED_PHI_LIST(CACHED_PHI)
474 #undef CACHED_PHI 479 #undef CACHED_PHI
475 480
481 template <int kInputCount>
482 struct InductionVariablePhiOperator final : public Operator {
483 InductionVariablePhiOperator()
484 : Operator( //--
485 IrOpcode::kInductionVariablePhi, Operator::kPure, // opcode
486 "InductionVariablePhi", // name
487 kInputCount, 0, 1, 1, 0, 0) {} // counts
488 };
489 #define CACHED_INDUCTION_VARIABLE_PHI(input_count) \
490 InductionVariablePhiOperator<input_count> \
491 kInductionVariablePhi##input_count##Operator;
492 CACHED_INDUCTION_VARIABLE_PHI_LIST(CACHED_INDUCTION_VARIABLE_PHI)
493 #undef CACHED_INDUCTION_VARIABLE_PHI
494
476 template <int kIndex> 495 template <int kIndex>
477 struct ParameterOperator final : public Operator1<ParameterInfo> { 496 struct ParameterOperator final : public Operator1<ParameterInfo> {
478 ParameterOperator() 497 ParameterOperator()
479 : Operator1<ParameterInfo>( // -- 498 : Operator1<ParameterInfo>( // --
480 IrOpcode::kParameter, Operator::kPure, // opcode 499 IrOpcode::kParameter, Operator::kPure, // opcode
481 "Parameter", // name 500 "Parameter", // name
482 1, 0, 0, 1, 0, 0, // counts, 501 1, 0, 0, 1, 0, 0, // counts,
483 ParameterInfo(kIndex, nullptr)) {} // parameter and name 502 ParameterInfo(kIndex, nullptr)) {} // parameter and name
484 }; 503 };
485 #define CACHED_PARAMETER(index) \ 504 #define CACHED_PARAMETER(index) \
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 default: 865 default:
847 break; 866 break;
848 } 867 }
849 // Uncached. 868 // Uncached.
850 return new (zone()) Operator( // -- 869 return new (zone()) Operator( // --
851 IrOpcode::kEffectPhi, Operator::kKontrol, // opcode 870 IrOpcode::kEffectPhi, Operator::kKontrol, // opcode
852 "EffectPhi", // name 871 "EffectPhi", // name
853 0, effect_input_count, 1, 0, 1, 0); // counts 872 0, effect_input_count, 1, 0, 1, 0); // counts
854 } 873 }
855 874
875 const Operator* CommonOperatorBuilder::InductionVariablePhi(int input_count) {
876 DCHECK(input_count >= 4); // There must be always the entry, backedge,
877 // increment and at least one bound.
878 switch (input_count) {
879 #define CACHED_INDUCTION_VARIABLE_PHI(input_count) \
880 case input_count: \
881 return &cache_.kInductionVariablePhi##input_count##Operator;
882 CACHED_INDUCTION_VARIABLE_PHI_LIST(CACHED_INDUCTION_VARIABLE_PHI)
883 #undef CACHED_INDUCTION_VARIABLE_PHI
884 default:
885 break;
886 }
887 // Uncached.
888 return new (zone()) Operator( // --
889 IrOpcode::kInductionVariablePhi, Operator::kPure, // opcode
890 "InductionVariablePhi", // name
891 input_count, 0, 1, 1, 0, 0); // counts
892 }
893
856 const Operator* CommonOperatorBuilder::BeginRegion( 894 const Operator* CommonOperatorBuilder::BeginRegion(
857 RegionObservability region_observability) { 895 RegionObservability region_observability) {
858 switch (region_observability) { 896 switch (region_observability) {
859 case RegionObservability::kObservable: 897 case RegionObservability::kObservable:
860 return &cache_.kBeginRegionObservableOperator; 898 return &cache_.kBeginRegionObservableOperator;
861 case RegionObservability::kNotObservable: 899 case RegionObservability::kNotObservable:
862 return &cache_.kBeginRegionNotObservableOperator; 900 return &cache_.kBeginRegionNotObservableOperator;
863 } 901 }
864 UNREACHABLE(); 902 UNREACHABLE();
865 return nullptr; 903 return nullptr;
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 CommonOperatorBuilder::CreateFrameStateFunctionInfo( 1030 CommonOperatorBuilder::CreateFrameStateFunctionInfo(
993 FrameStateType type, int parameter_count, int local_count, 1031 FrameStateType type, int parameter_count, int local_count,
994 Handle<SharedFunctionInfo> shared_info) { 1032 Handle<SharedFunctionInfo> shared_info) {
995 return new (zone()->New(sizeof(FrameStateFunctionInfo))) 1033 return new (zone()->New(sizeof(FrameStateFunctionInfo)))
996 FrameStateFunctionInfo(type, parameter_count, local_count, shared_info); 1034 FrameStateFunctionInfo(type, parameter_count, local_count, shared_info);
997 } 1035 }
998 1036
999 } // namespace compiler 1037 } // namespace compiler
1000 } // namespace internal 1038 } // namespace internal
1001 } // namespace v8 1039 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/common-operator.h ('k') | src/compiler/loop-analysis.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698