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

Side by Side Diff: src/compiler/typer.cc

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
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 #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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698