Commit 76d614b
authored
[InstSimplify] Extend icmp-of-add simplification to sle/sgt/sge (#168900)
When comparing additions with the same base where one has `nsw`, the
following simplification can be performed:
```llvm
icmp slt/sgt/sle/sge (x + C1), (x +nsw C2)
=>
icmp slt/sgt/sle/sge C1, C2
```
Previously this was only done for `slt`. This patch extends it to the
`sgt`, `sle`, and `sge` predicates when either of the conditions hold:
- `C1 <= C2 && C1 >= 0`, or
- `C2 <= C1 && C1 <= 0`
This patch also handles the `C1 == C2` case, which was previously
excluded.
Proof: https://alive2.llvm.org/ce/z/LtmY4f1 parent 04acac2 commit 76d614b
File tree
2 files changed
+110
-20
lines changed- llvm
- lib/Analysis
- test/Transforms/InstSimplify
2 files changed
+110
-20
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3261 | 3261 | | |
3262 | 3262 | | |
3263 | 3263 | | |
3264 | | - | |
| 3264 | + | |
3265 | 3265 | | |
3266 | 3266 | | |
3267 | 3267 | | |
3268 | | - | |
| 3268 | + | |
3269 | 3269 | | |
3270 | 3270 | | |
3271 | | - | |
3272 | | - | |
| 3271 | + | |
| 3272 | + | |
3273 | 3273 | | |
3274 | 3274 | | |
3275 | 3275 | | |
3276 | | - | |
3277 | | - | |
| 3276 | + | |
| 3277 | + | |
3278 | 3278 | | |
3279 | 3279 | | |
3280 | 3280 | | |
| |||
3289 | 3289 | | |
3290 | 3290 | | |
3291 | 3291 | | |
3292 | | - | |
3293 | | - | |
| 3292 | + | |
| 3293 | + | |
3294 | 3294 | | |
3295 | 3295 | | |
3296 | 3296 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2687 | 2687 | | |
2688 | 2688 | | |
2689 | 2689 | | |
2690 | | - | |
2691 | | - | |
2692 | | - | |
2693 | | - | |
| 2690 | + | |
2694 | 2691 | | |
2695 | 2692 | | |
2696 | 2693 | | |
| |||
2724 | 2721 | | |
2725 | 2722 | | |
2726 | 2723 | | |
| 2724 | + | |
| 2725 | + | |
| 2726 | + | |
| 2727 | + | |
| 2728 | + | |
| 2729 | + | |
| 2730 | + | |
| 2731 | + | |
| 2732 | + | |
| 2733 | + | |
| 2734 | + | |
| 2735 | + | |
| 2736 | + | |
| 2737 | + | |
| 2738 | + | |
| 2739 | + | |
| 2740 | + | |
| 2741 | + | |
| 2742 | + | |
| 2743 | + | |
| 2744 | + | |
| 2745 | + | |
| 2746 | + | |
| 2747 | + | |
| 2748 | + | |
| 2749 | + | |
| 2750 | + | |
| 2751 | + | |
| 2752 | + | |
| 2753 | + | |
| 2754 | + | |
| 2755 | + | |
| 2756 | + | |
| 2757 | + | |
| 2758 | + | |
| 2759 | + | |
| 2760 | + | |
| 2761 | + | |
| 2762 | + | |
2727 | 2763 | | |
2728 | 2764 | | |
2729 | 2765 | | |
| |||
2766 | 2802 | | |
2767 | 2803 | | |
2768 | 2804 | | |
2769 | | - | |
2770 | | - | |
2771 | | - | |
2772 | | - | |
| 2805 | + | |
2773 | 2806 | | |
2774 | 2807 | | |
2775 | 2808 | | |
| |||
2844 | 2877 | | |
2845 | 2878 | | |
2846 | 2879 | | |
2847 | | - | |
2848 | | - | |
2849 | | - | |
2850 | | - | |
| 2880 | + | |
2851 | 2881 | | |
2852 | 2882 | | |
2853 | 2883 | | |
| |||
2868 | 2898 | | |
2869 | 2899 | | |
2870 | 2900 | | |
| 2901 | + | |
| 2902 | + | |
| 2903 | + | |
| 2904 | + | |
| 2905 | + | |
| 2906 | + | |
| 2907 | + | |
| 2908 | + | |
| 2909 | + | |
| 2910 | + | |
| 2911 | + | |
| 2912 | + | |
| 2913 | + | |
| 2914 | + | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
| 2921 | + | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
| 2925 | + | |
| 2926 | + | |
| 2927 | + | |
| 2928 | + | |
| 2929 | + | |
| 2930 | + | |
2871 | 2931 | | |
2872 | 2932 | | |
2873 | 2933 | | |
| |||
2890 | 2950 | | |
2891 | 2951 | | |
2892 | 2952 | | |
| 2953 | + | |
| 2954 | + | |
| 2955 | + | |
| 2956 | + | |
| 2957 | + | |
| 2958 | + | |
| 2959 | + | |
| 2960 | + | |
| 2961 | + | |
| 2962 | + | |
| 2963 | + | |
| 2964 | + | |
| 2965 | + | |
| 2966 | + | |
| 2967 | + | |
| 2968 | + | |
| 2969 | + | |
| 2970 | + | |
| 2971 | + | |
| 2972 | + | |
| 2973 | + | |
| 2974 | + | |
| 2975 | + | |
| 2976 | + | |
| 2977 | + | |
| 2978 | + | |
| 2979 | + | |
| 2980 | + | |
| 2981 | + | |
| 2982 | + | |
2893 | 2983 | | |
2894 | 2984 | | |
2895 | 2985 | | |
| |||
0 commit comments