SuccessChanges

Summary

  1. [GlobalISel] Simpler verification of G_SEXT_INREG and G_ASSERT_ZEXT (details)
  2. [libc++abi] Fix forced_unwind tests failures on ARM/EHABI targets. (details)
  3. [RISCV] Use a ComplexPattern to merge the PatFrags for removing unneeded masks on shift amounts. (details)
  4. Fix test in external_symbolizer_path.cpp, by adding a REQUIRES: static-lib. (details)
  5. [AArch64][GlobalISel] Fold constants into G_GLOBAL_VALUE (details)
  6. [flang][fir][NFC] Move code from FIRDialect.h into a new header. (details)
  7. [CSSPGO][llvm-profgen] Renovate perfscript check and command line input validation (details)
  8. [flang][fir][NFC] Minor format changes to FIROps.td. (details)
  9. LLVM-C: Allow LLVM{Get/Set}Alignment on an atomicrmw/cmpxchg instruction. (details)
  10. [RISCV] Add support for fixed vector sqrt. (details)
  11. [RISCV] Add support for fixed vector fabs (details)
Commit 7c749baa3a26ac4d9b7ee94b93356c3c72714755 by jay.foad
[GlobalISel] Simpler verification of G_SEXT_INREG and G_ASSERT_ZEXT

There's no need to call verifyVectorElementMatch since we already know
that the source and destination types are identical.

Differential Revision: https://reviews.llvm.org/D96589
The file was modifiedllvm/lib/CodeGen/MachineVerifier.cpp
The file was modifiedllvm/test/MachineVerifier/test_g_assert_zext.mir
The file was modifiedllvm/test/MachineVerifier/test_g_sext_inreg.mir
Commit c40b83199f01f36647b083dfd353d92134bc4973 by vvereschaka
[libc++abi] Fix forced_unwind tests failures on ARM/EHABI targets.

Added __cxxabi_config.h includes to resolve _LIBCXXABI_ARM_EHABI and
proper building the forces_unwindX.cpp tests for the ARM/EHABI targets.

Differential Revision: https://reviews.llvm.org/D96378
The file was modifiedlibcxxabi/test/forced_unwind2.pass.cpp
The file was modifiedlibcxxabi/test/forced_unwind1.pass.cpp
Commit d32ed9b27e99e1364dd92f7d8aa8d1d0d3cd17ed by craig.topper
[RISCV] Use a ComplexPattern to merge the PatFrags for removing unneeded masks on shift amounts.

Rather than having patterns with and without an AND, use a
ComplexPattern to handle both cases.

Reduces the isel table by about 700 bytes.
The file was modifiedllvm/lib/Target/RISCV/RISCVISelDAGToDAG.h
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfo.td
The file was modifiedllvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
Commit 60a55337e012b0c1739cad0f1b93fb35a7a0053f by akhuang
Fix test in external_symbolizer_path.cpp, by adding a REQUIRES: static-lib.

Follow-up to https://reviews.llvm.org/D94563.
The file was modifiedcompiler-rt/test/sanitizer_common/TestCases/external_symbolizer_path.cpp
Commit 61b4702a408834228c1c139b0e9af98616774db4 by Jessica Paquette
[AArch64][GlobalISel] Fold constants into G_GLOBAL_VALUE

