SuccessChanges

Summary

  1. [AsmParser] Make generic directives and aliases case insensitive. (details)
  2. Fix Wparentheses warning. NFCI. (details)
  3. [SelectionDAG] Better ISD::ANY_EXTEND/ISD::ANY_EXTEND_VECTOR_INREG (details)
  4. [AArch64][SVE] Add break intrinsics (details)
  5. [lldb] Add missing terminate calls to Python/Lua subsystems (details)
  6. [lldb] Remove out of order OperatingSystemPython::Terminate call in (details)
  7. [llvm-exegesis][mips] Add support for memory instructions (details)
  8. clang-format: fix spacing in `operator const char*()` (details)
  9. clang-format: [JS] pragmas for tslint, tsc. (details)
  10. [BasicBlock] fix looping in getPostdominatingDeoptimizeCall (details)
  11. Revert "[mlir][ods] Support dialect specific content emission via hooks" (details)
  12. [mlir][spirv] Support implied extensions and capabilities (details)
  13. [ARM][MVE] Tail Predicate IsSafeToRemove (details)
  14. [IR] add unit test for Constant::isElementWiseEqual() for undef corner (details)
  15. [IR] fix Constant::isElementWiseEqual() to allow for all undef elements (details)
Commit 37fb3b33637b7ac120d68792ad2246c8b5d7eeff by david.spickett
[AsmParser] Make generic directives and aliases case insensitive.
GCC will accept any case for assembler directives. For example ".abort"
and ".ABORT" (even ".aBoRt") are equivalent.
https://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops
"The names are case insensitive for most targets, and usually written in
lower case."
Change llvm-mc to accept any case for generic directives or aliases of
those directives.
This for Bugzilla #39527.
Differential Revision: https://reviews.llvm.org/D72686
The file was modifiedllvm/lib/MC/MCParser/AsmParser.cpp
The file was addedllvm/test/MC/AsmParser/directive_case_insensitive.s
Commit 25afe91fd1b8e26258471007a24f856a0d4b14db by llvm-dev
Fix Wparentheses warning. NFCI.
The file was modifiedclang-tools-extra/clang-tidy/readability/QualifiedAutoCheck.cpp
Commit f61115835085fb8a563091f9bbc1c2e7fc5425c2 by llvm-dev
[SelectionDAG] Better ISD::ANY_EXTEND/ISD::ANY_EXTEND_VECTOR_INREG
ComputeKnownBits support
Add DemandedElts handling to ISD::ANY_EXTEND and add missing
ISD::ANY_EXTEND_VECTOR_INREG handling. Despite the lack of test changes
this code IS being used - its just that the ANY_EXTEND ops are legalized
later on (typically to ZERO_EXTEND equivalents) so we typically manage
to combine later on.
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Commit 49edf9a509cd0dfccdb92e6a2661a55251d8182f by cullen.rhodes
[AArch64][SVE] Add break intrinsics
Summary: Implements the following intrinsics:
    * @llvm.aarch64.sve.brka
   * @llvm.aarch64.sve.brka.z
   * @llvm.aarch64.sve.brkb
   * @llvm.aarch64.sve.brkb.z
   * @llvm.aarch64.sve.brkn.z
   * @llvm.aarch64.sve.brkpa.z
   * @llvm.aarch64.sve.brkpb.z
