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

Side by Side Diff: src/compiler/opcodes.h

Issue 2202883005: [turbofan] Unify number operation typing rules. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove useless cementation. DCHECKs instead of defensive programming are way more useful. Created 4 years, 4 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/operation-typer.h » ('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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_OPCODES_H_ 5 #ifndef V8_COMPILER_OPCODES_H_
6 #define V8_COMPILER_OPCODES_H_ 6 #define V8_COMPILER_OPCODES_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 9
10 // Opcodes for control operators. 10 // Opcodes for control operators.
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 V(CheckedUint32ToInt32) \ 193 V(CheckedUint32ToInt32) \
194 V(CheckedFloat64ToInt32) \ 194 V(CheckedFloat64ToInt32) \
195 V(CheckedTaggedToInt32) \ 195 V(CheckedTaggedToInt32) \
196 V(CheckedTruncateTaggedToWord32) \ 196 V(CheckedTruncateTaggedToWord32) \
197 V(CheckedTaggedToFloat64) 197 V(CheckedTaggedToFloat64)
198 198
199 #define SIMPLIFIED_COMPARE_BINOP_LIST(V) \ 199 #define SIMPLIFIED_COMPARE_BINOP_LIST(V) \
200 V(NumberEqual) \ 200 V(NumberEqual) \
201 V(NumberLessThan) \ 201 V(NumberLessThan) \
202 V(NumberLessThanOrEqual) \ 202 V(NumberLessThanOrEqual) \
203 V(SpeculativeNumberEqual) \
204 V(SpeculativeNumberLessThan) \
205 V(SpeculativeNumberLessThanOrEqual) \
203 V(ReferenceEqual) \ 206 V(ReferenceEqual) \
204 V(StringEqual) \ 207 V(StringEqual) \
205 V(StringLessThan) \ 208 V(StringLessThan) \
206 V(StringLessThanOrEqual) 209 V(StringLessThanOrEqual)
207 210
208 #define SIMPLIFIED_OTHER_OP_LIST(V) \ 211 #define SIMPLIFIED_NUMBER_BINOP_LIST(V) \
209 V(PlainPrimitiveToNumber) \
210 V(PlainPrimitiveToWord32) \
211 V(PlainPrimitiveToFloat64) \
212 V(BooleanNot) \
213 V(SpeculativeNumberAdd) \
214 V(SpeculativeNumberSubtract) \
215 V(SpeculativeNumberMultiply) \
216 V(SpeculativeNumberDivide) \
217 V(SpeculativeNumberModulus) \
218 V(SpeculativeNumberEqual) \
219 V(SpeculativeNumberLessThan) \
220 V(SpeculativeNumberLessThanOrEqual) \
221 V(NumberAdd) \ 212 V(NumberAdd) \
222 V(NumberSubtract) \ 213 V(NumberSubtract) \
223 V(NumberMultiply) \ 214 V(NumberMultiply) \
224 V(NumberDivide) \ 215 V(NumberDivide) \
225 V(NumberModulus) \ 216 V(NumberModulus) \
226 V(NumberBitwiseOr) \ 217 V(NumberBitwiseOr) \
227 V(NumberBitwiseXor) \ 218 V(NumberBitwiseXor) \
228 V(NumberBitwiseAnd) \ 219 V(NumberBitwiseAnd) \
229 V(NumberShiftLeft) \ 220 V(NumberShiftLeft) \
230 V(NumberShiftRight) \ 221 V(NumberShiftRight) \
231 V(NumberShiftRightLogical) \ 222 V(NumberShiftRightLogical) \
232 V(SpeculativeNumberBitwiseAnd) \ 223 V(NumberAtan2) \
233 V(SpeculativeNumberBitwiseOr) \
234 V(SpeculativeNumberBitwiseXor) \
235 V(SpeculativeNumberShiftLeft) \
236 V(SpeculativeNumberShiftRight) \
237 V(SpeculativeNumberShiftRightLogical) \
238 V(NumberImul) \ 224 V(NumberImul) \
239 V(NumberAbs) \
240 V(NumberClz32) \
241 V(NumberCeil) \
242 V(NumberCos) \
243 V(NumberCosh) \
244 V(NumberFloor) \
245 V(NumberFround) \
246 V(NumberAcos) \
247 V(NumberAcosh) \
248 V(NumberAsin) \
249 V(NumberAsinh) \
250 V(NumberAtan) \
251 V(NumberAtanh) \
252 V(NumberAtan2) \
253 V(NumberExp) \
254 V(NumberExpm1) \
255 V(NumberLog) \
256 V(NumberLog1p) \
257 V(NumberLog2) \
258 V(NumberLog10) \
259 V(NumberMax) \ 225 V(NumberMax) \
260 V(NumberMin) \ 226 V(NumberMin) \
261 V(NumberCbrt) \ 227 V(NumberPow)
262 V(NumberPow) \ 228
263 V(NumberRound) \ 229 #define SIMPLIFIED_SPECULATIVE_NUMBER_BINOP_LIST(V) \
264 V(NumberSign) \ 230 V(SpeculativeNumberAdd) \
265 V(NumberSin) \ 231 V(SpeculativeNumberSubtract) \
266 V(NumberSinh) \ 232 V(SpeculativeNumberMultiply) \
267 V(NumberSqrt) \ 233 V(SpeculativeNumberDivide) \
268 V(NumberTan) \ 234 V(SpeculativeNumberModulus) \
269 V(NumberTanh) \ 235 V(SpeculativeNumberBitwiseAnd) \
270 V(NumberTrunc) \ 236 V(SpeculativeNumberBitwiseOr) \
271 V(NumberToInt32) \ 237 V(SpeculativeNumberBitwiseXor) \
272 V(NumberToUint32) \ 238 V(SpeculativeNumberShiftLeft) \
273 V(NumberSilenceNaN) \ 239 V(SpeculativeNumberShiftRight) \
274 V(StringCharCodeAt) \ 240 V(SpeculativeNumberShiftRightLogical)
275 V(StringFromCharCode) \ 241
276 V(CheckBounds) \ 242 #define SIMPLIFIED_NUMBER_UNOP_LIST(V) \
277 V(CheckIf) \ 243 V(NumberAbs) \
278 V(CheckMaps) \ 244 V(NumberAcos) \
279 V(CheckNumber) \ 245 V(NumberAcosh) \
280 V(CheckString) \ 246 V(NumberAsin) \
281 V(CheckTaggedPointer) \ 247 V(NumberAsinh) \
282 V(CheckTaggedSigned) \ 248 V(NumberAtan) \
283 V(CheckFloat64Hole) \ 249 V(NumberAtanh) \
284 V(CheckTaggedHole) \ 250 V(NumberCbrt) \
285 V(Allocate) \ 251 V(NumberCeil) \
286 V(LoadField) \ 252 V(NumberClz32) \
287 V(LoadBuffer) \ 253 V(NumberCos) \
288 V(LoadElement) \ 254 V(NumberCosh) \
289 V(LoadTypedElement) \ 255 V(NumberExp) \
290 V(StoreField) \ 256 V(NumberExpm1) \
291 V(StoreBuffer) \ 257 V(NumberFloor) \
292 V(StoreElement) \ 258 V(NumberFround) \
293 V(StoreTypedElement) \ 259 V(NumberLog) \
294 V(ObjectIsCallable) \ 260 V(NumberLog1p) \
295 V(ObjectIsNumber) \ 261 V(NumberLog2) \
296 V(ObjectIsReceiver) \ 262 V(NumberLog10) \
297 V(ObjectIsSmi) \ 263 V(NumberRound) \
298 V(ObjectIsString) \ 264 V(NumberSign) \
299 V(ObjectIsUndetectable) \ 265 V(NumberSin) \
266 V(NumberSinh) \
267 V(NumberSqrt) \
268 V(NumberTan) \
269 V(NumberTanh) \
270 V(NumberTrunc) \
271 V(NumberToInt32) \
272 V(NumberToUint32) \
273 V(NumberSilenceNaN)
274
275 #define SIMPLIFIED_OTHER_OP_LIST(V) \
276 V(PlainPrimitiveToNumber) \
277 V(PlainPrimitiveToWord32) \
278 V(PlainPrimitiveToFloat64) \
279 V(BooleanNot) \
280 V(StringCharCodeAt) \
281 V(StringFromCharCode) \
282 V(CheckBounds) \
283 V(CheckIf) \
284 V(CheckMaps) \
285 V(CheckNumber) \
286 V(CheckString) \
287 V(CheckTaggedPointer) \
288 V(CheckTaggedSigned) \
289 V(CheckFloat64Hole) \
290 V(CheckTaggedHole) \
291 V(Allocate) \
292 V(LoadField) \
293 V(LoadBuffer) \
294 V(LoadElement) \
295 V(LoadTypedElement) \
296 V(StoreField) \
297 V(StoreBuffer) \
298 V(StoreElement) \
299 V(StoreTypedElement) \
300 V(ObjectIsCallable) \
301 V(ObjectIsNumber) \
302 V(ObjectIsReceiver) \
303 V(ObjectIsSmi) \
304 V(ObjectIsString) \
305 V(ObjectIsUndetectable) \
300 V(TransitionElementsKind) 306 V(TransitionElementsKind)
301 307
302 #define SIMPLIFIED_OP_LIST(V) \ 308 #define SIMPLIFIED_OP_LIST(V) \
303 SIMPLIFIED_CHANGE_OP_LIST(V) \ 309 SIMPLIFIED_CHANGE_OP_LIST(V) \
304 SIMPLIFIED_CHECKED_OP_LIST(V) \ 310 SIMPLIFIED_CHECKED_OP_LIST(V) \
305 SIMPLIFIED_COMPARE_BINOP_LIST(V) \ 311 SIMPLIFIED_COMPARE_BINOP_LIST(V) \
312 SIMPLIFIED_NUMBER_BINOP_LIST(V) \
313 SIMPLIFIED_SPECULATIVE_NUMBER_BINOP_LIST(V) \
314 SIMPLIFIED_NUMBER_UNOP_LIST(V) \
306 SIMPLIFIED_OTHER_OP_LIST(V) 315 SIMPLIFIED_OTHER_OP_LIST(V)
307 316
308 // Opcodes for Machine-level operators. 317 // Opcodes for Machine-level operators.
309 #define MACHINE_COMPARE_BINOP_LIST(V) \ 318 #define MACHINE_COMPARE_BINOP_LIST(V) \
310 V(Word32Equal) \ 319 V(Word32Equal) \
311 V(Word64Equal) \ 320 V(Word64Equal) \
312 V(Int32LessThan) \ 321 V(Int32LessThan) \
313 V(Int32LessThanOrEqual) \ 322 V(Int32LessThanOrEqual) \
314 V(Uint32LessThan) \ 323 V(Uint32LessThan) \
315 V(Uint32LessThanOrEqual) \ 324 V(Uint32LessThanOrEqual) \
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 } 755 }
747 }; 756 };
748 757
749 std::ostream& operator<<(std::ostream&, IrOpcode::Value); 758 std::ostream& operator<<(std::ostream&, IrOpcode::Value);
750 759
751 } // namespace compiler 760 } // namespace compiler
752 } // namespace internal 761 } // namespace internal
753 } // namespace v8 762 } // namespace v8
754 763
755 #endif // V8_COMPILER_OPCODES_H_ 764 #endif // V8_COMPILER_OPCODES_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/operation-typer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698