OLD | NEW |
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/compiler/access-builder.h" | 7 #include "src/compiler/access-builder.h" |
8 #include "src/compiler/change-lowering.h" | 8 #include "src/compiler/change-lowering.h" |
9 #include "src/compiler/control-builders.h" | 9 #include "src/compiler/control-builders.h" |
10 #include "src/compiler/graph-reducer.h" | 10 #include "src/compiler/graph-reducer.h" |
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 return graph()->NewNode(common()->Int64Constant(v)); | 780 return graph()->NewNode(common()->Int64Constant(v)); |
781 } | 781 } |
782 | 782 |
783 SimplifiedOperatorBuilder* simplified() { return &main_simplified_; } | 783 SimplifiedOperatorBuilder* simplified() { return &main_simplified_; } |
784 MachineOperatorBuilder* machine() { return &main_machine_; } | 784 MachineOperatorBuilder* machine() { return &main_machine_; } |
785 CommonOperatorBuilder* common() { return &main_common_; } | 785 CommonOperatorBuilder* common() { return &main_common_; } |
786 Graph* graph() { return main_graph_; } | 786 Graph* graph() { return main_graph_; } |
787 }; | 787 }; |
788 | 788 |
789 | 789 |
790 TEST(LowerAnyToBoolean_bit_bit) { | |
791 // AnyToBoolean(x: kRepBit) used as kRepBit | |
792 HandleAndZoneScope scope; | |
793 Factory* f = scope.main_zone()->isolate()->factory(); | |
794 Handle<Object> zero = f->NewNumber(0); | |
795 Handle<Object> one = f->NewNumber(1); | |
796 Type* singleton_zero = Type::Constant(zero, scope.main_zone()); | |
797 Type* singleton_one = Type::Constant(one, scope.main_zone()); | |
798 Type* zero_one_range = Type::Range(zero, one, scope.main_zone()); | |
799 static Type* kTypes[] = { | |
800 singleton_zero, singleton_one, zero_one_range, Type::Boolean(), | |
801 Type::Union(Type::Boolean(), singleton_zero, scope.main_zone()), | |
802 Type::Union(Type::Boolean(), singleton_one, scope.main_zone()), | |
803 Type::Union(Type::Boolean(), zero_one_range, scope.main_zone())}; | |
804 for (Type* type : kTypes) { | |
805 TestingGraph t(type); | |
806 Node* x = t.ExampleWithTypeAndRep(type, kRepBit); | |
807 Node* cnv = t.graph()->NewNode(t.simplified()->AnyToBoolean(), x); | |
808 Node* use = t.Branch(cnv); | |
809 t.Lower(); | |
810 CHECK_EQ(x, use->InputAt(0)); | |
811 } | |
812 } | |
813 | |
814 | |
815 #if V8_TURBOFAN_TARGET | 790 #if V8_TURBOFAN_TARGET |
816 | 791 |
817 TEST(LowerAnyToBoolean_tagged_tagged) { | 792 TEST(LowerAnyToBoolean_tagged_tagged) { |
818 // AnyToBoolean(x: kRepTagged) used as kRepTagged | 793 // AnyToBoolean(x: kRepTagged) used as kRepTagged |
819 TestingGraph t(Type::Any()); | 794 TestingGraph t(Type::Any()); |
820 Node* x = t.p0; | 795 Node* x = t.p0; |
821 Node* cnv = t.graph()->NewNode(t.simplified()->AnyToBoolean(), x); | 796 Node* cnv = t.graph()->NewNode(t.simplified()->AnyToBoolean(), x); |
822 Node* use = t.Use(cnv, kRepTagged); | 797 Node* use = t.Use(cnv, kRepTagged); |
823 t.Return(use); | 798 t.Return(use); |
824 t.Lower(); | 799 t.Lower(); |
(...skipping 1243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2068 Bounds phi_bounds = Bounds::Either(Bounds(d.arg1), Bounds(d.arg2), z); | 2043 Bounds phi_bounds = Bounds::Either(Bounds(d.arg1), Bounds(d.arg2), z); |
2069 NodeProperties::SetBounds(phi, phi_bounds); | 2044 NodeProperties::SetBounds(phi, phi_bounds); |
2070 | 2045 |
2071 Node* use = t.Use(phi, d.use); | 2046 Node* use = t.Use(phi, d.use); |
2072 t.Return(use); | 2047 t.Return(use); |
2073 t.Lower(); | 2048 t.Lower(); |
2074 | 2049 |
2075 CHECK_EQ(d.expected, OpParameter<MachineType>(phi)); | 2050 CHECK_EQ(d.expected, OpParameter<MachineType>(phi)); |
2076 } | 2051 } |
2077 } | 2052 } |
OLD | NEW |