Reviewers: sdesmalen, efriedma, dancgr, mgudim, cameron.mcinally,
rengolin
Reviewed By: sdesmalen
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl,
llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72393
The file was modifiedllvm/lib/Target/AArch64/SVEInstrFormats.td
The file was modifiedllvm/include/llvm/IR/IntrinsicsAArch64.td
The file was modifiedllvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
The file was modifiedllvm/test/CodeGen/AArch64/sve-intrinsics-pred-operations.ll
Commit f2d41ad0e7e0b6b44641eafa70ef76df6a618810 by Raphael Isemann
[lldb] Add missing terminate calls to Python/Lua subsystems
The file was modifiedlldb/source/API/SystemInitializerFull.cpp
Commit 791f132132b2078cc0171e58332159cd5dafa55e by Raphael Isemann
[lldb] Remove out of order OperatingSystemPython::Terminate call in
SystemInitializerFull
We already call it later in the method (which is in the right order as
we Initialize it at the of the constructor).
The file was modifiedlldb/source/API/SystemInitializerFull.cpp
Commit ea91758a3c4507af18cc711f6c0695e9e7137693 by Milos.Stojanovic
[llvm-exegesis][mips] Add support for memory instructions
Implementing functions used to enable testing of memory instructions.
Differential Revision: https://reviews.llvm.org/D72858
The file was modifiedllvm/unittests/tools/llvm-exegesis/Mips/SnippetGeneratorTest.cpp
The file was modifiedllvm/tools/llvm-exegesis/lib/Mips/Target.cpp
Commit 33463cfba2be7c8d6c08e666123cc34f114a1f3e by krasimir
clang-format: fix spacing in `operator const char*()`
Summary: Revision a75f8d98d7ac9e557b238a229a9a2647c71feed1 fixed spacing
for operators, but caused the const and non-const versions to diverge:
```
// With Style.PointerAlignment = FormatStyle::PAS_Left:
struct A {
operator char*() { return ""; }
operator const char *() const { return ""; }
};
``` The code was checking if the type specifier was directly preceded by
`operator`. However there could be comments and `const/volatile` in
between.
Reviewers: mprobst
Reviewed By: mprobst
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D72911
The file was modifiedclang/unittests/Format/FormatTest.cpp
The file was modifiedclang/lib/Format/TokenAnnotator.cpp
Commit 9835cf159014f40e8ea655d0bb3a341ef7ec34f7 by martin
clang-format: [JS] pragmas for tslint, tsc.
Summary: tslint and tsc (the TypeScript compiler itself) use comment
pragmas of the style:
  // tslint:disable-next-line:foo
