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

Side by Side Diff: test/cctest/compiler/test-simplified-lowering.cc

Issue 2159373004: [turbofan] Properly handle bit->tagged representation changes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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/representation-change.cc ('k') | no next file » | 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 <limits> 5 #include <limits>
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/compiler/access-builder.h" 8 #include "src/compiler/access-builder.h"
9 #include "src/compiler/control-builders.h" 9 #include "src/compiler/control-builders.h"
10 #include "src/compiler/effect-control-linearizer.h" 10 #include "src/compiler/effect-control-linearizer.h"
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 MachineType::AnyTagged(), Type::Signed32()); 1129 MachineType::AnyTagged(), Type::Signed32());
1130 1130
1131 CheckChangeInsertion(IrOpcode::kChangeUint32ToFloat64, MachineType::Uint32(), 1131 CheckChangeInsertion(IrOpcode::kChangeUint32ToFloat64, MachineType::Uint32(),
1132 MachineType::Float64(), Type::Unsigned32()); 1132 MachineType::Float64(), Type::Unsigned32());
1133 CheckChangeInsertion(IrOpcode::kChangeUint32ToTagged, MachineType::Uint32(), 1133 CheckChangeInsertion(IrOpcode::kChangeUint32ToTagged, MachineType::Uint32(),
1134 MachineType::AnyTagged(), Type::Unsigned32()); 1134 MachineType::AnyTagged(), Type::Unsigned32());
1135 } 1135 }
1136 1136
1137 static void CheckChangesAroundBinop(TestingGraph* t, const Operator* op, 1137 static void CheckChangesAroundBinop(TestingGraph* t, const Operator* op,
1138 IrOpcode::Value input_change, 1138 IrOpcode::Value input_change,
1139 IrOpcode::Value output_change, 1139 IrOpcode::Value output_change, Type* type) {
1140 Type* type = Type::Any()) {
1141 Node* binop = 1140 Node* binop =
1142 op->ControlInputCount() == 0 1141 op->ControlInputCount() == 0
1143 ? t->graph()->NewNode(op, t->p0, t->p1) 1142 ? t->graph()->NewNode(op, t->p0, t->p1)
1144 : t->graph()->NewNode(op, t->p0, t->p1, t->graph()->start()); 1143 : t->graph()->NewNode(op, t->p0, t->p1, t->graph()->start());
1145 NodeProperties::SetType(binop, type); 1144 NodeProperties::SetType(binop, type);
1146 t->Return(binop); 1145 t->Return(binop);
1147 t->Lower(); 1146 t->Lower();
1148 CHECK_EQ(input_change, binop->InputAt(0)->opcode()); 1147 CHECK_EQ(input_change, binop->InputAt(0)->opcode());
1149 CHECK_EQ(input_change, binop->InputAt(1)->opcode()); 1148 CHECK_EQ(input_change, binop->InputAt(1)->opcode());
1150 CHECK_EQ(t->p0, binop->InputAt(0)->InputAt(0)); 1149 CHECK_EQ(t->p0, binop->InputAt(0)->InputAt(0));
(...skipping 22 matching lines...) Expand all
1173 1172
1174 1173
1175 TEST(InsertChangesAroundInt32Cmp) { 1174 TEST(InsertChangesAroundInt32Cmp) {
1176 TestingGraph t(Type::Signed32(), Type::Signed32()); 1175 TestingGraph t(Type::Signed32(), Type::Signed32());
1177 1176
1178 const Operator* ops[] = {t.machine()->Int32LessThan(), 1177 const Operator* ops[] = {t.machine()->Int32LessThan(),
1179 t.machine()->Int32LessThanOrEqual()}; 1178 t.machine()->Int32LessThanOrEqual()};
1180 1179
1181 for (size_t i = 0; i < arraysize(ops); i++) { 1180 for (size_t i = 0; i < arraysize(ops); i++) {
1182 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32, 1181 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32,
1183 IrOpcode::kChangeBitToTagged); 1182 IrOpcode::kChangeBitToTagged, Type::Boolean());
1184 } 1183 }
1185 } 1184 }
1186 1185
1187 1186
1188 TEST(InsertChangesAroundUint32Cmp) { 1187 TEST(InsertChangesAroundUint32Cmp) {
1189 TestingGraph t(Type::Unsigned32(), Type::Unsigned32()); 1188 TestingGraph t(Type::Unsigned32(), Type::Unsigned32());
1190 1189
1191 const Operator* ops[] = {t.machine()->Uint32LessThan(), 1190 const Operator* ops[] = {t.machine()->Uint32LessThan(),
1192 t.machine()->Uint32LessThanOrEqual()}; 1191 t.machine()->Uint32LessThanOrEqual()};
1193 1192
1194 for (size_t i = 0; i < arraysize(ops); i++) { 1193 for (size_t i = 0; i < arraysize(ops); i++) {
1195 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToUint32, 1194 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToUint32,
1196 IrOpcode::kChangeBitToTagged); 1195 IrOpcode::kChangeBitToTagged, Type::Boolean());
1197 } 1196 }
1198 } 1197 }
1199 1198
1200 1199
1201 TEST(InsertChangesAroundFloat64Binops) { 1200 TEST(InsertChangesAroundFloat64Binops) {
1202 TestingGraph t(Type::Number(), Type::Number()); 1201 TestingGraph t(Type::Number(), Type::Number());
1203 1202
1204 const Operator* ops[] = { 1203 const Operator* ops[] = {
1205 t.machine()->Float64Add(), t.machine()->Float64Sub(), 1204 t.machine()->Float64Add(), t.machine()->Float64Sub(),
1206 t.machine()->Float64Mul(), t.machine()->Float64Div(), 1205 t.machine()->Float64Mul(), t.machine()->Float64Div(),
1207 t.machine()->Float64Mod(), 1206 t.machine()->Float64Mod(),
1208 }; 1207 };
1209 1208
1210 for (size_t i = 0; i < arraysize(ops); i++) { 1209 for (size_t i = 0; i < arraysize(ops); i++) {
1211 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64, 1210 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64,
1212 IrOpcode::kChangeFloat64ToTagged, Type::Number()); 1211 IrOpcode::kChangeFloat64ToTagged, Type::Number());
1213 } 1212 }
1214 } 1213 }
1215 1214
1216 1215
1217 TEST(InsertChangesAroundFloat64Cmp) { 1216 TEST(InsertChangesAroundFloat64Cmp) {
1218 TestingGraph t(Type::Number(), Type::Number()); 1217 TestingGraph t(Type::Number(), Type::Number());
1219 1218
1220 const Operator* ops[] = {t.machine()->Float64Equal(), 1219 const Operator* ops[] = {t.machine()->Float64Equal(),
1221 t.machine()->Float64LessThan(), 1220 t.machine()->Float64LessThan(),
1222 t.machine()->Float64LessThanOrEqual()}; 1221 t.machine()->Float64LessThanOrEqual()};
1223 1222
1224 for (size_t i = 0; i < arraysize(ops); i++) { 1223 for (size_t i = 0; i < arraysize(ops); i++) {
1225 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64, 1224 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64,
1226 IrOpcode::kChangeBitToTagged); 1225 IrOpcode::kChangeBitToTagged, Type::Boolean());
1227 } 1226 }
1228 } 1227 }
1229 1228
1230 1229
1231 namespace { 1230 namespace {
1232 1231
1233 void CheckFieldAccessArithmetic(FieldAccess access, Node* load_or_store) { 1232 void CheckFieldAccessArithmetic(FieldAccess access, Node* load_or_store) {
1234 IntPtrMatcher mindex(load_or_store->InputAt(1)); 1233 IntPtrMatcher mindex(load_or_store->InputAt(1));
1235 CHECK(mindex.Is(access.offset - access.tag())); 1234 CHECK(mindex.Is(access.offset - access.tag()));
1236 } 1235 }
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
1902 t.Return(use); 1901 t.Return(use);
1903 t.Lower(); 1902 t.Lower();
1904 1903
1905 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op())); 1904 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op()));
1906 } 1905 }
1907 } 1906 }
1908 1907
1909 } // namespace compiler 1908 } // namespace compiler
1910 } // namespace internal 1909 } // namespace internal
1911 } // namespace v8 1910 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/representation-change.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698