Commit c4b1557
authored
[DAG] Fold (setcc ((x | x >> c0 | ...) & mask)) sequences (#146054)
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.
Usually the and would be on the outside (the leaves) of the expression,
but the DAG canonicalizes it to a single `and` at the root of the
expression.
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 fb49c67 commit c4b1557
File tree
3 files changed
+217
-29
lines changed- llvm
- lib/CodeGen/SelectionDAG
- test/CodeGen/AMDGPU
3 files changed
+217
-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 | + | |
| 29058 | + | |
| 29059 | + | |
| 29060 | + | |
28985 | 29061 | | |
28986 | 29062 | | |
28987 | 29063 | | |
28988 | 29064 | | |
28989 | 29065 | | |
28990 | 29066 | | |
28991 | | - | |
| 29067 | + | |
| 29068 | + | |
| 29069 | + | |
| 29070 | + | |
| 29071 | + | |
| 29072 | + | |
| 29073 | + | |
| 29074 | + | |
| 29075 | + | |
| 29076 | + | |
| 29077 | + | |
| 29078 | + | |
28992 | 29079 | | |
28993 | 29080 | | |
28994 | 29081 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 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