SuccessChanges

Summary

  1. [AMDGPU] Fix for folding v2.16 literals. (details)
  2. [libunwind] Bare-metal DWARF: set dso_base to 0 (details)
  3. [ValueTracking] isKnownNonZero, computeKnownBits for freeze (details)
Commit c259d3a061c8fc0f9520208eb265d4352a0ad447 by dfukalov
[AMDGPU] Fix for folding v2.16 literals.

It was found some packed immediate operands (e.g. `<half 1.0, half 2.0>`) are
incorrectly processed so one of two packed values were lost.

Introduced new function to check immediate 32-bit operand can be folded.
Converted condition about current op_sel flags value to fall-through.

Fixes: SWDEV-247595

Reviewed By: rampitec

Differential Revision: https://reviews.llvm.org/D87158
The file was modifiedllvm/test/CodeGen/AMDGPU/shrink-add-sub-constant.ll (diff)
The file was modifiedllvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp (diff)
The file was modifiedllvm/lib/Target/AMDGPU/SIFoldOperands.cpp (diff)
The file was modifiedllvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h (diff)
Commit 09d492902f178f60b3ab986360eadde9b5c8d359 by rprichard
[libunwind] Bare-metal DWARF: set dso_base to 0

Previously, DwarfFDECache::findFDE used 0 as a special value meaning
"search the entire cache, including dynamically-registered FDEs".
Switch this special value to -1, which doesn't make sense as a DSO
base.

Fixes PR47335.

Reviewed By: compnerd, #libunwind

Differential Revision: https://reviews.llvm.org/D86748
The file was modifiedlibunwind/src/UnwindCursor.hpp (diff)
The file was modifiedlibunwind/src/AddressSpace.hpp (diff)
Commit a6183d0f028cb73eccc82a7cce9534708a149762 by aqjune
[ValueTracking] isKnownNonZero, computeKnownBits for freeze

This implements support for isKnownNonZero, computeKnownBits when freeze is involved.

```
  br (x != 0), BB1, BB2
BB1:
  y = freeze x
```

In the above program, we can say that y is non-zero. The reason is as follows:

(1) If x was poison, `br (x != 0)` raised UB
(2) If x was fully undef, the branch again raised UB
(3) If x was non-zero partially undef, say `undef | 1`, `freeze x` will return a nondeterministic value which is also non-zero.
(4) If x was just a concrete value, it is trivial

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D75808
The file was modifiedllvm/lib/Analysis/ValueTracking.cpp (diff)
The file was modifiedllvm/test/Transforms/InstSimplify/known-non-zero.ll (diff)
The file was modifiedllvm/unittests/Analysis/ValueTrackingTest.cpp (diff)