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 "src/compiler/typer.h" | 5 #include "src/compiler/typer.h" |
6 | 6 |
7 #include "src/base/flags.h" | 7 #include "src/base/flags.h" |
8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" |
9 #include "src/compilation-dependencies.h" | 9 #include "src/compilation-dependencies.h" |
10 #include "src/compiler/common-operator.h" | 10 #include "src/compiler/common-operator.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
90 | 90 |
91 #define DECLARE_CASE(x) \ | 91 #define DECLARE_CASE(x) \ |
92 case IrOpcode::k##x: \ | 92 case IrOpcode::k##x: \ |
93 return UpdateType(node, Type##x(node)); | 93 return UpdateType(node, Type##x(node)); |
94 DECLARE_CASE(Start) | 94 DECLARE_CASE(Start) |
95 DECLARE_CASE(IfException) | 95 DECLARE_CASE(IfException) |
96 // VALUE_OP_LIST without JS_SIMPLE_BINOP_LIST: | 96 // VALUE_OP_LIST without JS_SIMPLE_BINOP_LIST: |
97 COMMON_OP_LIST(DECLARE_CASE) | 97 COMMON_OP_LIST(DECLARE_CASE) |
98 SIMPLIFIED_OP_LIST(DECLARE_CASE) | 98 SIMPLIFIED_OP_LIST(DECLARE_CASE) |
99 MACHINE_OP_LIST(DECLARE_CASE) | 99 MACHINE_OP_LIST(DECLARE_CASE) |
100 MACHINE_SIMD_OP_LIST(DECLARE_CASE) | |
100 JS_SIMPLE_UNOP_LIST(DECLARE_CASE) | 101 JS_SIMPLE_UNOP_LIST(DECLARE_CASE) |
101 JS_OBJECT_OP_LIST(DECLARE_CASE) | 102 JS_OBJECT_OP_LIST(DECLARE_CASE) |
102 JS_CONTEXT_OP_LIST(DECLARE_CASE) | 103 JS_CONTEXT_OP_LIST(DECLARE_CASE) |
103 JS_OTHER_OP_LIST(DECLARE_CASE) | 104 JS_OTHER_OP_LIST(DECLARE_CASE) |
104 #undef DECLARE_CASE | 105 #undef DECLARE_CASE |
105 | 106 |
106 #define DECLARE_CASE(x) case IrOpcode::k##x: | 107 #define DECLARE_CASE(x) case IrOpcode::k##x: |
107 DECLARE_CASE(Loop) | 108 DECLARE_CASE(Loop) |
108 DECLARE_CASE(Branch) | 109 DECLARE_CASE(Branch) |
109 DECLARE_CASE(IfTrue) | 110 DECLARE_CASE(IfTrue) |
(...skipping 26 matching lines...) Expand all Loading... | |
136 JS_SIMPLE_BINOP_LIST(DECLARE_CASE) | 137 JS_SIMPLE_BINOP_LIST(DECLARE_CASE) |
137 #undef DECLARE_CASE | 138 #undef DECLARE_CASE |
138 | 139 |
139 #define DECLARE_CASE(x) case IrOpcode::k##x: return Type##x(node); | 140 #define DECLARE_CASE(x) case IrOpcode::k##x: return Type##x(node); |
140 DECLARE_CASE(Start) | 141 DECLARE_CASE(Start) |
141 DECLARE_CASE(IfException) | 142 DECLARE_CASE(IfException) |
142 // VALUE_OP_LIST without JS_SIMPLE_BINOP_LIST: | 143 // VALUE_OP_LIST without JS_SIMPLE_BINOP_LIST: |
143 COMMON_OP_LIST(DECLARE_CASE) | 144 COMMON_OP_LIST(DECLARE_CASE) |
144 SIMPLIFIED_OP_LIST(DECLARE_CASE) | 145 SIMPLIFIED_OP_LIST(DECLARE_CASE) |
145 MACHINE_OP_LIST(DECLARE_CASE) | 146 MACHINE_OP_LIST(DECLARE_CASE) |
147 MACHINE_SIMD_OP_LIST(DECLARE_CASE) | |
146 JS_SIMPLE_UNOP_LIST(DECLARE_CASE) | 148 JS_SIMPLE_UNOP_LIST(DECLARE_CASE) |
147 JS_OBJECT_OP_LIST(DECLARE_CASE) | 149 JS_OBJECT_OP_LIST(DECLARE_CASE) |
148 JS_CONTEXT_OP_LIST(DECLARE_CASE) | 150 JS_CONTEXT_OP_LIST(DECLARE_CASE) |
149 JS_OTHER_OP_LIST(DECLARE_CASE) | 151 JS_OTHER_OP_LIST(DECLARE_CASE) |
150 #undef DECLARE_CASE | 152 #undef DECLARE_CASE |
151 | 153 |
152 #define DECLARE_CASE(x) case IrOpcode::k##x: | 154 #define DECLARE_CASE(x) case IrOpcode::k##x: |
153 DECLARE_CASE(Loop) | 155 DECLARE_CASE(Loop) |
154 DECLARE_CASE(Branch) | 156 DECLARE_CASE(Branch) |
155 DECLARE_CASE(IfTrue) | 157 DECLARE_CASE(IfTrue) |
(...skipping 2290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2446 Type* Typer::Visitor::TypeInt32PairAdd(Node* node) { return Type::Internal(); } | 2448 Type* Typer::Visitor::TypeInt32PairAdd(Node* node) { return Type::Internal(); } |
2447 | 2449 |
2448 Type* Typer::Visitor::TypeInt32PairSub(Node* node) { return Type::Internal(); } | 2450 Type* Typer::Visitor::TypeInt32PairSub(Node* node) { return Type::Internal(); } |
2449 | 2451 |
2450 Type* Typer::Visitor::TypeWord32PairShl(Node* node) { return Type::Internal(); } | 2452 Type* Typer::Visitor::TypeWord32PairShl(Node* node) { return Type::Internal(); } |
2451 | 2453 |
2452 Type* Typer::Visitor::TypeWord32PairShr(Node* node) { return Type::Internal(); } | 2454 Type* Typer::Visitor::TypeWord32PairShr(Node* node) { return Type::Internal(); } |
2453 | 2455 |
2454 Type* Typer::Visitor::TypeWord32PairSar(Node* node) { return Type::Internal(); } | 2456 Type* Typer::Visitor::TypeWord32PairSar(Node* node) { return Type::Internal(); } |
2455 | 2457 |
2458 // SIMD type methods. | |
Mircea Trofin
2016/03/31 21:36:04
Consider macro-ising these.
bbudge
2016/04/01 00:57:53
Done.
| |
2459 | |
2460 Type* Typer::Visitor::TypeCreateFloat32x4(Node* node) { return Type::Simd(); } | |
2461 | |
2462 Type* Typer::Visitor::TypeFloat32x4ExtractLane(Node* node) { | |
2463 return Type::Number(); | |
2464 } | |
2465 | |
2466 Type* Typer::Visitor::TypeFloat32x4ReplaceLane(Node* node) { | |
2467 return Type::Simd(); | |
2468 } | |
2469 | |
2470 Type* Typer::Visitor::TypeFloat32x4Abs(Node* node) { return Type::Simd(); } | |
2471 | |
2472 Type* Typer::Visitor::TypeFloat32x4Neg(Node* node) { return Type::Simd(); } | |
2473 | |
2474 Type* Typer::Visitor::TypeFloat32x4Sqrt(Node* node) { return Type::Simd(); } | |
2475 | |
2476 Type* Typer::Visitor::TypeFloat32x4RecipApprox(Node* node) { | |
2477 return Type::Simd(); | |
2478 } | |
2479 | |
2480 Type* Typer::Visitor::TypeFloat32x4RecipSqrtApprox(Node* node) { | |
2481 return Type::Simd(); | |
2482 } | |
2483 | |
2484 Type* Typer::Visitor::TypeFloat32x4Add(Node* node) { return Type::Simd(); } | |
2485 | |
2486 Type* Typer::Visitor::TypeFloat32x4Sub(Node* node) { return Type::Simd(); } | |
2487 | |
2488 Type* Typer::Visitor::TypeFloat32x4Mul(Node* node) { return Type::Simd(); } | |
2489 | |
2490 Type* Typer::Visitor::TypeFloat32x4Div(Node* node) { return Type::Simd(); } | |
2491 | |
2492 Type* Typer::Visitor::TypeFloat32x4Min(Node* node) { return Type::Simd(); } | |
2493 | |
2494 Type* Typer::Visitor::TypeFloat32x4Max(Node* node) { return Type::Simd(); } | |
2495 | |
2496 Type* Typer::Visitor::TypeFloat32x4MinNum(Node* node) { return Type::Simd(); } | |
2497 | |
2498 Type* Typer::Visitor::TypeFloat32x4MaxNum(Node* node) { return Type::Simd(); } | |
2499 | |
2500 Type* Typer::Visitor::TypeFloat32x4Equal(Node* node) { return Type::Simd(); } | |
2501 | |
2502 Type* Typer::Visitor::TypeFloat32x4NotEqual(Node* node) { return Type::Simd(); } | |
2503 | |
2504 Type* Typer::Visitor::TypeFloat32x4LessThan(Node* node) { return Type::Simd(); } | |
2505 | |
2506 Type* Typer::Visitor::TypeFloat32x4LessThanOrEqual(Node* node) { | |
2507 return Type::Simd(); | |
2508 } | |
2509 | |
2510 Type* Typer::Visitor::TypeFloat32x4GreaterThan(Node* node) { | |
2511 return Type::Simd(); | |
2512 } | |
2513 | |
2514 Type* Typer::Visitor::TypeFloat32x4GreaterThanOrEqual(Node* node) { | |
2515 return Type::Simd(); | |
2516 } | |
2517 | |
2518 Type* Typer::Visitor::TypeFloat32x4Select(Node* node) { return Type::Simd(); } | |
2519 | |
2520 Type* Typer::Visitor::TypeFloat32x4Swizzle(Node* node) { return Type::Simd(); } | |
2521 | |
2522 Type* Typer::Visitor::TypeFloat32x4Shuffle(Node* node) { return Type::Simd(); } | |
2523 | |
2524 Type* Typer::Visitor::TypeFloat32x4FromInt32x4(Node* node) { | |
2525 return Type::Simd(); | |
2526 } | |
2527 | |
2528 Type* Typer::Visitor::TypeFloat32x4FromUint32x4(Node* node) { | |
2529 return Type::Simd(); | |
2530 } | |
2531 | |
2532 Type* Typer::Visitor::TypeFloat32x4Load1(Node* node) { return Type::Simd(); } | |
2533 | |
2534 Type* Typer::Visitor::TypeFloat32x4Load2(Node* node) { return Type::Simd(); } | |
2535 | |
2536 Type* Typer::Visitor::TypeFloat32x4Load3(Node* node) { return Type::Simd(); } | |
2537 | |
2538 Type* Typer::Visitor::TypeFloat32x4Store1(Node* node) { return Type::Simd(); } | |
2539 | |
2540 Type* Typer::Visitor::TypeFloat32x4Store2(Node* node) { return Type::Simd(); } | |
2541 | |
2542 Type* Typer::Visitor::TypeFloat32x4Store3(Node* node) { return Type::Simd(); } | |
2543 | |
2544 Type* Typer::Visitor::TypeCreateInt32x4(Node* node) { return Type::Simd(); } | |
2545 | |
2546 Type* Typer::Visitor::TypeInt32x4ExtractLane(Node* node) { | |
2547 return Type::Number(); | |
2548 } | |
2549 | |
2550 Type* Typer::Visitor::TypeInt32x4ReplaceLane(Node* node) { | |
2551 return Type::Simd(); | |
2552 } | |
2553 | |
2554 Type* Typer::Visitor::TypeInt32x4Neg(Node* node) { return Type::Simd(); } | |
2555 | |
2556 Type* Typer::Visitor::TypeInt32x4Add(Node* node) { return Type::Simd(); } | |
2557 | |
2558 Type* Typer::Visitor::TypeInt32x4Sub(Node* node) { return Type::Simd(); } | |
2559 | |
2560 Type* Typer::Visitor::TypeInt32x4Mul(Node* node) { return Type::Simd(); } | |
2561 | |
2562 Type* Typer::Visitor::TypeInt32x4Min(Node* node) { return Type::Simd(); } | |
2563 | |
2564 Type* Typer::Visitor::TypeInt32x4Max(Node* node) { return Type::Simd(); } | |
2565 | |
2566 Type* Typer::Visitor::TypeInt32x4And(Node* node) { return Type::Simd(); } | |
2567 | |
2568 Type* Typer::Visitor::TypeInt32x4Or(Node* node) { return Type::Simd(); } | |
2569 | |
2570 Type* Typer::Visitor::TypeInt32x4Xor(Node* node) { return Type::Simd(); } | |
2571 | |
2572 Type* Typer::Visitor::TypeInt32x4Not(Node* node) { return Type::Simd(); } | |
2573 | |
2574 Type* Typer::Visitor::TypeInt32x4ShiftLeftByScalar(Node* node) { | |
2575 return Type::Simd(); | |
2576 } | |
2577 | |
2578 Type* Typer::Visitor::TypeInt32x4ShiftRightByScalar(Node* node) { | |
2579 return Type::Simd(); | |
2580 } | |
2581 | |
2582 Type* Typer::Visitor::TypeInt32x4Equal(Node* node) { return Type::Simd(); } | |
2583 | |
2584 Type* Typer::Visitor::TypeInt32x4NotEqual(Node* node) { return Type::Simd(); } | |
2585 | |
2586 Type* Typer::Visitor::TypeInt32x4LessThan(Node* node) { return Type::Simd(); } | |
2587 | |
2588 Type* Typer::Visitor::TypeInt32x4LessThanOrEqual(Node* node) { | |
2589 return Type::Simd(); | |
2590 } | |
2591 | |
2592 Type* Typer::Visitor::TypeInt32x4GreaterThan(Node* node) { | |
2593 return Type::Simd(); | |
2594 } | |
2595 | |
2596 Type* Typer::Visitor::TypeInt32x4GreaterThanOrEqual(Node* node) { | |
2597 return Type::Simd(); | |
2598 } | |
2599 | |
2600 Type* Typer::Visitor::TypeInt32x4Select(Node* node) { return Type::Simd(); } | |
2601 | |
2602 Type* Typer::Visitor::TypeInt32x4Swizzle(Node* node) { return Type::Simd(); } | |
2603 | |
2604 Type* Typer::Visitor::TypeInt32x4Shuffle(Node* node) { return Type::Simd(); } | |
2605 | |
2606 Type* Typer::Visitor::TypeInt32x4FromFloat32x4(Node* node) { | |
2607 return Type::Simd(); | |
2608 } | |
2609 | |
2610 Type* Typer::Visitor::TypeInt32x4Load1(Node* node) { return Type::Simd(); } | |
2611 | |
2612 Type* Typer::Visitor::TypeInt32x4Load2(Node* node) { return Type::Simd(); } | |
2613 | |
2614 Type* Typer::Visitor::TypeInt32x4Load3(Node* node) { return Type::Simd(); } | |
2615 | |
2616 Type* Typer::Visitor::TypeInt32x4Store1(Node* node) { return Type::Simd(); } | |
2617 | |
2618 Type* Typer::Visitor::TypeInt32x4Store2(Node* node) { return Type::Simd(); } | |
2619 | |
2620 Type* Typer::Visitor::TypeInt32x4Store3(Node* node) { return Type::Simd(); } | |
2621 | |
2622 Type* Typer::Visitor::TypeUint32x4Min(Node* node) { return Type::Simd(); } | |
2623 | |
2624 Type* Typer::Visitor::TypeUint32x4Max(Node* node) { return Type::Simd(); } | |
2625 | |
2626 Type* Typer::Visitor::TypeUint32x4ShiftLeftByScalar(Node* node) { | |
2627 return Type::Simd(); | |
2628 } | |
2629 | |
2630 Type* Typer::Visitor::TypeUint32x4ShiftRightByScalar(Node* node) { | |
2631 return Type::Simd(); | |
2632 } | |
2633 | |
2634 Type* Typer::Visitor::TypeUint32x4LessThan(Node* node) { return Type::Simd(); } | |
2635 | |
2636 Type* Typer::Visitor::TypeUint32x4LessThanOrEqual(Node* node) { | |
2637 return Type::Simd(); | |
2638 } | |
2639 | |
2640 Type* Typer::Visitor::TypeUint32x4GreaterThan(Node* node) { | |
2641 return Type::Simd(); | |
2642 } | |
2643 | |
2644 Type* Typer::Visitor::TypeUint32x4GreaterThanOrEqual(Node* node) { | |
2645 return Type::Simd(); | |
2646 } | |
2647 | |
2648 Type* Typer::Visitor::TypeUint32x4FromFloat32x4(Node* node) { | |
2649 return Type::Simd(); | |
2650 } | |
2651 | |
2652 Type* Typer::Visitor::TypeCreateBool32x4(Node* node) { return Type::Simd(); } | |
2653 | |
2654 Type* Typer::Visitor::TypeBool32x4ExtractLane(Node* node) { | |
2655 return Type::Boolean(); | |
2656 } | |
2657 | |
2658 Type* Typer::Visitor::TypeBool32x4ReplaceLane(Node* node) { | |
2659 return Type::Simd(); | |
2660 } | |
2661 | |
2662 Type* Typer::Visitor::TypeBool32x4And(Node* node) { return Type::Simd(); } | |
2663 | |
2664 Type* Typer::Visitor::TypeBool32x4Or(Node* node) { return Type::Simd(); } | |
2665 | |
2666 Type* Typer::Visitor::TypeBool32x4Xor(Node* node) { return Type::Simd(); } | |
2667 | |
2668 Type* Typer::Visitor::TypeBool32x4Not(Node* node) { return Type::Simd(); } | |
2669 | |
2670 Type* Typer::Visitor::TypeBool32x4AnyTrue(Node* node) { | |
2671 return Type::Boolean(); | |
2672 } | |
2673 | |
2674 Type* Typer::Visitor::TypeBool32x4AllTrue(Node* node) { | |
2675 return Type::Boolean(); | |
2676 } | |
2677 | |
2678 Type* Typer::Visitor::TypeBool32x4Swizzle(Node* node) { return Type::Simd(); } | |
2679 | |
2680 Type* Typer::Visitor::TypeBool32x4Shuffle(Node* node) { return Type::Simd(); } | |
2681 | |
2682 Type* Typer::Visitor::TypeBool32x4Equal(Node* node) { return Type::Simd(); } | |
2683 | |
2684 Type* Typer::Visitor::TypeBool32x4NotEqual(Node* node) { return Type::Simd(); } | |
2685 | |
2686 Type* Typer::Visitor::TypeCreateInt16x8(Node* node) { return Type::Simd(); } | |
2687 | |
2688 Type* Typer::Visitor::TypeInt16x8ExtractLane(Node* node) { | |
2689 return Type::Number(); | |
2690 } | |
2691 | |
2692 Type* Typer::Visitor::TypeInt16x8ReplaceLane(Node* node) { | |
2693 return Type::Simd(); | |
2694 } | |
2695 | |
2696 Type* Typer::Visitor::TypeInt16x8Neg(Node* node) { return Type::Simd(); } | |
2697 | |
2698 Type* Typer::Visitor::TypeInt16x8Add(Node* node) { return Type::Simd(); } | |
2699 | |
2700 Type* Typer::Visitor::TypeInt16x8AddSaturate(Node* node) { | |
2701 return Type::Simd(); | |
2702 } | |
2703 | |
2704 Type* Typer::Visitor::TypeInt16x8Sub(Node* node) { return Type::Simd(); } | |
2705 | |
2706 Type* Typer::Visitor::TypeInt16x8SubSaturate(Node* node) { | |
2707 return Type::Simd(); | |
2708 } | |
2709 | |
2710 Type* Typer::Visitor::TypeInt16x8Mul(Node* node) { return Type::Simd(); } | |
2711 | |
2712 Type* Typer::Visitor::TypeInt16x8Min(Node* node) { return Type::Simd(); } | |
2713 | |
2714 Type* Typer::Visitor::TypeInt16x8Max(Node* node) { return Type::Simd(); } | |
2715 | |
2716 Type* Typer::Visitor::TypeInt16x8And(Node* node) { return Type::Simd(); } | |
2717 | |
2718 Type* Typer::Visitor::TypeInt16x8Or(Node* node) { return Type::Simd(); } | |
2719 | |
2720 Type* Typer::Visitor::TypeInt16x8Xor(Node* node) { return Type::Simd(); } | |
2721 | |
2722 Type* Typer::Visitor::TypeInt16x8Not(Node* node) { return Type::Simd(); } | |
2723 | |
2724 Type* Typer::Visitor::TypeInt16x8ShiftLeftByScalar(Node* node) { | |
2725 return Type::Simd(); | |
2726 } | |
2727 | |
2728 Type* Typer::Visitor::TypeInt16x8ShiftRightByScalar(Node* node) { | |
2729 return Type::Simd(); | |
2730 } | |
2731 | |
2732 Type* Typer::Visitor::TypeInt16x8Equal(Node* node) { return Type::Simd(); } | |
2733 | |
2734 Type* Typer::Visitor::TypeInt16x8NotEqual(Node* node) { return Type::Simd(); } | |
2735 | |
2736 Type* Typer::Visitor::TypeInt16x8LessThan(Node* node) { return Type::Simd(); } | |
2737 | |
2738 Type* Typer::Visitor::TypeInt16x8LessThanOrEqual(Node* node) { | |
2739 return Type::Simd(); | |
2740 } | |
2741 | |
2742 Type* Typer::Visitor::TypeInt16x8GreaterThan(Node* node) { | |
2743 return Type::Simd(); | |
2744 } | |
2745 | |
2746 Type* Typer::Visitor::TypeInt16x8GreaterThanOrEqual(Node* node) { | |
2747 return Type::Simd(); | |
2748 } | |
2749 | |
2750 Type* Typer::Visitor::TypeInt16x8Select(Node* node) { return Type::Simd(); } | |
2751 | |
2752 Type* Typer::Visitor::TypeInt16x8Swizzle(Node* node) { return Type::Simd(); } | |
2753 | |
2754 Type* Typer::Visitor::TypeInt16x8Shuffle(Node* node) { return Type::Simd(); } | |
2755 | |
2756 Type* Typer::Visitor::TypeUint16x8AddSaturate(Node* node) { | |
2757 return Type::Simd(); | |
2758 } | |
2759 | |
2760 Type* Typer::Visitor::TypeUint16x8SubSaturate(Node* node) { | |
2761 return Type::Simd(); | |
2762 } | |
2763 | |
2764 Type* Typer::Visitor::TypeUint16x8Min(Node* node) { return Type::Simd(); } | |
2765 | |
2766 Type* Typer::Visitor::TypeUint16x8Max(Node* node) { return Type::Simd(); } | |
2767 | |
2768 Type* Typer::Visitor::TypeUint16x8ShiftLeftByScalar(Node* node) { | |
2769 return Type::Simd(); | |
2770 } | |
2771 | |
2772 Type* Typer::Visitor::TypeUint16x8ShiftRightByScalar(Node* node) { | |
2773 return Type::Simd(); | |
2774 } | |
2775 | |
2776 Type* Typer::Visitor::TypeUint16x8LessThan(Node* node) { return Type::Simd(); } | |
2777 | |
2778 Type* Typer::Visitor::TypeUint16x8LessThanOrEqual(Node* node) { | |
2779 return Type::Simd(); | |
2780 } | |
2781 | |
2782 Type* Typer::Visitor::TypeUint16x8GreaterThan(Node* node) { | |
2783 return Type::Simd(); | |
2784 } | |
2785 | |
2786 Type* Typer::Visitor::TypeUint16x8GreaterThanOrEqual(Node* node) { | |
2787 return Type::Simd(); | |
2788 } | |
2789 | |
2790 Type* Typer::Visitor::TypeCreateBool16x8(Node* node) { return Type::Simd(); } | |
2791 | |
2792 Type* Typer::Visitor::TypeBool16x8ExtractLane(Node* node) { | |
2793 return Type::Boolean(); | |
2794 } | |
2795 | |
2796 Type* Typer::Visitor::TypeBool16x8ReplaceLane(Node* node) { | |
2797 return Type::Simd(); | |
2798 } | |
2799 | |
2800 Type* Typer::Visitor::TypeBool16x8And(Node* node) { return Type::Simd(); } | |
2801 | |
2802 Type* Typer::Visitor::TypeBool16x8Or(Node* node) { return Type::Simd(); } | |
2803 | |
2804 Type* Typer::Visitor::TypeBool16x8Xor(Node* node) { return Type::Simd(); } | |
2805 | |
2806 Type* Typer::Visitor::TypeBool16x8Not(Node* node) { return Type::Simd(); } | |
2807 | |
2808 Type* Typer::Visitor::TypeBool16x8AnyTrue(Node* node) { | |
2809 return Type::Boolean(); | |
2810 } | |
2811 | |
2812 Type* Typer::Visitor::TypeBool16x8AllTrue(Node* node) { | |
2813 return Type::Boolean(); | |
2814 } | |
2815 | |
2816 Type* Typer::Visitor::TypeBool16x8Swizzle(Node* node) { return Type::Simd(); } | |
bradn
2016/03/31 21:20:48
I suspect these might require a separate type, but
bbudge
2016/04/01 00:57:53
Acknowledged.
| |
2817 | |
2818 Type* Typer::Visitor::TypeBool16x8Shuffle(Node* node) { return Type::Simd(); } | |
2819 | |
2820 Type* Typer::Visitor::TypeBool16x8Equal(Node* node) { return Type::Simd(); } | |
2821 | |
2822 Type* Typer::Visitor::TypeBool16x8NotEqual(Node* node) { return Type::Simd(); } | |
2823 | |
2824 Type* Typer::Visitor::TypeCreateInt8x16(Node* node) { return Type::Simd(); } | |
2825 | |
2826 Type* Typer::Visitor::TypeInt8x16ExtractLane(Node* node) { | |
2827 return Type::Number(); | |
2828 } | |
2829 | |
2830 Type* Typer::Visitor::TypeInt8x16ReplaceLane(Node* node) { | |
2831 return Type::Simd(); | |
2832 } | |
2833 | |
2834 Type* Typer::Visitor::TypeInt8x16Neg(Node* node) { return Type::Simd(); } | |
2835 | |
2836 Type* Typer::Visitor::TypeInt8x16Add(Node* node) { return Type::Simd(); } | |
2837 | |
2838 Type* Typer::Visitor::TypeInt8x16AddSaturate(Node* node) { | |
2839 return Type::Simd(); | |
2840 } | |
2841 | |
2842 Type* Typer::Visitor::TypeInt8x16Sub(Node* node) { return Type::Simd(); } | |
2843 | |
2844 Type* Typer::Visitor::TypeInt8x16SubSaturate(Node* node) { | |
2845 return Type::Simd(); | |
2846 } | |
2847 | |
2848 Type* Typer::Visitor::TypeInt8x16Mul(Node* node) { return Type::Simd(); } | |
2849 | |
2850 Type* Typer::Visitor::TypeInt8x16Min(Node* node) { return Type::Simd(); } | |
2851 | |
2852 Type* Typer::Visitor::TypeInt8x16Max(Node* node) { return Type::Simd(); } | |
2853 | |
2854 Type* Typer::Visitor::TypeInt8x16And(Node* node) { return Type::Simd(); } | |
2855 | |
2856 Type* Typer::Visitor::TypeInt8x16Or(Node* node) { return Type::Simd(); } | |
2857 | |
2858 Type* Typer::Visitor::TypeInt8x16Xor(Node* node) { return Type::Simd(); } | |
2859 | |
2860 Type* Typer::Visitor::TypeInt8x16Not(Node* node) { return Type::Simd(); } | |
2861 | |
2862 Type* Typer::Visitor::TypeInt8x16ShiftLeftByScalar(Node* node) { | |
2863 return Type::Simd(); | |
2864 } | |
2865 | |
2866 Type* Typer::Visitor::TypeInt8x16ShiftRightByScalar(Node* node) { | |
2867 return Type::Simd(); | |
2868 } | |
2869 | |
2870 Type* Typer::Visitor::TypeInt8x16Equal(Node* node) { return Type::Simd(); } | |
2871 | |
2872 Type* Typer::Visitor::TypeInt8x16NotEqual(Node* node) { return Type::Simd(); } | |
2873 | |
2874 Type* Typer::Visitor::TypeInt8x16LessThan(Node* node) { return Type::Simd(); } | |
2875 | |
2876 Type* Typer::Visitor::TypeInt8x16LessThanOrEqual(Node* node) { | |
2877 return Type::Simd(); | |
2878 } | |
2879 | |
2880 Type* Typer::Visitor::TypeInt8x16GreaterThan(Node* node) { | |
2881 return Type::Simd(); | |
2882 } | |
2883 | |
2884 Type* Typer::Visitor::TypeInt8x16GreaterThanOrEqual(Node* node) { | |
2885 return Type::Simd(); | |
2886 } | |
2887 | |
2888 Type* Typer::Visitor::TypeInt8x16Select(Node* node) { return Type::Simd(); } | |
2889 | |
2890 Type* Typer::Visitor::TypeInt8x16Swizzle(Node* node) { return Type::Simd(); } | |
2891 | |
2892 Type* Typer::Visitor::TypeInt8x16Shuffle(Node* node) { return Type::Simd(); } | |
2893 | |
2894 Type* Typer::Visitor::TypeUint8x16AddSaturate(Node* node) { | |
2895 return Type::Simd(); | |
2896 } | |
2897 | |
2898 Type* Typer::Visitor::TypeUint8x16SubSaturate(Node* node) { | |
2899 return Type::Simd(); | |
2900 } | |
2901 | |
2902 Type* Typer::Visitor::TypeUint8x16Min(Node* node) { return Type::Simd(); } | |
2903 | |
2904 Type* Typer::Visitor::TypeUint8x16Max(Node* node) { return Type::Simd(); } | |
2905 | |
2906 Type* Typer::Visitor::TypeUint8x16ShiftLeftByScalar(Node* node) { | |
2907 return Type::Simd(); | |
2908 } | |
2909 | |
2910 Type* Typer::Visitor::TypeUint8x16ShiftRightByScalar(Node* node) { | |
2911 return Type::Simd(); | |
2912 } | |
2913 | |
2914 Type* Typer::Visitor::TypeUint8x16LessThan(Node* node) { return Type::Simd(); } | |
2915 | |
2916 Type* Typer::Visitor::TypeUint8x16LessThanOrEqual(Node* node) { | |
2917 return Type::Simd(); | |
2918 } | |
2919 | |
2920 Type* Typer::Visitor::TypeUint8x16GreaterThan(Node* node) { | |
2921 return Type::Simd(); | |
2922 } | |
2923 | |
2924 Type* Typer::Visitor::TypeUint8x16GreaterThanOrEqual(Node* node) { | |
2925 return Type::Simd(); | |
2926 } | |
2927 | |
2928 Type* Typer::Visitor::TypeCreateBool8x16(Node* node) { return Type::Simd(); } | |
2929 | |
2930 Type* Typer::Visitor::TypeBool8x16ExtractLane(Node* node) { | |
2931 return Type::Boolean(); | |
2932 } | |
2933 | |
2934 Type* Typer::Visitor::TypeBool8x16ReplaceLane(Node* node) { | |
2935 return Type::Simd(); | |
2936 } | |
2937 | |
2938 Type* Typer::Visitor::TypeBool8x16And(Node* node) { return Type::Simd(); } | |
2939 | |
2940 Type* Typer::Visitor::TypeBool8x16Or(Node* node) { return Type::Simd(); } | |
2941 | |
2942 Type* Typer::Visitor::TypeBool8x16Xor(Node* node) { return Type::Simd(); } | |
2943 | |
2944 Type* Typer::Visitor::TypeBool8x16Not(Node* node) { return Type::Simd(); } | |
2945 | |
2946 Type* Typer::Visitor::TypeBool8x16AnyTrue(Node* node) { | |
2947 return Type::Boolean(); | |
2948 } | |
2949 | |
2950 Type* Typer::Visitor::TypeBool8x16AllTrue(Node* node) { | |
2951 return Type::Boolean(); | |
2952 } | |
2953 | |
2954 Type* Typer::Visitor::TypeBool8x16Swizzle(Node* node) { return Type::Simd(); } | |
2955 | |
2956 Type* Typer::Visitor::TypeBool8x16Shuffle(Node* node) { return Type::Simd(); } | |
2957 | |
2958 Type* Typer::Visitor::TypeBool8x16Equal(Node* node) { return Type::Simd(); } | |
2959 | |
2960 Type* Typer::Visitor::TypeBool8x16NotEqual(Node* node) { return Type::Simd(); } | |
2961 | |
2456 // Heap constants. | 2962 // Heap constants. |
2457 | 2963 |
2458 | 2964 |
2459 Type* Typer::Visitor::TypeConstant(Handle<Object> value) { | 2965 Type* Typer::Visitor::TypeConstant(Handle<Object> value) { |
2460 if (value->IsJSTypedArray()) { | 2966 if (value->IsJSTypedArray()) { |
2461 switch (JSTypedArray::cast(*value)->type()) { | 2967 switch (JSTypedArray::cast(*value)->type()) { |
2462 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ | 2968 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ |
2463 case kExternal##Type##Array: \ | 2969 case kExternal##Type##Array: \ |
2464 return typer_->cache_.k##Type##Array; | 2970 return typer_->cache_.k##Type##Array; |
2465 TYPED_ARRAYS(TYPED_ARRAY_CASE) | 2971 TYPED_ARRAYS(TYPED_ARRAY_CASE) |
2466 #undef TYPED_ARRAY_CASE | 2972 #undef TYPED_ARRAY_CASE |
2467 } | 2973 } |
2468 } | 2974 } |
2469 if (Type::IsInteger(*value)) { | 2975 if (Type::IsInteger(*value)) { |
2470 return Type::Range(value->Number(), value->Number(), zone()); | 2976 return Type::Range(value->Number(), value->Number(), zone()); |
2471 } | 2977 } |
2472 return Type::Constant(value, zone()); | 2978 return Type::Constant(value, zone()); |
2473 } | 2979 } |
2474 | 2980 |
2475 } // namespace compiler | 2981 } // namespace compiler |
2476 } // namespace internal | 2982 } // namespace internal |
2477 } // namespace v8 | 2983 } // namespace v8 |
OLD | NEW |