This is pretty much just ports `performGlobalAddressCombine` from
AArch64ISelLowering. (AArch64 doesn't use the generic DAG combine for this.)

This adds a pre-legalize combine which looks for this pattern:

```
  %g = G_GLOBAL_VALUE @x
  %ptr1 = G_PTR_ADD %g, cst1
  %ptr2 = G_PTR_ADD %g, cst2
  ...
  %ptrN = G_PTR_ADD %g, cstN
```

And then, if possible, transforms it like so:

```
  %g = G_GLOBAL_VALUE @x
  %offset_g = G_PTR_ADD %g, -min(cst)
  %ptr1 = G_PTR_ADD %offset_g, cst1
  %ptr2 = G_PTR_ADD %offset_g, cst2
  ...
  %ptrN = G_PTR_ADD %offset_g, cstN
```

Where min(cst) is the smallest out of the G_PTR_ADD constants.

This means we should save at least one G_PTR_ADD.

This also updates code in the legalizer + selector which assumes that
G_GLOBAL_VALUE will never have an offset and adds/updates relevant tests.

Differential Revision: https://reviews.llvm.org/D96624
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/select-store.mir
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalize-global-pic.mir
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/fold-global-offsets-target-features.mir
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/fold-global-offsets.mir
The file was modifiedllvm/test/CodeGen/AArch64/fold-global-offsets.ll
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/select-gv-with-offset.mir
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/select-add-low.mir
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/legalize-global.mir
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64Combine.td
Commit f800a9bd42bf5cab31fcdc3b74d3bd75502afd3c by eschweitz
[flang][fir][NFC] Move code from FIRDialect.h into a new header.

Differential Revision: https://reviews.llvm.org/D96630
The file was modifiedflang/include/flang/Optimizer/Dialect/FIRDialect.h
The file was addedflang/include/flang/Optimizer/Support/InitFIR.h
The file was modifiedflang/tools/tco/tco.cpp
Commit 426e326a19fe7888e1975e94cd6b1cd8233e5268 by wlei
[CSSPGO][llvm-profgen] Renovate perfscript check and command line input validation

This include some changes related with PerfReader's the input check and command line change:

1) It appears there might be thousands of leading MMAP-Event line in the perfscript for large workload. For this case, the 4k threshold is not eligible to determine it's a hybrid sample. This change renovated the `isHybridPerfScript` by going through the script without threshold limitation checking whether there is a non-empty call stack immediately followed by a LBR sample. It will stop once it find a valid one.

2) Added several input validations for the command line switches in PerfReader.

3) Changed the command line `show-disassembly` to `show-disassembly-only`, it will print to stdout and exit early which leave an empty output profile.

Reviewed By: hoy, wenlei

Differential Revision: https://reviews.llvm.org/D96387
The file was addedllvm/test/tools/llvm-profgen/invalid-perfscript.test
The file was modifiedllvm/tools/llvm-profgen/llvm-profgen.cpp
The file was modifiedllvm/test/tools/llvm-profgen/pseudoprobe-decoding.test
The file was modifiedllvm/tools/llvm-profgen/PerfReader.h
The file was modifiedllvm/tools/llvm-profgen/ProfileGenerator.cpp
The file was modifiedllvm/test/tools/llvm-profgen/symbolize.ll
The file was modifiedllvm/tools/llvm-profgen/ProfiledBinary.cpp
The file was modifiedllvm/test/tools/llvm-profgen/disassemble.s
The file was modifiedllvm/tools/llvm-profgen/PerfReader.cpp
Commit 8fc219d58feb9b4027feae3a3376598d60b93289 by eschweitz
[flang][fir][NFC] Minor format changes to FIROps.td.

Differential Revision: https://reviews.llvm.org/D96633
The file was modifiedflang/include/flang/Optimizer/Dialect/FIROps.td
Commit 8bd8534aa3bdddf328683d79cfa46ee1d678f3d2 by jyknight
LLVM-C: Allow LLVM{Get/Set}Alignment on an atomicrmw/cmpxchg instruction.

(Now that these can have alignment specified.)
The file was modifiedllvm/test/Bindings/llvm-c/echo.ll
The file was modifiedllvm/include/llvm-c/Core.h
The file was modifiedllvm/lib/IR/Core.cpp
The file was modifiedllvm/tools/llvm-c-test/echo.cpp
Commit 36658376d5d4103b3828c726f211030ebc4f84b6 by craig.topper
[RISCV] Add support for fixed vector sqrt.
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.h
Commit 4220a81c847949793185190cbc545cef006cd807 by craig.topper
[RISCV] Add support for fixed vector fabs
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.h