OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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_CODE_ASSEMBLER_H_ | 5 #ifndef V8_COMPILER_CODE_ASSEMBLER_H_ |
6 #define V8_COMPILER_CODE_ASSEMBLER_H_ | 6 #define V8_COMPILER_CODE_ASSEMBLER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 V(TruncateFloat64ToFloat32) \ | 144 V(TruncateFloat64ToFloat32) \ |
145 V(TruncateFloat64ToWord32) \ | 145 V(TruncateFloat64ToWord32) \ |
146 V(TruncateInt64ToInt32) \ | 146 V(TruncateInt64ToInt32) \ |
147 V(ChangeFloat32ToFloat64) \ | 147 V(ChangeFloat32ToFloat64) \ |
148 V(ChangeFloat64ToUint32) \ | 148 V(ChangeFloat64ToUint32) \ |
149 V(ChangeInt32ToFloat64) \ | 149 V(ChangeInt32ToFloat64) \ |
150 V(ChangeInt32ToInt64) \ | 150 V(ChangeInt32ToInt64) \ |
151 V(ChangeUint32ToFloat64) \ | 151 V(ChangeUint32ToFloat64) \ |
152 V(ChangeUint32ToUint64) \ | 152 V(ChangeUint32ToUint64) \ |
153 V(RoundFloat64ToInt32) \ | 153 V(RoundFloat64ToInt32) \ |
| 154 V(RoundInt32ToFloat32) \ |
154 V(Float64SilenceNaN) \ | 155 V(Float64SilenceNaN) \ |
155 V(Float64RoundDown) \ | 156 V(Float64RoundDown) \ |
156 V(Float64RoundUp) \ | 157 V(Float64RoundUp) \ |
| 158 V(Float64RoundTiesEven) \ |
157 V(Float64RoundTruncate) \ | 159 V(Float64RoundTruncate) \ |
158 V(Word32Clz) \ | 160 V(Word32Clz) \ |
159 V(Word32BinaryNot) | 161 V(Word32BinaryNot) |
160 | 162 |
161 // A "public" interface used by components outside of compiler directory to | 163 // A "public" interface used by components outside of compiler directory to |
162 // create code objects with TurboFan's backend. This class is mostly a thin shim | 164 // create code objects with TurboFan's backend. This class is mostly a thin shim |
163 // around the RawMachineAssembler, and its primary job is to ensure that the | 165 // around the RawMachineAssembler, and its primary job is to ensure that the |
164 // innards of the RawMachineAssembler and other compiler implementation details | 166 // innards of the RawMachineAssembler and other compiler implementation details |
165 // don't leak outside of the the compiler directory.. | 167 // don't leak outside of the the compiler directory.. |
166 // | 168 // |
(...skipping 15 matching lines...) Expand all Loading... |
182 public: | 184 public: |
183 explicit CodeAssembler(CodeAssemblerState* state) : state_(state) {} | 185 explicit CodeAssembler(CodeAssemblerState* state) : state_(state) {} |
184 | 186 |
185 virtual ~CodeAssembler(); | 187 virtual ~CodeAssembler(); |
186 | 188 |
187 static Handle<Code> GenerateCode(CodeAssemblerState* state); | 189 static Handle<Code> GenerateCode(CodeAssemblerState* state); |
188 | 190 |
189 bool Is64() const; | 191 bool Is64() const; |
190 bool IsFloat64RoundUpSupported() const; | 192 bool IsFloat64RoundUpSupported() const; |
191 bool IsFloat64RoundDownSupported() const; | 193 bool IsFloat64RoundDownSupported() const; |
| 194 bool IsFloat64RoundTiesEvenSupported() const; |
192 bool IsFloat64RoundTruncateSupported() const; | 195 bool IsFloat64RoundTruncateSupported() const; |
193 | 196 |
194 class Label; | 197 class Label; |
195 class Variable { | 198 class Variable { |
196 public: | 199 public: |
197 explicit Variable(CodeAssembler* assembler, MachineRepresentation rep); | 200 explicit Variable(CodeAssembler* assembler, MachineRepresentation rep); |
198 ~Variable(); | 201 ~Variable(); |
199 void Bind(Node* value); | 202 void Bind(Node* value); |
200 Node* value() const; | 203 Node* value() const; |
201 MachineRepresentation rep() const; | 204 MachineRepresentation rep() const; |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 ZoneSet<CodeAssembler::Variable::Impl*> variables_; | 548 ZoneSet<CodeAssembler::Variable::Impl*> variables_; |
546 | 549 |
547 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); | 550 DISALLOW_COPY_AND_ASSIGN(CodeAssemblerState); |
548 }; | 551 }; |
549 | 552 |
550 } // namespace compiler | 553 } // namespace compiler |
551 } // namespace internal | 554 } // namespace internal |
552 } // namespace v8 | 555 } // namespace v8 |
553 | 556 |
554 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ | 557 #endif // V8_COMPILER_CODE_ASSEMBLER_H_ |
OLD | NEW |