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

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

Issue 1942733002: Revert of [turbofan] Remove left-over change bits from ChangeLowering. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 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 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 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 836
837 837
838 TEST(LowerBooleanNot_bit_tagged) { 838 TEST(LowerBooleanNot_bit_tagged) {
839 // BooleanNot(x: kRepBit) used as kRepTagged 839 // BooleanNot(x: kRepBit) used as kRepTagged
840 TestingGraph t(Type::Boolean()); 840 TestingGraph t(Type::Boolean());
841 Node* b = t.ExampleWithOutput(MachineType::Bool()); 841 Node* b = t.ExampleWithOutput(MachineType::Bool());
842 Node* inv = t.graph()->NewNode(t.simplified()->BooleanNot(), b); 842 Node* inv = t.graph()->NewNode(t.simplified()->BooleanNot(), b);
843 Node* use = t.Use(inv, MachineType::AnyTagged()); 843 Node* use = t.Use(inv, MachineType::AnyTagged());
844 t.Return(use); 844 t.Return(use);
845 t.Lower(); 845 t.Lower();
846 CHECK_EQ(IrOpcode::kChangeBitToTagged, use->InputAt(0)->opcode()); 846 CHECK_EQ(IrOpcode::kChangeBitToBool, use->InputAt(0)->opcode());
847 Node* cmp = use->InputAt(0)->InputAt(0); 847 Node* cmp = use->InputAt(0)->InputAt(0);
848 CHECK_EQ(t.machine()->Word32Equal()->opcode(), cmp->opcode()); 848 CHECK_EQ(t.machine()->Word32Equal()->opcode(), cmp->opcode());
849 CHECK(b == cmp->InputAt(0) || b == cmp->InputAt(1)); 849 CHECK(b == cmp->InputAt(0) || b == cmp->InputAt(1));
850 Node* f = t.jsgraph.Int32Constant(0); 850 Node* f = t.jsgraph.Int32Constant(0);
851 CHECK(f == cmp->InputAt(0) || f == cmp->InputAt(1)); 851 CHECK(f == cmp->InputAt(0) || f == cmp->InputAt(1));
852 } 852 }
853 853
854 854
855 TEST(LowerBooleanNot_tagged_bit) { 855 TEST(LowerBooleanNot_tagged_bit) {
856 // BooleanNot(x: kRepTagged) used as kRepBit 856 // BooleanNot(x: kRepTagged) used as kRepBit
(...skipping 11 matching lines...) Expand all
868 868
869 869
870 TEST(LowerBooleanNot_tagged_tagged) { 870 TEST(LowerBooleanNot_tagged_tagged) {
871 // BooleanNot(x: kRepTagged) used as kRepTagged 871 // BooleanNot(x: kRepTagged) used as kRepTagged
872 TestingGraph t(Type::Boolean()); 872 TestingGraph t(Type::Boolean());
873 Node* b = t.p0; 873 Node* b = t.p0;
874 Node* inv = t.graph()->NewNode(t.simplified()->BooleanNot(), b); 874 Node* inv = t.graph()->NewNode(t.simplified()->BooleanNot(), b);
875 Node* use = t.Use(inv, MachineType::AnyTagged()); 875 Node* use = t.Use(inv, MachineType::AnyTagged());
876 t.Return(use); 876 t.Return(use);
877 t.Lower(); 877 t.Lower();
878 CHECK_EQ(IrOpcode::kChangeBitToTagged, use->InputAt(0)->opcode()); 878 CHECK_EQ(IrOpcode::kChangeBitToBool, use->InputAt(0)->opcode());
879 Node* cmp = use->InputAt(0)->InputAt(0); 879 Node* cmp = use->InputAt(0)->InputAt(0);
880 CHECK_EQ(t.machine()->WordEqual()->opcode(), cmp->opcode()); 880 CHECK_EQ(t.machine()->WordEqual()->opcode(), cmp->opcode());
881 CHECK(b == cmp->InputAt(0) || b == cmp->InputAt(1)); 881 CHECK(b == cmp->InputAt(0) || b == cmp->InputAt(1));
882 Node* f = t.jsgraph.FalseConstant(); 882 Node* f = t.jsgraph.FalseConstant();
883 CHECK(f == cmp->InputAt(0) || f == cmp->InputAt(1)); 883 CHECK(f == cmp->InputAt(0) || f == cmp->InputAt(1));
884 } 884 }
885 885
886 886
887 TEST(LowerBooleanToNumber_bit_int32) { 887 TEST(LowerBooleanToNumber_bit_int32) {
888 // BooleanToNumber(x: kRepBit) used as MachineType::Int32() 888 // BooleanToNumber(x: kRepBit) used as MachineType::Int32()
(...skipping 24 matching lines...) Expand all
913 913
914 TEST(LowerBooleanToNumber_bit_tagged) { 914 TEST(LowerBooleanToNumber_bit_tagged) {
915 // BooleanToNumber(x: kRepBit) used as MachineType::AnyTagged() 915 // BooleanToNumber(x: kRepBit) used as MachineType::AnyTagged()
916 TestingGraph t(Type::Boolean()); 916 TestingGraph t(Type::Boolean());
917 Node* b = t.ExampleWithOutput(MachineType::Bool()); 917 Node* b = t.ExampleWithOutput(MachineType::Bool());
918 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b); 918 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b);
919 Node* use = t.Use(cnv, MachineType::AnyTagged()); 919 Node* use = t.Use(cnv, MachineType::AnyTagged());
920 t.Return(use); 920 t.Return(use);
921 t.Lower(); 921 t.Lower();
922 CHECK_EQ(b, use->InputAt(0)->InputAt(0)); 922 CHECK_EQ(b, use->InputAt(0)->InputAt(0));
923 CHECK_EQ(IrOpcode::kChangeInt31ToTaggedSigned, use->InputAt(0)->opcode()); 923 CHECK_EQ(IrOpcode::kChangeInt31ToTagged, use->InputAt(0)->opcode());
924 } 924 }
925 925
926 926
927 TEST(LowerBooleanToNumber_tagged_tagged) { 927 TEST(LowerBooleanToNumber_tagged_tagged) {
928 // BooleanToNumber(x: kRepTagged) used as MachineType::AnyTagged() 928 // BooleanToNumber(x: kRepTagged) used as MachineType::AnyTagged()
929 TestingGraph t(Type::Boolean()); 929 TestingGraph t(Type::Boolean());
930 Node* b = t.p0; 930 Node* b = t.p0;
931 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b); 931 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b);
932 Node* use = t.Use(cnv, MachineType::AnyTagged()); 932 Node* use = t.Use(cnv, MachineType::AnyTagged());
933 t.Return(use); 933 t.Return(use);
934 t.Lower(); 934 t.Lower();
935 CHECK_EQ(cnv, use->InputAt(0)->InputAt(0)); 935 CHECK_EQ(cnv, use->InputAt(0)->InputAt(0));
936 CHECK_EQ(IrOpcode::kChangeInt31ToTaggedSigned, use->InputAt(0)->opcode()); 936 CHECK_EQ(IrOpcode::kChangeInt31ToTagged, use->InputAt(0)->opcode());
937 CHECK_EQ(t.machine()->WordEqual()->opcode(), cnv->opcode()); 937 CHECK_EQ(t.machine()->WordEqual()->opcode(), cnv->opcode());
938 CHECK(b == cnv->InputAt(0) || b == cnv->InputAt(1)); 938 CHECK(b == cnv->InputAt(0) || b == cnv->InputAt(1));
939 Node* c = t.jsgraph.TrueConstant(); 939 Node* c = t.jsgraph.TrueConstant();
940 CHECK(c == cnv->InputAt(0) || c == cnv->InputAt(1)); 940 CHECK(c == cnv->InputAt(0) || c == cnv->InputAt(1));
941 } 941 }
942 942
943 static Type* test_types[] = {Type::Signed32(), Type::Unsigned32(), 943 static Type* test_types[] = {Type::Signed32(), Type::Unsigned32(),
944 Type::Number()}; 944 Type::Number()};
945 945
946 TEST(LowerNumberCmp_to_int32) { 946 TEST(LowerNumberCmp_to_int32) {
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 1214
1215 1215
1216 TEST(InsertChangesAroundInt32Cmp) { 1216 TEST(InsertChangesAroundInt32Cmp) {
1217 TestingGraph t(Type::Signed32(), Type::Signed32()); 1217 TestingGraph t(Type::Signed32(), Type::Signed32());
1218 1218
1219 const Operator* ops[] = {t.machine()->Int32LessThan(), 1219 const Operator* ops[] = {t.machine()->Int32LessThan(),
1220 t.machine()->Int32LessThanOrEqual()}; 1220 t.machine()->Int32LessThanOrEqual()};
1221 1221
1222 for (size_t i = 0; i < arraysize(ops); i++) { 1222 for (size_t i = 0; i < arraysize(ops); i++) {
1223 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32, 1223 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToInt32,
1224 IrOpcode::kChangeBitToTagged); 1224 IrOpcode::kChangeBitToBool);
1225 } 1225 }
1226 } 1226 }
1227 1227
1228 1228
1229 TEST(InsertChangesAroundUint32Cmp) { 1229 TEST(InsertChangesAroundUint32Cmp) {
1230 TestingGraph t(Type::Unsigned32(), Type::Unsigned32()); 1230 TestingGraph t(Type::Unsigned32(), Type::Unsigned32());
1231 1231
1232 const Operator* ops[] = {t.machine()->Uint32LessThan(), 1232 const Operator* ops[] = {t.machine()->Uint32LessThan(),
1233 t.machine()->Uint32LessThanOrEqual()}; 1233 t.machine()->Uint32LessThanOrEqual()};
1234 1234
1235 for (size_t i = 0; i < arraysize(ops); i++) { 1235 for (size_t i = 0; i < arraysize(ops); i++) {
1236 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToUint32, 1236 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToUint32,
1237 IrOpcode::kChangeBitToTagged); 1237 IrOpcode::kChangeBitToBool);
1238 } 1238 }
1239 } 1239 }
1240 1240
1241 1241
1242 TEST(InsertChangesAroundFloat64Binops) { 1242 TEST(InsertChangesAroundFloat64Binops) {
1243 TestingGraph t(Type::Number(), Type::Number()); 1243 TestingGraph t(Type::Number(), Type::Number());
1244 1244
1245 const Operator* ops[] = { 1245 const Operator* ops[] = {
1246 t.machine()->Float64Add(), t.machine()->Float64Sub(), 1246 t.machine()->Float64Add(), t.machine()->Float64Sub(),
1247 t.machine()->Float64Mul(), t.machine()->Float64Div(), 1247 t.machine()->Float64Mul(), t.machine()->Float64Div(),
1248 t.machine()->Float64Mod(), 1248 t.machine()->Float64Mod(),
1249 }; 1249 };
1250 1250
1251 for (size_t i = 0; i < arraysize(ops); i++) { 1251 for (size_t i = 0; i < arraysize(ops); i++) {
1252 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64, 1252 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64,
1253 IrOpcode::kChangeFloat64ToTagged); 1253 IrOpcode::kChangeFloat64ToTagged);
1254 } 1254 }
1255 } 1255 }
1256 1256
1257 1257
1258 TEST(InsertChangesAroundFloat64Cmp) { 1258 TEST(InsertChangesAroundFloat64Cmp) {
1259 TestingGraph t(Type::Number(), Type::Number()); 1259 TestingGraph t(Type::Number(), Type::Number());
1260 1260
1261 const Operator* ops[] = {t.machine()->Float64Equal(), 1261 const Operator* ops[] = {t.machine()->Float64Equal(),
1262 t.machine()->Float64LessThan(), 1262 t.machine()->Float64LessThan(),
1263 t.machine()->Float64LessThanOrEqual()}; 1263 t.machine()->Float64LessThanOrEqual()};
1264 1264
1265 for (size_t i = 0; i < arraysize(ops); i++) { 1265 for (size_t i = 0; i < arraysize(ops); i++) {
1266 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64, 1266 CheckChangesAroundBinop(&t, ops[i], IrOpcode::kChangeTaggedToFloat64,
1267 IrOpcode::kChangeBitToTagged); 1267 IrOpcode::kChangeBitToBool);
1268 } 1268 }
1269 } 1269 }
1270 1270
1271 1271
1272 namespace { 1272 namespace {
1273 1273
1274 void CheckFieldAccessArithmetic(FieldAccess access, Node* load_or_store) { 1274 void CheckFieldAccessArithmetic(FieldAccess access, Node* load_or_store) {
1275 IntPtrMatcher mindex(load_or_store->InputAt(1)); 1275 IntPtrMatcher mindex(load_or_store->InputAt(1));
1276 CHECK(mindex.Is(access.offset - access.tag())); 1276 CHECK(mindex.Is(access.offset - access.tag()));
1277 } 1277 }
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1939 t.Return(use); 1939 t.Return(use);
1940 t.Lower(); 1940 t.Lower();
1941 1941
1942 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op())); 1942 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op()));
1943 } 1943 }
1944 } 1944 }
1945 1945
1946 } // namespace compiler 1946 } // namespace compiler
1947 } // namespace internal 1947 } // namespace internal
1948 } // namespace v8 1948 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-representation-change.cc ('k') | test/unittests/compiler/change-lowering-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698