Commit 4b81d70
[Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow AVX/AVX512 subvector extraction intrinsics to be used in constexpr llvm#157712 (llvm#162836)
**This PR supersedes and replaces PR llvm#158853**
The original branch diverged too far from the main branch, resulting in
significant merge conflicts that were difficult to resolve cleanly. To
provide a clean and reviewable history, this new PR was created by
cherry-picking the necessary commits onto a fresh branch based on the
latest `main`.
---
*(Original Description)*
This patch enables the use of AVX/AVX512 subvector extraction intrinsics
within `constexpr` functions. This is achieved by implementing the
evaluation logic for these intrinsics in
`VectorExprEvaluator::VisitCallExpr` and `InterpretBuiltin`.
The original discussion and review comments can be found in the previous
pull request for context: llvm#158853
Fixes llvm#1577121 parent c5bf570 commit 4b81d70
File tree
13 files changed
+262
-64
lines changed- clang
- include/clang/Basic
- lib
- AST
- ByteCode
- Headers
- test/CodeGen/X86
13 files changed
+262
-64
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
497 | 497 | | |
498 | 498 | | |
499 | 499 | | |
500 | | - | |
501 | | - | |
502 | | - | |
503 | 500 | | |
504 | 501 | | |
505 | 502 | | |
| |||
520 | 517 | | |
521 | 518 | | |
522 | 519 | | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
523 | 523 | | |
524 | 524 | | |
525 | 525 | | |
| |||
622 | 622 | | |
623 | 623 | | |
624 | 624 | | |
625 | | - | |
626 | 625 | | |
627 | 626 | | |
628 | 627 | | |
| |||
690 | 689 | | |
691 | 690 | | |
692 | 691 | | |
| 692 | + | |
693 | 693 | | |
694 | 694 | | |
695 | 695 | | |
| |||
1091 | 1091 | | |
1092 | 1092 | | |
1093 | 1093 | | |
1094 | | - | |
| 1094 | + | |
1095 | 1095 | | |
1096 | 1096 | | |
1097 | 1097 | | |
| |||
2956 | 2956 | | |
2957 | 2957 | | |
2958 | 2958 | | |
2959 | | - | |
| 2959 | + | |
2960 | 2960 | | |
2961 | 2961 | | |
2962 | 2962 | | |
2963 | 2963 | | |
2964 | 2964 | | |
2965 | 2965 | | |
2966 | | - | |
| 2966 | + | |
2967 | 2967 | | |
2968 | 2968 | | |
2969 | 2969 | | |
2970 | 2970 | | |
2971 | | - | |
| 2971 | + | |
2972 | 2972 | | |
2973 | 2973 | | |
2974 | 2974 | | |
2975 | 2975 | | |
2976 | | - | |
| 2976 | + | |
2977 | 2977 | | |
2978 | 2978 | | |
2979 | 2979 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2991 | 2991 | | |
2992 | 2992 | | |
2993 | 2993 | | |
| 2994 | + | |
| 2995 | + | |
| 2996 | + | |
| 2997 | + | |
| 2998 | + | |
| 2999 | + | |
| 3000 | + | |
| 3001 | + | |
| 3002 | + | |
| 3003 | + | |
| 3004 | + | |
| 3005 | + | |
| 3006 | + | |
| 3007 | + | |
| 3008 | + | |
| 3009 | + | |
| 3010 | + | |
| 3011 | + | |
| 3012 | + | |
| 3013 | + | |
| 3014 | + | |
| 3015 | + | |
| 3016 | + | |
| 3017 | + | |
| 3018 | + | |
| 3019 | + | |
| 3020 | + | |
| 3021 | + | |
| 3022 | + | |
| 3023 | + | |
| 3024 | + | |
| 3025 | + | |
| 3026 | + | |
| 3027 | + | |
| 3028 | + | |
| 3029 | + | |
| 3030 | + | |
| 3031 | + | |
| 3032 | + | |
| 3033 | + | |
| 3034 | + | |
| 3035 | + | |
| 3036 | + | |
| 3037 | + | |
| 3038 | + | |
| 3039 | + | |
| 3040 | + | |
| 3041 | + | |
| 3042 | + | |
| 3043 | + | |
| 3044 | + | |
| 3045 | + | |
| 3046 | + | |
| 3047 | + | |
| 3048 | + | |
| 3049 | + | |
| 3050 | + | |
| 3051 | + | |
| 3052 | + | |
| 3053 | + | |
| 3054 | + | |
| 3055 | + | |
| 3056 | + | |
| 3057 | + | |
| 3058 | + | |
| 3059 | + | |
| 3060 | + | |
| 3061 | + | |
| 3062 | + | |
| 3063 | + | |
| 3064 | + | |
| 3065 | + | |
| 3066 | + | |
| 3067 | + | |
| 3068 | + | |
| 3069 | + | |
2994 | 3070 | | |
2995 | 3071 | | |
2996 | 3072 | | |
| |||
3688 | 3764 | | |
3689 | 3765 | | |
3690 | 3766 | | |
| 3767 | + | |
| 3768 | + | |
| 3769 | + | |
| 3770 | + | |
| 3771 | + | |
| 3772 | + | |
| 3773 | + | |
| 3774 | + | |
| 3775 | + | |
| 3776 | + | |
| 3777 | + | |
| 3778 | + | |
| 3779 | + | |
| 3780 | + | |
| 3781 | + | |
| 3782 | + | |
| 3783 | + | |
| 3784 | + | |
| 3785 | + | |
3691 | 3786 | | |
3692 | 3787 | | |
3693 | 3788 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11811 | 11811 | | |
11812 | 11812 | | |
11813 | 11813 | | |
| 11814 | + | |
| 11815 | + | |
| 11816 | + | |
| 11817 | + | |
| 11818 | + | |
| 11819 | + | |
| 11820 | + | |
| 11821 | + | |
| 11822 | + | |
| 11823 | + | |
| 11824 | + | |
| 11825 | + | |
| 11826 | + | |
| 11827 | + | |
| 11828 | + | |
| 11829 | + | |
| 11830 | + | |
| 11831 | + | |
| 11832 | + | |
| 11833 | + | |
| 11834 | + | |
| 11835 | + | |
| 11836 | + | |
| 11837 | + | |
| 11838 | + | |
| 11839 | + | |
| 11840 | + | |
| 11841 | + | |
| 11842 | + | |
| 11843 | + | |
| 11844 | + | |
| 11845 | + | |
| 11846 | + | |
| 11847 | + | |
| 11848 | + | |
| 11849 | + | |
| 11850 | + | |
| 11851 | + | |
| 11852 | + | |
| 11853 | + | |
| 11854 | + | |
| 11855 | + | |
| 11856 | + | |
| 11857 | + | |
| 11858 | + | |
| 11859 | + | |
| 11860 | + | |
| 11861 | + | |
| 11862 | + | |
| 11863 | + | |
| 11864 | + | |
| 11865 | + | |
| 11866 | + | |
| 11867 | + | |
| 11868 | + | |
| 11869 | + | |
| 11870 | + | |
| 11871 | + | |
| 11872 | + | |
| 11873 | + | |
| 11874 | + | |
| 11875 | + | |
| 11876 | + | |
| 11877 | + | |
| 11878 | + | |
| 11879 | + | |
| 11880 | + | |
11814 | 11881 | | |
11815 | 11882 | | |
11816 | 11883 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1200 | 1200 | | |
1201 | 1201 | | |
1202 | 1202 | | |
1203 | | - | |
1204 | | - | |
1205 | | - | |
1206 | | - | |
| 1203 | + | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
1207 | 1207 | | |
1208 | 1208 | | |
1209 | 1209 | | |
| |||
1215 | 1215 | | |
1216 | 1216 | | |
1217 | 1217 | | |
1218 | | - | |
1219 | | - | |
1220 | | - | |
1221 | | - | |
1222 | | - | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
1223 | 1222 | | |
1224 | 1223 | | |
1225 | 1224 | | |
| |||
1233 | 1232 | | |
1234 | 1233 | | |
1235 | 1234 | | |
1236 | | - | |
1237 | | - | |
1238 | | - | |
1239 | | - | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
1240 | 1239 | | |
1241 | 1240 | | |
1242 | 1241 | | |
| |||
1248 | 1247 | | |
1249 | 1248 | | |
1250 | 1249 | | |
1251 | | - | |
1252 | | - | |
1253 | | - | |
1254 | | - | |
1255 | | - | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
1256 | 1254 | | |
1257 | 1255 | | |
1258 | 1256 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3156 | 3156 | | |
3157 | 3157 | | |
3158 | 3158 | | |
3159 | | - | |
3160 | | - | |
3161 | | - | |
3162 | | - | |
| 3159 | + | |
| 3160 | + | |
| 3161 | + | |
| 3162 | + | |
3163 | 3163 | | |
3164 | 3164 | | |
3165 | 3165 | | |
| |||
3171 | 3171 | | |
3172 | 3172 | | |
3173 | 3173 | | |
3174 | | - | |
3175 | | - | |
3176 | | - | |
3177 | | - | |
| 3174 | + | |
| 3175 | + | |
| 3176 | + | |
| 3177 | + | |
3178 | 3178 | | |
3179 | 3179 | | |
3180 | 3180 | | |
| |||
7089 | 7089 | | |
7090 | 7090 | | |
7091 | 7091 | | |
7092 | | - | |
7093 | | - | |
7094 | | - | |
7095 | | - | |
| 7092 | + | |
| 7093 | + | |
| 7094 | + | |
| 7095 | + | |
7096 | 7096 | | |
7097 | 7097 | | |
7098 | 7098 | | |
| |||
7104 | 7104 | | |
7105 | 7105 | | |
7106 | 7106 | | |
7107 | | - | |
| 7107 | + | |
7108 | 7108 | | |
7109 | | - | |
7110 | | - | |
| 7109 | + | |
| 7110 | + | |
7111 | 7111 | | |
7112 | 7112 | | |
7113 | 7113 | | |
| |||
0 commit comments