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

Side by Side Diff: src/compiler/load-elimination.cc

Issue 2700813002: [V8] Implement SIMD Boolean vector types to allow mask registers. (Closed)
Patch Set: Rebase. Created 3 years, 10 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
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/load-elimination.h" 5 #include "src/compiler/load-elimination.h"
6 6
7 #include "src/compiler/common-operator.h" 7 #include "src/compiler/common-operator.h"
8 #include "src/compiler/js-graph.h" 8 #include "src/compiler/js-graph.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 #include "src/compiler/simplified-operator.h" 10 #include "src/compiler/simplified-operator.h"
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 Node* const old_value = state->LookupElement(object, index); 828 Node* const old_value = state->LookupElement(object, index);
829 if (old_value == new_value) { 829 if (old_value == new_value) {
830 // This store is fully redundant. 830 // This store is fully redundant.
831 return Replace(effect); 831 return Replace(effect);
832 } 832 }
833 // Kill all potentially aliasing elements. 833 // Kill all potentially aliasing elements.
834 state = state->KillElement(object, index, zone()); 834 state = state->KillElement(object, index, zone());
835 // Only record the new value if the store doesn't have an implicit truncation. 835 // Only record the new value if the store doesn't have an implicit truncation.
836 switch (access.machine_type.representation()) { 836 switch (access.machine_type.representation()) {
837 case MachineRepresentation::kNone: 837 case MachineRepresentation::kNone:
838 case MachineRepresentation::kSimd1x4:
839 case MachineRepresentation::kSimd1x8:
840 case MachineRepresentation::kSimd1x16:
838 case MachineRepresentation::kBit: 841 case MachineRepresentation::kBit:
839 UNREACHABLE(); 842 UNREACHABLE();
840 break; 843 break;
841 case MachineRepresentation::kWord8: 844 case MachineRepresentation::kWord8:
842 case MachineRepresentation::kWord16: 845 case MachineRepresentation::kWord16:
843 case MachineRepresentation::kWord32: 846 case MachineRepresentation::kWord32:
844 case MachineRepresentation::kWord64: 847 case MachineRepresentation::kWord64:
845 case MachineRepresentation::kFloat32: 848 case MachineRepresentation::kFloat32:
846 // TODO(turbofan): Add support for doing the truncations. 849 // TODO(turbofan): Add support for doing the truncations.
847 break; 850 break;
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 return field_index - 1; 1033 return field_index - 1;
1031 } 1034 }
1032 1035
1033 // static 1036 // static
1034 int LoadElimination::FieldIndexOf(FieldAccess const& access) { 1037 int LoadElimination::FieldIndexOf(FieldAccess const& access) {
1035 MachineRepresentation rep = access.machine_type.representation(); 1038 MachineRepresentation rep = access.machine_type.representation();
1036 switch (rep) { 1039 switch (rep) {
1037 case MachineRepresentation::kNone: 1040 case MachineRepresentation::kNone:
1038 case MachineRepresentation::kBit: 1041 case MachineRepresentation::kBit:
1039 case MachineRepresentation::kSimd128: 1042 case MachineRepresentation::kSimd128:
1043 case MachineRepresentation::kSimd1x4:
1044 case MachineRepresentation::kSimd1x8:
1045 case MachineRepresentation::kSimd1x16:
1040 UNREACHABLE(); 1046 UNREACHABLE();
1041 break; 1047 break;
1042 case MachineRepresentation::kWord32: 1048 case MachineRepresentation::kWord32:
1043 case MachineRepresentation::kWord64: 1049 case MachineRepresentation::kWord64:
1044 if (rep != MachineType::PointerRepresentation()) { 1050 if (rep != MachineType::PointerRepresentation()) {
1045 return -1; // We currently only track pointer size fields. 1051 return -1; // We currently only track pointer size fields.
1046 } 1052 }
1047 break; 1053 break;
1048 case MachineRepresentation::kWord8: 1054 case MachineRepresentation::kWord8:
1049 case MachineRepresentation::kWord16: 1055 case MachineRepresentation::kWord16:
(...skipping 21 matching lines...) Expand all
1071 return jsgraph()->common(); 1077 return jsgraph()->common();
1072 } 1078 }
1073 1079
1074 Graph* LoadElimination::graph() const { return jsgraph()->graph(); } 1080 Graph* LoadElimination::graph() const { return jsgraph()->graph(); }
1075 1081
1076 Factory* LoadElimination::factory() const { return jsgraph()->factory(); } 1082 Factory* LoadElimination::factory() const { return jsgraph()->factory(); }
1077 1083
1078 } // namespace compiler 1084 } // namespace compiler
1079 } // namespace internal 1085 } // namespace internal
1080 } // namespace v8 1086 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-native-context-specialization.cc ('k') | src/compiler/machine-graph-verifier.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698