// @ts-ignore
These must not be wrapped and must stay on their own line, in isolation.
For tslint, this required adding it to the pragma regexp. The comments
starting with `@` are already left alone, but this change adds test
coverage for them.
Reviewers: krasimir
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D72907
The file was modifiedclang/lib/Format/Format.cpp
The file was modifiedclang/unittests/Format/FormatTestJS.cpp
Commit cc7cb05e9d7f3c6eac48055069c83b1426e3c6b7 by fedor.sergeev
[BasicBlock] fix looping in getPostdominatingDeoptimizeCall
Blindly following unique-successors chain appeared to be a bad idea. In
a degenerate case when block jumps to itself that goes into endless
loop.
Discovered this problem when playing with additional changes, managed to
reproduce it on existing LoopPredication code.
Fix by checking a "visited" set while iterating through unique
successors.
Reviewed By: skatkov
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72908
The file was addedllvm/test/Transforms/LoopPredication/unswitch-exit-loop.ll
The file was modifiedllvm/lib/IR/BasicBlock.cpp
Commit 37dfc64687a01db1d6e7b362231b0c698d26e257 by antiagainst
Revert "[mlir][ods] Support dialect specific content emission via hooks"
This reverts commit 397215cc309df1171a198b11cab3b241db9441db because
this feature needs more discussion.
The file was removedmlir/include/mlir/TableGen/ODSDialectHook.h
The file was modifiedmlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
The file was modifiedmlir/include/mlir/TableGen/Operator.h
Commit 267483ac709b85906e223c3cac447538a115b4c4 by antiagainst
[mlir][spirv] Support implied extensions and capabilities
In SPIR-V, when a new version is introduced, it is possible some
existing extensions will be incorporated into it so that it becomes
implicitly declared if targeting the new version. This affects
conversion target specification because we need to take this into
account when allowing what extensions to use.
For a capability, it may also implies some other capabilities, for
example, the `Shader` capability implies `Matrix` the capability. This
should also be taken into consideration when preparing the conversion
target: when we specify an capability is allowed, all its recursively
implied capabilities are also allowed.
This commit adds utility functions to query implied extensions for a
given version and implied capabilities for a given capability and
updated SPIRVConversionTarget to use them.
This commit also fixes a bug in availability spec. When a symbol
(op or enum case) can be enabled by an extension, we should drop it's
minimal version requirement. Being enabled by an extension naturally
means the symbol can be used by *any* SPIR-V version as long as the
extension is supported. The grammar still encodes the 'version' field
for such cases, but it should be interpreted as a different way: rather
than meaning a minimal version requirement, it says the symbol becomes
core at that specific version.
Differential Revision: https://reviews.llvm.org/D72765
The file was modifiedmlir/lib/Dialect/SPIRV/SPIRVLowering.cpp
The file was modifiedmlir/test/Dialect/SPIRV/TestAvailability.cpp
The file was modifiedmlir/lib/Dialect/SPIRV/SPIRVTypes.cpp
The file was modifiedmlir/include/mlir/TableGen/Attribute.h
The file was modifiedmlir/include/mlir/Dialect/SPIRV/SPIRVTypes.h
The file was modifiedmlir/utils/spirv/gen_spirv_dialect.py
The file was modifiedmlir/include/mlir/Dialect/SPIRV/SPIRVBase.td
The file was modifiedmlir/lib/TableGen/Attribute.cpp
The file was modifiedmlir/include/mlir/Dialect/SPIRV/CMakeLists.txt
The file was modifiedmlir/test/Dialect/SPIRV/target-env.mlir
The file was modifiedmlir/test/Dialect/SPIRV/availability.mlir
The file was modifiedmlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp
Commit 42350cd893a9cf6c199b17441dc2ba526c7cca71 by sam.parker
[ARM][MVE] Tail Predicate IsSafeToRemove
Introduce a method to walk through use-def chains to decide whether it's
possible to remove a given instruction and its users. These instructions
are then stored in a set until the end of the transform when they're
erased. This is now used to perform checks on the iteration count
(LoopDec chain), element count (VCTP chain) and the possibly redundant
iteration count.
As well as being able to remove chains of instructions, we know also
check that the sub feeding the vctp is producing the expected value.
Differential Revision: https://reviews.llvm.org/D71837
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-16.mir
The file was modifiedllvm/lib/Target/ARM/ARMBaseInstrInfo.h
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/unsafe-use-after.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vmldava_in_vpt.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-tail-data-types.ll
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/remove-elem-moves.mir
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri12.mir
The file was modifiedllvm/lib/Target/ARM/Utils/ARMBaseInfo.h
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/move-def-before-start.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vmaxmin_vpred_r.mir
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subri.mir
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-subi3.mir
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-8.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update2.mir
The file was modifiedllvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
The file was removedllvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update3.mir
The file was addedllvm/test/CodeGen/Thumb2/LowOverheadLoops/incorrect-sub-32.mir
The file was modifiedllvm/lib/Target/ARM/ARMInstrThumb2.td
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/move-start-after-def.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/dont-remove-loop-update.mir
The file was modifiedllvm/include/llvm/CodeGen/ReachingDefAnalysis.h
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-lr-terminator.mir
The file was modifiedllvm/lib/CodeGen/ReachingDefAnalysis.cpp
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/wlstp.mir
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir
Commit ffd3e1607db232c362fa5ad40e5cf2afa400b304 by spatel
[IR] add unit test for Constant::isElementWiseEqual() for undef corner
case; NFC
The file was modifiedllvm/unittests/IR/ConstantsTest.cpp
Commit c1e159ef6eb0095b78d08594f02f511c69d9a64b by spatel
[IR] fix Constant::isElementWiseEqual() to allow for all undef elements
compare
We could argue that match() should be more flexible here, but I'm not
sure what impact that would have on existing code.
The file was modifiedllvm/unittests/IR/ConstantsTest.cpp
The file was modifiedllvm/lib/IR/Constants.cpp