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

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

Issue 2139183002: [turbofan] Unify BooleanToNumber, StringToNumber and PlainPrimitiveToNumber. (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
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 881 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 t.Return(use); 892 t.Return(use);
893 t.Lower(); 893 t.Lower();
894 CHECK_EQ(IrOpcode::kChangeBitToTagged, use->InputAt(0)->opcode()); 894 CHECK_EQ(IrOpcode::kChangeBitToTagged, use->InputAt(0)->opcode());
895 Node* cmp = use->InputAt(0)->InputAt(0); 895 Node* cmp = use->InputAt(0)->InputAt(0);
896 CHECK_EQ(t.machine()->WordEqual()->opcode(), cmp->opcode()); 896 CHECK_EQ(t.machine()->WordEqual()->opcode(), cmp->opcode());
897 CHECK(b == cmp->InputAt(0) || b == cmp->InputAt(1)); 897 CHECK(b == cmp->InputAt(0) || b == cmp->InputAt(1));
898 Node* f = t.jsgraph.FalseConstant(); 898 Node* f = t.jsgraph.FalseConstant();
899 CHECK(f == cmp->InputAt(0) || f == cmp->InputAt(1)); 899 CHECK(f == cmp->InputAt(0) || f == cmp->InputAt(1));
900 } 900 }
901 901
902
903 TEST(LowerBooleanToNumber_bit_int32) {
904 // BooleanToNumber(x: kRepBit) used as MachineType::Int32()
905 TestingGraph t(Type::Boolean());
906 Node* b = t.ExampleWithOutput(MachineType::Bool());
907 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b);
908 Node* use = t.Use(cnv, MachineType::Int32());
909 t.Return(use);
910 t.Lower();
911 CHECK_EQ(b, use->InputAt(0));
912 }
913
914
915 TEST(LowerBooleanToNumber_tagged_int32) {
916 // BooleanToNumber(x: kRepTagged) used as MachineType::Int32()
917 TestingGraph t(Type::Boolean());
918 Node* b = t.p0;
919 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b);
920 Node* use = t.Use(cnv, MachineType::Int32());
921 t.Return(use);
922 t.Lower();
923 CHECK_EQ(t.machine()->WordEqual()->opcode(), cnv->opcode());
924 CHECK(b == cnv->InputAt(0) || b == cnv->InputAt(1));
925 Node* c = t.jsgraph.TrueConstant();
926 CHECK(c == cnv->InputAt(0) || c == cnv->InputAt(1));
927 }
928
929
930 TEST(LowerBooleanToNumber_bit_tagged) {
931 // BooleanToNumber(x: kRepBit) used as MachineType::AnyTagged()
932 TestingGraph t(Type::Boolean());
933 Node* b = t.ExampleWithOutput(MachineType::Bool());
934 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b);
935 Node* use = t.Use(cnv, MachineType::AnyTagged());
936 t.Return(use);
937 t.Lower();
938 CHECK_EQ(b, use->InputAt(0)->InputAt(0));
939 CHECK_EQ(IrOpcode::kChangeInt31ToTaggedSigned, use->InputAt(0)->opcode());
940 }
941
942
943 TEST(LowerBooleanToNumber_tagged_tagged) {
944 // BooleanToNumber(x: kRepTagged) used as MachineType::AnyTagged()
945 TestingGraph t(Type::Boolean());
946 Node* b = t.p0;
947 Node* cnv = t.graph()->NewNode(t.simplified()->BooleanToNumber(), b);
948 Node* use = t.Use(cnv, MachineType::AnyTagged());
949 t.Return(use);
950 t.Lower();
951 CHECK_EQ(cnv, use->InputAt(0)->InputAt(0));
952 CHECK_EQ(IrOpcode::kChangeInt31ToTaggedSigned, use->InputAt(0)->opcode());
953 CHECK_EQ(t.machine()->WordEqual()->opcode(), cnv->opcode());
954 CHECK(b == cnv->InputAt(0) || b == cnv->InputAt(1));
955 Node* c = t.jsgraph.TrueConstant();
956 CHECK(c == cnv->InputAt(0) || c == cnv->InputAt(1));
957 }
958
959 static Type* test_types[] = {Type::Signed32(), Type::Unsigned32(), 902 static Type* test_types[] = {Type::Signed32(), Type::Unsigned32(),
960 Type::Number()}; 903 Type::Number()};
961 904
962 TEST(LowerNumberCmp_to_int32) { 905 TEST(LowerNumberCmp_to_int32) {
963 TestingGraph t(Type::Signed32(), Type::Signed32()); 906 TestingGraph t(Type::Signed32(), Type::Signed32());
964 907
965 t.CheckLoweringBinop(IrOpcode::kWord32Equal, t.simplified()->NumberEqual()); 908 t.CheckLoweringBinop(IrOpcode::kWord32Equal, t.simplified()->NumberEqual());
966 t.CheckLoweringBinop(IrOpcode::kInt32LessThan, 909 t.CheckLoweringBinop(IrOpcode::kInt32LessThan,
967 t.simplified()->NumberLessThan()); 910 t.simplified()->NumberLessThan());
968 t.CheckLoweringBinop(IrOpcode::kInt32LessThanOrEqual, 911 t.CheckLoweringBinop(IrOpcode::kInt32LessThanOrEqual,
(...skipping 990 matching lines...) Expand 10 before | Expand all | Expand 10 after
1959 t.Return(use); 1902 t.Return(use);
1960 t.Lower(); 1903 t.Lower();
1961 1904
1962 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op())); 1905 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op()));
1963 } 1906 }
1964 } 1907 }
1965 1908
1966 } // namespace compiler 1909 } // namespace compiler
1967 } // namespace internal 1910 } // namespace internal
1968 } // namespace v8 1911 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-js-typed-lowering.cc ('k') | test/unittests/compiler/simplified-operator-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698