Commit e3f22d9
authored
[X86][Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - add SSE/AVX VPTEST/VTESTPD/VTESTPS intrinsics to be used in constexpr (llvm#160428)
Fix llvm#158653
Add handling for:
```
ptestz128 / ptestz256 → (a & b) == 0.
ptestc128 / ptestc256 → (~a & b) == 0
ptestnzc128 / ptestnzc256 → (a & b) != 0 AND (~a & b) != 0.
vtestzps / vtestzps256 → (S(a) & S(b)) == 0.
vtestcps / vtestcps256 → (~S(a) & S(b)) == 0.
vtestnzcps / vtestnzcps256 → (S(a) & S(b)) != 0 AND (~S(a) & S(b)) != 0.
vtestzpd / vtestzpd256 → (S(a) & S(b)) == 0.
vtestcpd / vtestcpd256 → (~S(a) & S(b)) == 0.
vtestnzcpd / vtestnzcpd256 → (S(a) & S(b)) != 0 AND (~S(a) & S(b)) != 0.
```
Add corresponding test cases for:
```
int _mm_test_all_ones (__m128i a)
int _mm_test_all_zeros (__m128i mask, __m128i a)
int _mm_test_mix_ones_zeros (__m128i mask, __m128i a)
int _mm_testc_pd (__m128d a, __m128d b)
int _mm256_testc_pd (__m256d a, __m256d b)
int _mm_testc_ps (__m128 a, __m128 b)
int _mm256_testc_ps (__m256 a, __m256 b)
int _mm_testc_si128 (__m128i a, __m128i b)
int _mm256_testc_si256 (__m256i a, __m256i b)
int _mm_testnzc_pd (__m128d a, __m128d b)
int _mm256_testnzc_pd (__m256d a, __m256d b)
int _mm_testnzc_ps (__m128 a, __m128 b)
int _mm256_testnzc_ps (__m256 a, __m256 b)
int _mm_testnzc_si128 (__m128i a, __m128i b)
int _mm256_testnzc_si256 (__m256i a, __m256i b)
int _mm_testz_pd (__m128d a, __m128d b)
int _mm256_testz_pd (__m256d a, __m256d b)
int _mm_testz_ps (__m128 a, __m128 b)
int _mm256_testz_ps (__m256 a, __m256 b)
int _mm_testz_si128 (__m128i a, __m128i b)
int _mm256_testz_si256 (__m256i a, __m256i b)
```1 parent 648b3aa commit e3f22d9
File tree
8 files changed
+253
-63
lines changed- clang
- include/clang/Basic
- lib
- AST
- ByteCode
- Headers
- test/CodeGen/X86
8 files changed
+253
-63
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
323 | 323 | | |
324 | 324 | | |
325 | 325 | | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
| 326 | + | |
| 327 | + | |
330 | 328 | | |
331 | 329 | | |
332 | 330 | | |
333 | 331 | | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
334 | 342 | | |
335 | 343 | | |
336 | 344 | | |
| |||
520 | 528 | | |
521 | 529 | | |
522 | 530 | | |
523 | | - | |
524 | | - | |
| 531 | + | |
| 532 | + | |
525 | 533 | | |
526 | 534 | | |
527 | 535 | | |
| |||
530 | 538 | | |
531 | 539 | | |
532 | 540 | | |
533 | | - | |
| 541 | + | |
| 542 | + | |
534 | 543 | | |
535 | 544 | | |
536 | 545 | | |
| |||
540 | 549 | | |
541 | 550 | | |
542 | 551 | | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
543 | 556 | | |
544 | 557 | | |
545 | 558 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2756 | 2756 | | |
2757 | 2757 | | |
2758 | 2758 | | |
| 2759 | + | |
| 2760 | + | |
| 2761 | + | |
| 2762 | + | |
| 2763 | + | |
| 2764 | + | |
| 2765 | + | |
| 2766 | + | |
| 2767 | + | |
| 2768 | + | |
| 2769 | + | |
| 2770 | + | |
| 2771 | + | |
| 2772 | + | |
| 2773 | + | |
| 2774 | + | |
| 2775 | + | |
| 2776 | + | |
| 2777 | + | |
| 2778 | + | |
| 2779 | + | |
| 2780 | + | |
| 2781 | + | |
| 2782 | + | |
| 2783 | + | |
| 2784 | + | |
| 2785 | + | |
| 2786 | + | |
| 2787 | + | |
| 2788 | + | |
| 2789 | + | |
| 2790 | + | |
| 2791 | + | |
| 2792 | + | |
| 2793 | + | |
| 2794 | + | |
| 2795 | + | |
| 2796 | + | |
| 2797 | + | |
2759 | 2798 | | |
2760 | 2799 | | |
2761 | 2800 | | |
| |||
3712 | 3751 | | |
3713 | 3752 | | |
3714 | 3753 | | |
3715 | | - | |
| 3754 | + | |
| 3755 | + | |
| 3756 | + | |
| 3757 | + | |
| 3758 | + | |
| 3759 | + | |
| 3760 | + | |
| 3761 | + | |
| 3762 | + | |
| 3763 | + | |
| 3764 | + | |
| 3765 | + | |
| 3766 | + | |
| 3767 | + | |
| 3768 | + | |
| 3769 | + | |
| 3770 | + | |
| 3771 | + | |
| 3772 | + | |
| 3773 | + | |
| 3774 | + | |
| 3775 | + | |
| 3776 | + | |
| 3777 | + | |
| 3778 | + | |
| 3779 | + | |
| 3780 | + | |
| 3781 | + | |
3716 | 3782 | | |
3717 | 3783 | | |
3718 | 3784 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13905 | 13905 | | |
13906 | 13906 | | |
13907 | 13907 | | |
| 13908 | + | |
| 13909 | + | |
| 13910 | + | |
| 13911 | + | |
| 13912 | + | |
| 13913 | + | |
| 13914 | + | |
| 13915 | + | |
| 13916 | + | |
| 13917 | + | |
| 13918 | + | |
| 13919 | + | |
| 13920 | + | |
| 13921 | + | |
| 13922 | + | |
| 13923 | + | |
| 13924 | + | |
| 13925 | + | |
| 13926 | + | |
| 13927 | + | |
| 13928 | + | |
| 13929 | + | |
| 13930 | + | |
| 13931 | + | |
| 13932 | + | |
| 13933 | + | |
| 13934 | + | |
| 13935 | + | |
| 13936 | + | |
| 13937 | + | |
| 13938 | + | |
| 13939 | + | |
| 13940 | + | |
| 13941 | + | |
13908 | 13942 | | |
13909 | 13943 | | |
13910 | 13944 | | |
| |||
15018 | 15052 | | |
15019 | 15053 | | |
15020 | 15054 | | |
15021 | | - | |
| 15055 | + | |
| 15056 | + | |
| 15057 | + | |
| 15058 | + | |
| 15059 | + | |
| 15060 | + | |
| 15061 | + | |
| 15062 | + | |
| 15063 | + | |
| 15064 | + | |
| 15065 | + | |
| 15066 | + | |
| 15067 | + | |
| 15068 | + | |
| 15069 | + | |
| 15070 | + | |
| 15071 | + | |
| 15072 | + | |
| 15073 | + | |
| 15074 | + | |
| 15075 | + | |
| 15076 | + | |
| 15077 | + | |
| 15078 | + | |
| 15079 | + | |
| 15080 | + | |
| 15081 | + | |
| 15082 | + | |
15022 | 15083 | | |
15023 | 15084 | | |
15024 | 15085 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2539 | 2539 | | |
2540 | 2540 | | |
2541 | 2541 | | |
2542 | | - | |
2543 | | - | |
2544 | | - | |
| 2542 | + | |
| 2543 | + | |
2545 | 2544 | | |
2546 | 2545 | | |
2547 | 2546 | | |
| |||
2568 | 2567 | | |
2569 | 2568 | | |
2570 | 2569 | | |
2571 | | - | |
2572 | | - | |
2573 | | - | |
| 2570 | + | |
| 2571 | + | |
2574 | 2572 | | |
2575 | 2573 | | |
2576 | 2574 | | |
| |||
2598 | 2596 | | |
2599 | 2597 | | |
2600 | 2598 | | |
2601 | | - | |
2602 | | - | |
2603 | | - | |
| 2599 | + | |
| 2600 | + | |
2604 | 2601 | | |
2605 | 2602 | | |
2606 | 2603 | | |
| |||
2627 | 2624 | | |
2628 | 2625 | | |
2629 | 2626 | | |
2630 | | - | |
2631 | | - | |
2632 | | - | |
| 2627 | + | |
| 2628 | + | |
2633 | 2629 | | |
2634 | 2630 | | |
2635 | 2631 | | |
| |||
2656 | 2652 | | |
2657 | 2653 | | |
2658 | 2654 | | |
2659 | | - | |
2660 | | - | |
2661 | | - | |
| 2655 | + | |
| 2656 | + | |
2662 | 2657 | | |
2663 | 2658 | | |
2664 | 2659 | | |
| |||
2686 | 2681 | | |
2687 | 2682 | | |
2688 | 2683 | | |
2689 | | - | |
2690 | | - | |
2691 | | - | |
| 2684 | + | |
| 2685 | + | |
2692 | 2686 | | |
2693 | 2687 | | |
2694 | 2688 | | |
| |||
2715 | 2709 | | |
2716 | 2710 | | |
2717 | 2711 | | |
2718 | | - | |
2719 | | - | |
2720 | | - | |
| 2712 | + | |
| 2713 | + | |
2721 | 2714 | | |
2722 | 2715 | | |
2723 | 2716 | | |
| |||
2744 | 2737 | | |
2745 | 2738 | | |
2746 | 2739 | | |
2747 | | - | |
2748 | | - | |
2749 | | - | |
| 2740 | + | |
| 2741 | + | |
2750 | 2742 | | |
2751 | 2743 | | |
2752 | 2744 | | |
| |||
2774 | 2766 | | |
2775 | 2767 | | |
2776 | 2768 | | |
2777 | | - | |
2778 | | - | |
2779 | | - | |
| 2769 | + | |
| 2770 | + | |
2780 | 2771 | | |
2781 | 2772 | | |
2782 | 2773 | | |
| |||
2803 | 2794 | | |
2804 | 2795 | | |
2805 | 2796 | | |
2806 | | - | |
2807 | | - | |
2808 | | - | |
| 2797 | + | |
| 2798 | + | |
2809 | 2799 | | |
2810 | 2800 | | |
2811 | 2801 | | |
| |||
2832 | 2822 | | |
2833 | 2823 | | |
2834 | 2824 | | |
2835 | | - | |
2836 | | - | |
2837 | | - | |
| 2825 | + | |
| 2826 | + | |
2838 | 2827 | | |
2839 | 2828 | | |
2840 | 2829 | | |
| |||
2862 | 2851 | | |
2863 | 2852 | | |
2864 | 2853 | | |
2865 | | - | |
2866 | | - | |
2867 | | - | |
| 2854 | + | |
| 2855 | + | |
2868 | 2856 | | |
2869 | 2857 | | |
2870 | 2858 | | |
| |||
2888 | 2876 | | |
2889 | 2877 | | |
2890 | 2878 | | |
2891 | | - | |
2892 | | - | |
2893 | | - | |
| 2879 | + | |
| 2880 | + | |
2894 | 2881 | | |
2895 | 2882 | | |
2896 | 2883 | | |
| |||
2914 | 2901 | | |
2915 | 2902 | | |
2916 | 2903 | | |
2917 | | - | |
2918 | | - | |
2919 | | - | |
| 2904 | + | |
| 2905 | + | |
2920 | 2906 | | |
2921 | 2907 | | |
2922 | 2908 | | |
| |||
2941 | 2927 | | |
2942 | 2928 | | |
2943 | 2929 | | |
2944 | | - | |
2945 | | - | |
2946 | | - | |
| 2930 | + | |
| 2931 | + | |
2947 | 2932 | | |
2948 | 2933 | | |
2949 | 2934 | | |
| |||
0 commit comments