Commit 2df2373
authored
DAG/GlobalISel: Set disjoint for or in copysign lowering (#97057)
We masked out the sign bit from one value, and the non-sign bits
from the other so there should be no common bits set.
No idea how to test this on the DAG path, other than scraping
the debug logs. A few targets hit this path with f16 values, but
the resulting i16 ors get anyext promoted and lose the disjoint
flag. In the fp128 case, PPC gets further and the or loses the flag
somewhere else later. Adding a haveNoCommonBits assert shows this
works though.1 parent a9c12e4 commit 2df2373
File tree
5 files changed
+248
-239
lines changed- llvm
- lib/CodeGen
- GlobalISel
- SelectionDAG
- test/CodeGen
- AArch64/GlobalISel
- AMDGPU/GlobalISel
5 files changed
+248
-239
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7210 | 7210 | | |
7211 | 7211 | | |
7212 | 7212 | | |
| 7213 | + | |
| 7214 | + | |
| 7215 | + | |
| 7216 | + | |
7213 | 7217 | | |
7214 | 7218 | | |
7215 | 7219 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1681 | 1681 | | |
1682 | 1682 | | |
1683 | 1683 | | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1684 | 1687 | | |
1685 | | - | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
1686 | 1691 | | |
1687 | 1692 | | |
1688 | 1693 | | |
| |||
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
26 | | - | |
| 25 | + | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
| 57 | + | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
0 commit comments