Commit 51fa20d
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 50f3a6b commit 51fa20d
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 | |
|---|---|---|---|
| |||
28982 | 28982 | | |
28983 | 28983 | | |
28984 | 28984 | | |
| 28985 | + | |
| 28986 | + | |
| 28987 | + | |
| 28988 | + | |
| 28989 | + | |
| 28990 | + | |
| 28991 | + | |
| 28992 | + | |
| 28993 | + | |
| 28994 | + | |
| 28995 | + | |
| 28996 | + | |
| 28997 | + | |
| 28998 | + | |
| 28999 | + | |
| 29000 | + | |
| 29001 | + | |
| 29002 | + | |
| 29003 | + | |
| 29004 | + | |
| 29005 | + | |
| 29006 | + | |
| 29007 | + | |
| 29008 | + | |
| 29009 | + | |
| 29010 | + | |
| 29011 | + | |
| 29012 | + | |
| 29013 | + | |
| 29014 | + | |
| 29015 | + | |
| 29016 | + | |
| 29017 | + | |
| 29018 | + | |
| 29019 | + | |
| 29020 | + | |
| 29021 | + | |
| 29022 | + | |
| 29023 | + | |
| 29024 | + | |
| 29025 | + | |
| 29026 | + | |
| 29027 | + | |
| 29028 | + | |
| 29029 | + | |
| 29030 | + | |
| 29031 | + | |
| 29032 | + | |
| 29033 | + | |
| 29034 | + | |
| 29035 | + | |
| 29036 | + | |
| 29037 | + | |
| 29038 | + | |
| 29039 | + | |
| 29040 | + | |
| 29041 | + | |
| 29042 | + | |
| 29043 | + | |
| 29044 | + | |
| 29045 | + | |
| 29046 | + | |
| 29047 | + | |
| 29048 | + | |
| 29049 | + | |
| 29050 | + | |
| 29051 | + | |
| 29052 | + | |
| 29053 | + | |
| 29054 | + | |
| 29055 | + | |
| 29056 | + | |
| 29057 | + | |
28985 | 29058 | | |
28986 | 29059 | | |
28987 | 29060 | | |
28988 | 29061 | | |
28989 | 29062 | | |
28990 | 29063 | | |
28991 | | - | |
| 29064 | + | |
| 29065 | + | |
| 29066 | + | |
| 29067 | + | |
| 29068 | + | |
| 29069 | + | |
| 29070 | + | |
| 29071 | + | |
| 29072 | + | |
| 29073 | + | |
| 29074 | + | |
| 29075 | + | |
28992 | 29076 | | |
28993 | 29077 | | |
28994 | 29078 | | |
| |||
| 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