Commit 2661513
committed
[DAG] Fold (setcc ((x | x >> c0 | ...) & mask)) sequences
Fold sequences where we extract a bunch of contiguous bits from a value,
merge them into the low bit and then check if the low bits are zero or not.
It seems like a strange sequence at first but it's an idiom used by device
libs in device libs to check workitem IDs for AMDGPU.
The reason I put this in DAGCombiner instead of the target combiner is
because this is a generic, valid transform that's also fairly niche, so
there isn't much risk of a combine loop I think.
See #1367271 parent 2b9f0b5 commit 2661513
File tree
2 files changed
+91
-29
lines changed- llvm
- lib/CodeGen/SelectionDAG
- test/CodeGen/AMDGPU
2 files changed
+91
-29
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28912 | 28912 | | |
28913 | 28913 | | |
28914 | 28914 | | |
| 28915 | + | |
| 28916 | + | |
| 28917 | + | |
| 28918 | + | |
| 28919 | + | |
| 28920 | + | |
| 28921 | + | |
| 28922 | + | |
| 28923 | + | |
| 28924 | + | |
| 28925 | + | |
| 28926 | + | |
| 28927 | + | |
| 28928 | + | |
| 28929 | + | |
| 28930 | + | |
| 28931 | + | |
| 28932 | + | |
| 28933 | + | |
| 28934 | + | |
| 28935 | + | |
| 28936 | + | |
| 28937 | + | |
| 28938 | + | |
| 28939 | + | |
| 28940 | + | |
| 28941 | + | |
| 28942 | + | |
| 28943 | + | |
| 28944 | + | |
| 28945 | + | |
| 28946 | + | |
| 28947 | + | |
| 28948 | + | |
| 28949 | + | |
| 28950 | + | |
| 28951 | + | |
| 28952 | + | |
| 28953 | + | |
| 28954 | + | |
| 28955 | + | |
| 28956 | + | |
| 28957 | + | |
| 28958 | + | |
| 28959 | + | |
| 28960 | + | |
| 28961 | + | |
| 28962 | + | |
| 28963 | + | |
| 28964 | + | |
| 28965 | + | |
| 28966 | + | |
| 28967 | + | |
| 28968 | + | |
| 28969 | + | |
| 28970 | + | |
| 28971 | + | |
| 28972 | + | |
| 28973 | + | |
| 28974 | + | |
| 28975 | + | |
| 28976 | + | |
| 28977 | + | |
| 28978 | + | |
| 28979 | + | |
| 28980 | + | |
| 28981 | + | |
| 28982 | + | |
| 28983 | + | |
| 28984 | + | |
| 28985 | + | |
| 28986 | + | |
| 28987 | + | |
28915 | 28988 | | |
28916 | 28989 | | |
28917 | 28990 | | |
28918 | 28991 | | |
28919 | 28992 | | |
28920 | 28993 | | |
28921 | | - | |
| 28994 | + | |
| 28995 | + | |
| 28996 | + | |
| 28997 | + | |
| 28998 | + | |
| 28999 | + | |
| 29000 | + | |
| 29001 | + | |
| 29002 | + | |
| 29003 | + | |
| 29004 | + | |
| 29005 | + | |
28922 | 29006 | | |
28923 | 29007 | | |
28924 | 29008 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
| 15 | + | |
20 | 16 | | |
21 | 17 | | |
22 | 18 | | |
23 | 19 | | |
24 | 20 | | |
25 | 21 | | |
26 | 22 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 23 | + | |
31 | 24 | | |
32 | 25 | | |
33 | 26 | | |
| |||
40 | 33 | | |
41 | 34 | | |
42 | 35 | | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
| 36 | + | |
48 | 37 | | |
49 | 38 | | |
50 | 39 | | |
| |||
106 | 95 | | |
107 | 96 | | |
108 | 97 | | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
| 98 | + | |
114 | 99 | | |
115 | 100 | | |
116 | 101 | | |
117 | 102 | | |
118 | 103 | | |
119 | 104 | | |
120 | 105 | | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
| 106 | + | |
125 | 107 | | |
126 | 108 | | |
127 | 109 | | |
| |||
134 | 116 | | |
135 | 117 | | |
136 | 118 | | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
| 119 | + | |
142 | 120 | | |
143 | 121 | | |
144 | 122 | | |
| |||
0 commit comments