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

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

Issue 1799023003: [turbofan] Use the type from the typer instead of computing new type in representation inference. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix uninitialized field Created 4 years, 9 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/simplified-lowering.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/change-lowering.h" 9 #include "src/compiler/change-lowering.h"
10 #include "src/compiler/control-builders.h" 10 #include "src/compiler/control-builders.h"
(...skipping 1154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 CheckChangeInsertion(IrOpcode::kChangeTaggedToUint32, 1165 CheckChangeInsertion(IrOpcode::kChangeTaggedToUint32,
1166 MachineType::AnyTagged(), MachineType::Uint32(), 1166 MachineType::AnyTagged(), MachineType::Uint32(),
1167 Type::Unsigned32()); 1167 Type::Unsigned32());
1168 1168
1169 CheckChangeInsertion(IrOpcode::kChangeFloat64ToTagged, MachineType::Float64(), 1169 CheckChangeInsertion(IrOpcode::kChangeFloat64ToTagged, MachineType::Float64(),
1170 MachineType::AnyTagged()); 1170 MachineType::AnyTagged());
1171 CheckChangeInsertion(IrOpcode::kChangeTaggedToFloat64, 1171 CheckChangeInsertion(IrOpcode::kChangeTaggedToFloat64,
1172 MachineType::AnyTagged(), MachineType::Float64()); 1172 MachineType::AnyTagged(), MachineType::Float64());
1173 1173
1174 CheckChangeInsertion(IrOpcode::kChangeInt32ToFloat64, MachineType::Int32(), 1174 CheckChangeInsertion(IrOpcode::kChangeInt32ToFloat64, MachineType::Int32(),
1175 MachineType::Float64()); 1175 MachineType::Float64(), Type::Signed32());
1176 CheckChangeInsertion(IrOpcode::kChangeInt32ToTagged, MachineType::Int32(), 1176 CheckChangeInsertion(IrOpcode::kChangeInt32ToTagged, MachineType::Int32(),
1177 MachineType::AnyTagged()); 1177 MachineType::AnyTagged(), Type::Signed32());
1178 1178
1179 CheckChangeInsertion(IrOpcode::kChangeUint32ToFloat64, MachineType::Uint32(), 1179 CheckChangeInsertion(IrOpcode::kChangeUint32ToFloat64, MachineType::Uint32(),
1180 MachineType::Float64()); 1180 MachineType::Float64(), Type::Unsigned32());
1181 CheckChangeInsertion(IrOpcode::kChangeUint32ToTagged, MachineType::Uint32(), 1181 CheckChangeInsertion(IrOpcode::kChangeUint32ToTagged, MachineType::Uint32(),
1182 MachineType::AnyTagged()); 1182 MachineType::AnyTagged(), Type::Unsigned32());
1183 } 1183 }
1184 1184
1185
1186 static void CheckChangesAroundBinop(TestingGraph* t, const Operator* op, 1185 static void CheckChangesAroundBinop(TestingGraph* t, const Operator* op,
1187 IrOpcode::Value input_change, 1186 IrOpcode::Value input_change,
1188 IrOpcode::Value output_change) { 1187 IrOpcode::Value output_change,
1188 Type* type = Type::Any()) {
1189 Node* binop = 1189 Node* binop =
1190 op->ControlInputCount() == 0 1190 op->ControlInputCount() == 0
1191 ? t->graph()->NewNode(op, t->p0, t->p1) 1191 ? t->graph()->NewNode(op, t->p0, t->p1)
1192 : t->graph()->NewNode(op, t->p0, t->p1, t->graph()->start()); 1192 : t->graph()->NewNode(op, t->p0, t->p1, t->graph()->start());
1193 NodeProperties::SetType(binop, type);
1193 t->Return(binop); 1194 t->Return(binop);
1194 t->Lower(); 1195 t->Lower();
1195 CHECK_EQ(input_change, binop->InputAt(0)->opcode()); 1196 CHECK_EQ(input_change, binop->InputAt(0)->opcode());
1196 CHECK_EQ(input_change, binop->InputAt(1)->opcode()); 1197 CHECK_EQ(input_change, binop->InputAt(1)->opcode());
1197 CHECK_EQ(t->p0, binop->InputAt(0)->InputAt(0)); 1198 CHECK_EQ(t->p0, binop->InputAt(0)->InputAt(0));
1198 CHECK_EQ(t->p1, binop->InputAt(1)->InputAt(0)); 1199 CHECK_EQ(t->p1, binop->InputAt(1)->InputAt(0));
1199 CHECK_EQ(output_change, t->ret->InputAt(0)->opcode()); 1200 CHECK_EQ(output_change, t->ret->InputAt(0)->opcode());
1200 CHECK_EQ(binop, t->ret->InputAt(0)->InputAt(0)); 1201 CHECK_EQ(binop, t->ret->InputAt(0)->InputAt(0));
1201 } 1202 }
1202 1203
1203 1204
1204 TEST(InsertChangesAroundInt32Binops) { 1205 TEST(InsertChangesAroundInt32Binops) {
1205 TestingGraph t(Type::Signed32(), Type::Signed32()); 1206 TestingGraph t(Type::Signed32(), Type::Signed32());
1206 1207
1207 const Operator* ops[] = {t.machine()->Int32Add(), t.machine()->Int32Sub(), 1208 const Operator* ops[] = {t.machine()->Int32Add(), t.machine()->Int32Sub(),
1208 t.machine()->Int32Mul(), t.machine()->Int32Div(), 1209 t.machine()->Int32Mul(), t.machine()->Int32Div(),
1209 t.machine()->Int32Mod(), t.machine()->Word32And(), 1210 t.machine()->Int32Mod(), t.machine()->Word32And(),
1210 t.machine()->Word32Or(), t.machine()->Word32Xor(), 1211 t.machine()->Word32Or(), t.machine()->Word32Xor(),
1211 t.machine()->Word32Shl(), t.machine()->Word32Sar()}; 1212 t.machine()->Word32Shl(), t.machine()->Word32Sar()};
1212 1213
1213 for (size_t i = 0; i < arraysize(ops); i++) { 1214 for (size_t i = 0; i < arraysize(ops); i++) {
1214 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32, 1215 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32,
1215 IrOpcode::kChangeInt32ToTagged); 1216 IrOpcode::kChangeInt32ToTagged, Type::Signed32());
1217 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32,
1218 IrOpcode::kChangeInt32ToTagged, Type::Signed32());
1216 } 1219 }
1217 } 1220 }
1218 1221
1219 1222
1220 TEST(InsertChangesAroundInt32Cmp) { 1223 TEST(InsertChangesAroundInt32Cmp) {
1221 TestingGraph t(Type::Signed32(), Type::Signed32()); 1224 TestingGraph t(Type::Signed32(), Type::Signed32());
1222 1225
1223 const Operator* ops[] = {t.machine()->Int32LessThan(), 1226 const Operator* ops[] = {t.machine()->Int32LessThan(),
1224 t.machine()->Int32LessThanOrEqual()}; 1227 t.machine()->Int32LessThanOrEqual()};
1225 1228
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 t.Return(use); 1948 t.Return(use);
1946 t.Lower(); 1949 t.Lower();
1947 1950
1948 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op())); 1951 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op()));
1949 } 1952 }
1950 } 1953 }
1951 1954
1952 } // namespace compiler 1955 } // namespace compiler
1953 } // namespace internal 1956 } // namespace internal
1954 } // namespace v8 1957 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698