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

Side by Side Diff: src/compiler/machine-operator.h

Issue 1848433003: Turbofan: Add MachineOperators for SIMD. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Compiles Created 4 years, 8 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/machine-operator.cc » ('j') | src/compiler/typer.cc » ('J')
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_MACHINE_OPERATOR_H_ 5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_
6 #define V8_COMPILER_MACHINE_OPERATOR_H_ 6 #define V8_COMPILER_MACHINE_OPERATOR_H_
7 7
8 #include "src/base/flags.h" 8 #include "src/base/flags.h"
9 #include "src/machine-type.h" 9 #include "src/machine-type.h"
10 10
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 const OptionalOperator Float64RoundTiesAway(); 308 const OptionalOperator Float64RoundTiesAway();
309 const OptionalOperator Float32RoundTiesEven(); 309 const OptionalOperator Float32RoundTiesEven();
310 const OptionalOperator Float64RoundTiesEven(); 310 const OptionalOperator Float64RoundTiesEven();
311 311
312 // Floating point bit representation. 312 // Floating point bit representation.
313 const Operator* Float64ExtractLowWord32(); 313 const Operator* Float64ExtractLowWord32();
314 const Operator* Float64ExtractHighWord32(); 314 const Operator* Float64ExtractHighWord32();
315 const Operator* Float64InsertLowWord32(); 315 const Operator* Float64InsertLowWord32();
316 const Operator* Float64InsertHighWord32(); 316 const Operator* Float64InsertHighWord32();
317 317
318 // SIMD operators.
Mircea Trofin 2016/03/31 21:36:04 To fit with the V8 current practice, consider repl
bbudge 2016/04/01 00:57:53 Done.
titzer 2016/04/01 09:30:10 Actually, Operator builders is one place where we
bbudge 2016/04/01 18:12:02 Done.
319
320 const Operator* CreateFloat32x4();
321 // skip Float32x4Check
Mircea Trofin 2016/03/31 21:36:04 here and elsewhere, please add a TODO note in fron
bbudge 2016/04/01 00:57:52 These have been removed and listed in the issue de
322 const Operator* Float32x4ExtractLane();
323 const Operator* Float32x4ReplaceLane();
324 const Operator* Float32x4Abs();
325 const Operator* Float32x4Neg();
326 const Operator* Float32x4Sqrt();
327 const Operator* Float32x4RecipApprox();
328 const Operator* Float32x4RecipSqrtApprox();
329 const Operator* Float32x4Add();
330 const Operator* Float32x4Sub();
331 const Operator* Float32x4Mul();
332 const Operator* Float32x4Div();
333 const Operator* Float32x4Min();
334 const Operator* Float32x4Max();
335 const Operator* Float32x4MinNum();
336 const Operator* Float32x4MaxNum();
337 const Operator* Float32x4Equal();
338 const Operator* Float32x4NotEqual();
339 const Operator* Float32x4LessThan();
340 const Operator* Float32x4LessThanOrEqual();
341 const Operator* Float32x4GreaterThan();
342 const Operator* Float32x4GreaterThanOrEqual();
343 const Operator* Float32x4Select();
344 const Operator* Float32x4Swizzle();
345 const Operator* Float32x4Shuffle();
346 const Operator* Float32x4FromInt32x4();
347 const Operator* Float32x4FromUint32x4();
348 // skip Float32x4FromInt32x4Bits
349 // skip Float32x4FromUint32x4Bits
350 // skip Float32x4FromInt16x8Bits
351 // skip Float32x4FromUint16x8Bits
352 // skip Float32x4FromInt8x16Bits
353 // skip Float32x4FromUint8x16Bits
354 // skip Float32x4Load
bradn 2016/03/31 21:20:48 I think we might want load/store as ops, until we
bbudge 2016/04/01 00:57:52 Acknowledged.
355 const Operator* Float32x4Load1();
356 const Operator* Float32x4Load2();
357 const Operator* Float32x4Load3();
358 // skip Float32x4Store
359 const Operator* Float32x4Store1();
360 const Operator* Float32x4Store2();
361 const Operator* Float32x4Store3();
362
363 const Operator* CreateInt32x4();
364 // skip Int32x4Check
365 const Operator* Int32x4ExtractLane();
366 const Operator* Int32x4ReplaceLane();
367 const Operator* Int32x4Neg();
368 const Operator* Int32x4Add();
369 const Operator* Int32x4Sub();
370 const Operator* Int32x4Mul();
371 const Operator* Int32x4Min();
372 const Operator* Int32x4Max();
373 const Operator* Int32x4And();
374 const Operator* Int32x4Or();
375 const Operator* Int32x4Xor();
376 const Operator* Int32x4Not();
377 const Operator* Int32x4ShiftLeftByScalar();
378 const Operator* Int32x4ShiftRightByScalar();
379 const Operator* Int32x4Equal();
380 const Operator* Int32x4NotEqual();
381 const Operator* Int32x4LessThan();
382 const Operator* Int32x4LessThanOrEqual();
383 const Operator* Int32x4GreaterThan();
384 const Operator* Int32x4GreaterThanOrEqual();
385 const Operator* Int32x4Select();
386 const Operator* Int32x4Swizzle();
387 const Operator* Int32x4Shuffle();
388 const Operator* Int32x4FromFloat32x4();
389 // skip Int32x4FromUint32x4
390 // skip Int32x4FromFloat32x4Bits
391 // skip Int32x4FromUint32x4Bits
392 // skip Int32x4FromInt16x8Bits
393 // skip Int32x4FromUint16x8Bits
394 // skip Int32x4FromInt8x16Bits
395 // skip Int32x4FromUint8x16Bits
396 // skip Int32x4Load
397 const Operator* Int32x4Load1();
398 const Operator* Int32x4Load2();
399 const Operator* Int32x4Load3();
400 // skip Int32x4Store
401 const Operator* Int32x4Store1();
402 const Operator* Int32x4Store2();
403 const Operator* Int32x4Store3();
404
405 // skip CreateUint32x4
406 // skip Uint32x4Check
407 // skip Uint32x4ExtractLane
408 // skip Uint32x4ReplaceLane
409 // skip Uint32x4Add
410 // skip Uint32x4Sub
411 // skip Uint32x4Mul
412 const Operator* Uint32x4Min();
413 const Operator* Uint32x4Max();
414 // skip Uint32x4And
415 // skip Uint32x4Or
416 // skip Uint32x4Xor
417 // skip Uint32x4Not
418 const Operator* Uint32x4ShiftLeftByScalar();
419 const Operator* Uint32x4ShiftRightByScalar();
420 // skip Uint32x4Equal
421 // skip Uint32x4NotEqual
422 const Operator* Uint32x4LessThan();
423 const Operator* Uint32x4LessThanOrEqual();
424 const Operator* Uint32x4GreaterThan();
425 const Operator* Uint32x4GreaterThanOrEqual();
426 // skip Uint32x4Select
427 // skip Uint32x4Swizzle
428 // skip Uint32x4Shuffle
429 const Operator* Uint32x4FromFloat32x4();
430 // skip Uint32x4FromInt32x4
431 // skip Uint32x4FromFloat32x4Bits
432 // skip Uint32x4FromInt32x4Bits
433 // skip Uint32x4FromInt16x8Bits
434 // skip Uint32x4FromUint16x8Bits
435 // skip Uint32x4FromInt8x16Bits
436 // skip Uint32x4FromUint8x16Bits
437 // skip Uint32x4Load
438 // skip Uint32x4Load1
439 // skip Uint32x4Load2
440 // skip Uint32x4Load3
441 // skip Uint32x4Store
442 // skip Uint32x4Store1
443 // skip Uint32x4Store2
444 // skip Uint32x4Store3
445
446 const Operator* CreateBool32x4();
447 // skip Bool32x4Check
448 const Operator* Bool32x4ExtractLane();
449 const Operator* Bool32x4ReplaceLane();
450 const Operator* Bool32x4And();
451 const Operator* Bool32x4Or();
452 const Operator* Bool32x4Xor();
453 const Operator* Bool32x4Not();
454 const Operator* Bool32x4AnyTrue();
455 const Operator* Bool32x4AllTrue();
456 const Operator* Bool32x4Swizzle();
457 const Operator* Bool32x4Shuffle();
458 const Operator* Bool32x4Equal();
459 const Operator* Bool32x4NotEqual();
460
461 const Operator* CreateInt16x8();
462 // skip Int16x8Check
463 const Operator* Int16x8ExtractLane();
464 const Operator* Int16x8ReplaceLane();
465 const Operator* Int16x8Neg();
466 const Operator* Int16x8Add();
467 const Operator* Int16x8AddSaturate();
468 const Operator* Int16x8Sub();
469 const Operator* Int16x8SubSaturate();
470 const Operator* Int16x8Mul();
471 const Operator* Int16x8Min();
472 const Operator* Int16x8Max();
473 const Operator* Int16x8And();
474 const Operator* Int16x8Or();
475 const Operator* Int16x8Xor();
476 const Operator* Int16x8Not();
477 const Operator* Int16x8ShiftLeftByScalar();
478 const Operator* Int16x8ShiftRightByScalar();
479 const Operator* Int16x8Equal();
480 const Operator* Int16x8NotEqual();
481 const Operator* Int16x8LessThan();
482 const Operator* Int16x8LessThanOrEqual();
483 const Operator* Int16x8GreaterThan();
484 const Operator* Int16x8GreaterThanOrEqual();
485 const Operator* Int16x8Select();
486 const Operator* Int16x8Swizzle();
487 const Operator* Int16x8Shuffle();
488 // skip Int16x8FromUint16x8
489 // skip Int16x8FromFloat32x4Bits
490 // skip Int16x8FromInt32x4Bits
491 // skip Int16x8FromUint32x4Bits
492 // skip Int16x8FromUint16x8Bits
493 // skip Int16x8FromInt8x16Bits
494 // skip Int16x8FromUint8x16Bits
495 // skip Int16x8Load
496 // skip Int16x8Store
497
498 // skip CreateUint16x8
499 // skip Uint16x8Check
500 // skip Uint16x8ExtractLane
501 // skip Uint16x8ReplaceLane
502 // skip Uint16x8Add
503 const Operator* Uint16x8AddSaturate();
504 // skip Uint16x8Sub
505 const Operator* Uint16x8SubSaturate();
506 // skip Uint16x8Mul
507 const Operator* Uint16x8Min();
508 const Operator* Uint16x8Max();
509 // skip Uint16x8And
510 // skip Uint16x8Or
511 // skip Uint16x8Xor
512 // skip Uint16x8Not
513 const Operator* Uint16x8ShiftLeftByScalar();
514 const Operator* Uint16x8ShiftRightByScalar();
515 // skip Uint16x8Equal
516 // skip Uint16x8NotEqual
517 const Operator* Uint16x8LessThan();
518 const Operator* Uint16x8LessThanOrEqual();
519 const Operator* Uint16x8GreaterThan();
520 const Operator* Uint16x8GreaterThanOrEqual();
521 // skip Uint16x8Select
522 // skip Uint16x8Swizzle
523 // skip Uint16x8Shuffle
524 // skip Uint16x8FromInt16x8
525 // skip Uint16x8FromFloat32x4Bits
526 // skip Uint16x8FromInt32x4Bits
527 // skip Uint16x8FromUint32x4Bits
528 // skip Uint16x8FromInt16x8Bits
529 // skip Uint16x8FromInt8x16Bits
530 // skip Uint16x8FromUint8x16Bits
531 // skip Uint16x8Load
532 // skip Uint16x8Store
533
534 const Operator* CreateBool16x8();
535 // skip Bool16x8Check
536 const Operator* Bool16x8ExtractLane();
537 const Operator* Bool16x8ReplaceLane();
538 const Operator* Bool16x8And();
539 const Operator* Bool16x8Or();
540 const Operator* Bool16x8Xor();
541 const Operator* Bool16x8Not();
542 const Operator* Bool16x8AnyTrue();
543 const Operator* Bool16x8AllTrue();
544 const Operator* Bool16x8Swizzle();
545 const Operator* Bool16x8Shuffle();
546 const Operator* Bool16x8Equal();
547 const Operator* Bool16x8NotEqual();
548
549 const Operator* CreateInt8x16();
550 // skip Int8x16Check
551 const Operator* Int8x16ExtractLane();
552 const Operator* Int8x16ReplaceLane();
553 const Operator* Int8x16Neg();
554 const Operator* Int8x16Add();
555 const Operator* Int8x16AddSaturate();
556 const Operator* Int8x16Sub();
557 const Operator* Int8x16SubSaturate();
558 const Operator* Int8x16Mul();
559 const Operator* Int8x16Min();
560 const Operator* Int8x16Max();
561 const Operator* Int8x16And();
562 const Operator* Int8x16Or();
563 const Operator* Int8x16Xor();
564 const Operator* Int8x16Not();
565 const Operator* Int8x16ShiftLeftByScalar();
566 const Operator* Int8x16ShiftRightByScalar();
567 const Operator* Int8x16Equal();
568 const Operator* Int8x16NotEqual();
569 const Operator* Int8x16LessThan();
570 const Operator* Int8x16LessThanOrEqual();
571 const Operator* Int8x16GreaterThan();
572 const Operator* Int8x16GreaterThanOrEqual();
573 const Operator* Int8x16Select();
574 const Operator* Int8x16Swizzle();
575 const Operator* Int8x16Shuffle();
576 // skip Int8x16FromUint8x16
577 // skip Int8x16FromFloat32x4Bits
578 // skip Int8x16FromInt32x4Bits
579 // skip Int8x16FromUint32x4Bits
580 // skip Int8x16FromInt16x8Bits
581 // skip Int8x16FromUint16x8Bits
582 // skip Int8x16FromUint8x16Bits
583 // skip Int8x16Load
584 // skip Int8x16Store
585
586 // skip CreateUint8x16
587 // skip Uint8x16Check
588 // skip Uint8x16ExtractLane
589 // skip Uint8x16ReplaceLane
590 // skip Uint8x16Add
591 const Operator* Uint8x16AddSaturate();
592 // skip Uint8x16Sub
593 const Operator* Uint8x16SubSaturate();
594 // skip Uint8x16Mul
595 const Operator* Uint8x16Min();
596 const Operator* Uint8x16Max();
597 // skip Uint8x16And
598 // skip Uint8x16Or
599 // skip Uint8x16Xor
600 // skip Uint8x16Not
601 const Operator* Uint8x16ShiftLeftByScalar();
602 const Operator* Uint8x16ShiftRightByScalar();
603 // skip Uint8x16Equal
604 // skip Uint8x16NotEqual
605 const Operator* Uint8x16LessThan();
606 const Operator* Uint8x16LessThanOrEqual();
607 const Operator* Uint8x16GreaterThan();
608 const Operator* Uint8x16GreaterThanOrEqual();
609 // skip Uint8x16Select
610 // skip Uint8x16Swizzle
611 // skip Uint8x16Shuffle
612 // skip Uint8x16FromInt8x16
613 // skip Uint8x16FromFloat32x4Bits
614 // skip Uint8x16FromInt32x4Bits
615 // skip Uint8x16FromUint32x4Bits
616 // skip Uint8x16FromInt16x8Bits
617 // skip Uint8x16FromUint16x8Bits
618 // skip Uint8x16FromInt8x16Bits
619 // skip Uint8x16Load
620 // skip Uint8x16Store
621
622 const Operator* CreateBool8x16();
623 // skip Bool8x16Check
624 const Operator* Bool8x16ExtractLane();
625 const Operator* Bool8x16ReplaceLane();
626 const Operator* Bool8x16And();
627 const Operator* Bool8x16Or();
628 const Operator* Bool8x16Xor();
629 const Operator* Bool8x16Not();
630 const Operator* Bool8x16AnyTrue();
631 const Operator* Bool8x16AllTrue();
632 const Operator* Bool8x16Swizzle();
633 const Operator* Bool8x16Shuffle();
634 const Operator* Bool8x16Equal();
635 const Operator* Bool8x16NotEqual();
636
318 // load [base + index] 637 // load [base + index]
319 const Operator* Load(LoadRepresentation rep); 638 const Operator* Load(LoadRepresentation rep);
320 639
321 // store [base + index], value 640 // store [base + index], value
322 const Operator* Store(StoreRepresentation rep); 641 const Operator* Store(StoreRepresentation rep);
323 642
324 const Operator* StackSlot(MachineRepresentation rep); 643 const Operator* StackSlot(MachineRepresentation rep);
325 644
326 // Access to the machine stack. 645 // Access to the machine stack.
327 const Operator* LoadStackPointer(); 646 const Operator* LoadStackPointer();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 }; 695 };
377 696
378 697
379 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags) 698 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags)
380 699
381 } // namespace compiler 700 } // namespace compiler
382 } // namespace internal 701 } // namespace internal
383 } // namespace v8 702 } // namespace v8
384 703
385 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ 704 #endif // V8_COMPILER_MACHINE_OPERATOR_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/machine-operator.cc » ('j') | src/compiler/typer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698