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

Side by Side Diff: src/compiler/representation-change.h

Issue 2407153007: [turbofan] Remove Float32 truncation. (Closed)
Patch Set: Created 4 years, 2 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 | « no previous file | src/compiler/representation-change.cc » ('j') | 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 #ifndef V8_COMPILER_REPRESENTATION_CHANGE_H_ 5 #ifndef V8_COMPILER_REPRESENTATION_CHANGE_H_
6 #define V8_COMPILER_REPRESENTATION_CHANGE_H_ 6 #define V8_COMPILER_REPRESENTATION_CHANGE_H_
7 7
8 #include "src/compiler/js-graph.h" 8 #include "src/compiler/js-graph.h"
9 #include "src/compiler/simplified-operator.h" 9 #include "src/compiler/simplified-operator.h"
10 10
11 namespace v8 { 11 namespace v8 {
12 namespace internal { 12 namespace internal {
13 namespace compiler { 13 namespace compiler {
14 14
15 class Truncation final { 15 class Truncation final {
16 public: 16 public:
17 // Constructors. 17 // Constructors.
18 static Truncation None() { return Truncation(TruncationKind::kNone); } 18 static Truncation None() { return Truncation(TruncationKind::kNone); }
19 static Truncation Bool() { return Truncation(TruncationKind::kBool); } 19 static Truncation Bool() { return Truncation(TruncationKind::kBool); }
20 static Truncation Word32() { return Truncation(TruncationKind::kWord32); } 20 static Truncation Word32() { return Truncation(TruncationKind::kWord32); }
21 static Truncation Word64() { return Truncation(TruncationKind::kWord64); } 21 static Truncation Word64() { return Truncation(TruncationKind::kWord64); }
22 static Truncation Float32() { return Truncation(TruncationKind::kFloat32); }
23 static Truncation Float64() { return Truncation(TruncationKind::kFloat64); } 22 static Truncation Float64() { return Truncation(TruncationKind::kFloat64); }
24 static Truncation Any() { return Truncation(TruncationKind::kAny); } 23 static Truncation Any() { return Truncation(TruncationKind::kAny); }
25 24
26 static Truncation Generalize(Truncation t1, Truncation t2) { 25 static Truncation Generalize(Truncation t1, Truncation t2) {
27 return Truncation(Generalize(t1.kind(), t2.kind())); 26 return Truncation(Generalize(t1.kind(), t2.kind()));
28 } 27 }
29 28
30 // Queries. 29 // Queries.
31 bool IsUnused() const { return kind_ == TruncationKind::kNone; } 30 bool IsUnused() const { return kind_ == TruncationKind::kNone; }
32 bool IsUsedAsBool() const { 31 bool IsUsedAsBool() const {
(...skipping 23 matching lines...) Expand all
56 bool IsLessGeneralThan(Truncation other) { 55 bool IsLessGeneralThan(Truncation other) {
57 return LessGeneral(kind(), other.kind()); 56 return LessGeneral(kind(), other.kind());
58 } 57 }
59 58
60 private: 59 private:
61 enum class TruncationKind : uint8_t { 60 enum class TruncationKind : uint8_t {
62 kNone, 61 kNone,
63 kBool, 62 kBool,
64 kWord32, 63 kWord32,
65 kWord64, 64 kWord64,
66 kFloat32,
67 kFloat64, 65 kFloat64,
68 kAny 66 kAny
69 }; 67 };
70 68
71 explicit Truncation(TruncationKind kind) : kind_(kind) {} 69 explicit Truncation(TruncationKind kind) : kind_(kind) {}
72 TruncationKind kind() const { return kind_; } 70 TruncationKind kind() const { return kind_; }
73 71
74 TruncationKind kind_; 72 TruncationKind kind_;
75 73
76 static TruncationKind Generalize(TruncationKind rep1, TruncationKind rep2); 74 static TruncationKind Generalize(TruncationKind rep1, TruncationKind rep2);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 minus_zero_check_(minus_zero_check) {} 125 minus_zero_check_(minus_zero_check) {}
128 static UseInfo TruncatingWord32() { 126 static UseInfo TruncatingWord32() {
129 return UseInfo(MachineRepresentation::kWord32, Truncation::Word32()); 127 return UseInfo(MachineRepresentation::kWord32, Truncation::Word32());
130 } 128 }
131 static UseInfo TruncatingWord64() { 129 static UseInfo TruncatingWord64() {
132 return UseInfo(MachineRepresentation::kWord64, Truncation::Word64()); 130 return UseInfo(MachineRepresentation::kWord64, Truncation::Word64());
133 } 131 }
134 static UseInfo Bool() { 132 static UseInfo Bool() {
135 return UseInfo(MachineRepresentation::kBit, Truncation::Bool()); 133 return UseInfo(MachineRepresentation::kBit, Truncation::Bool());
136 } 134 }
137 static UseInfo TruncatingFloat32() { 135 static UseInfo Float32() {
138 return UseInfo(MachineRepresentation::kFloat32, Truncation::Float32()); 136 return UseInfo(MachineRepresentation::kFloat32, Truncation::Any());
Jarin 2016/10/12 18:04:01 It might be better to say kFloat64; otherwise floa
mvstanton 2016/10/13 13:25:48 Per our offline discussion, I'll go ahead and land
139 } 137 }
140 static UseInfo TruncatingFloat64() { 138 static UseInfo TruncatingFloat64() {
141 return UseInfo(MachineRepresentation::kFloat64, Truncation::Float64()); 139 return UseInfo(MachineRepresentation::kFloat64, Truncation::Float64());
142 } 140 }
143 static UseInfo PointerInt() { 141 static UseInfo PointerInt() {
144 return kPointerSize == 4 ? TruncatingWord32() : TruncatingWord64(); 142 return kPointerSize == 4 ? TruncatingWord32() : TruncatingWord64();
145 } 143 }
146 static UseInfo AnyTagged() { 144 static UseInfo AnyTagged() {
147 return UseInfo(MachineRepresentation::kTagged, Truncation::Any()); 145 return UseInfo(MachineRepresentation::kTagged, Truncation::Any());
148 } 146 }
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 Factory* factory() const { return isolate()->factory(); } 294 Factory* factory() const { return isolate()->factory(); }
297 SimplifiedOperatorBuilder* simplified() { return jsgraph()->simplified(); } 295 SimplifiedOperatorBuilder* simplified() { return jsgraph()->simplified(); }
298 MachineOperatorBuilder* machine() { return jsgraph()->machine(); } 296 MachineOperatorBuilder* machine() { return jsgraph()->machine(); }
299 }; 297 };
300 298
301 } // namespace compiler 299 } // namespace compiler
302 } // namespace internal 300 } // namespace internal
303 } // namespace v8 301 } // namespace v8
304 302
305 #endif // V8_COMPILER_REPRESENTATION_CHANGE_H_ 303 #endif // V8_COMPILER_REPRESENTATION_CHANGE_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/representation-change.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698