UnstableChanges

Summary

  1. [mlir] Add a signedness semantics bit to IntegerType (details)
  2. [TargetLowering] SimplifyDemandedBits - use getValidShiftAmountConstant helper. (details)
  3. [X86] Regenerate hi reg tests (details)
  4. [Error/unittests] Add a FailedWithMessage gtest matcher (details)
  5. [PowerPC][NFC] Remove Darwin specific logic in frame finalization. (details)
  6. [AST][NFC] Update outdated comments in ASTStructuralEquivalence.cpp (details)
  7. [PowerPC][NFC] Add a test for vrsave usage iinline asm. (details)
  8. [lldb/DWARF] Add support for type units in dwp files (details)
  9. Remove unused functions in llvm-ml (details)
  10. [mlir] Silence error: call to constructor of 'llvm::APInt' is ambiguous (details)
Commit 35b685270b410f6a1351c2a527021f22330c25b9 by antiagainst
[mlir] Add a signedness semantics bit to IntegerType

Thus far IntegerType has been signless: a value of IntegerType does
not have a sign intrinsically and it's up to the specific operation
to decide how to interpret those bits. For example, std.addi does
two's complement arithmetic, and std.divis/std.diviu treats the first
bit as a sign.

This design choice was made some time ago when we did't have lots
of dialects and dialects were more rigid. Today we have much more
extensible infrastructure and different dialect may want different
modelling over integer signedness. So while we can say we want
signless integers in the standard dialect, we cannot dictate for
others. Requiring each dialect to model the signedness semantics
with another set of custom types is duplicating the functionality
everywhere, considering the fundamental role integer types play.

This CL extends the IntegerType with a signedness semantics bit.
This gives each dialect an option to opt in signedness semantics
if that's what they want and helps code sharing. The parser is
modified to recognize `si[1-9][0-9]*` and `ui[1-9][0-9]*` as
signed and unsigned integer types, respectively, leaving the
original `i[1-9][0-9]*` to continue to mean no indication over
signedness semantics. All existing dialects are not affected (yet)
as this is a feature to opt in.

More discussions can be found at:

https://groups.google.com/a/tensorflow.org/d/msg/mlir/XmkV8HOPWpo/7O4X0Nb_AQAJ

Differential Revision: https://reviews.llvm.org/D72533
The file was modifiedmlir/lib/IR/Operation.cpp
The file was modifiedmlir/include/mlir/Dialect/QuantOps/QuantPredicates.td
The file was modifiedmlir/lib/IR/StandardTypes.cpp
The file was modifiedmlir/test/IR/invalid.mlir
The file was modifiedmlir/lib/IR/Attributes.cpp
The file was modifiedmlir/docs/LangRef.md
The file was modifiedmlir/lib/IR/Builders.cpp
The file was modifiedmlir/test/IR/parser.mlir
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Promotion.cpp
The file was modifiedmlir/lib/Conversion/GPUToNVVM/LowerGpuOpsToNVVMOps.cpp
The file was modifiedmlir/lib/Dialect/VectorOps/VectorOps.cpp
The file was modifiedmlir/include/mlir/IR/OpDefinition.h
The file was modifiedmlir/include/mlir/Dialect/QuantOps/UniformSupport.h
The file was modifiedmlir/lib/IR/AsmPrinter.cpp
The file was modifiedmlir/include/mlir/Dialect/FxpMathOps/FxpMathOps.td
The file was modifiedmlir/include/mlir/IR/Types.h
The file was modifiedmlir/include/mlir/IR/OpBase.td
The file was modifiedmlir/lib/Analysis/Utils.cpp
The file was modifiedmlir/include/mlir/Dialect/GPU/GPUOps.td
The file was modifiedmlir/lib/Dialect/AffineOps/EDSC/Builders.cpp
The file was modifiedmlir/lib/Dialect/GPU/IR/GPUDialect.cpp
The file was modifiedmlir/lib/IR/TypeDetail.h
The file was modifiedmlir/lib/Parser/Parser.cpp
The file was modifiedmlir/lib/Parser/Token.cpp
The file was modifiedmlir/include/mlir/Dialect/StandardOps/Ops.td
The file was modifiedmlir/lib/Parser/Lexer.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Utils/Utils.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
The file was modifiedmlir/test/lib/TestDialect/TestDialect.cpp
The file was modifiedmlir/include/mlir/IR/Operation.h
The file was modifiedmlir/include/mlir/IR/StandardTypes.h
The file was modifiedmlir/lib/Dialect/FxpMathOps/Transforms/UniformKernelUtils.h
The file was modifiedmlir/test/mlir-tblgen/op-attribute.td
The file was modifiedmlir/lib/Parser/TokenKinds.def
The file was modifiedmlir/include/mlir/Dialect/VectorOps/VectorOps.td
The file was modifiedmlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp
The file was modifiedmlir/include/mlir/IR/Builders.h
The file was modifiedmlir/test/mlir-tblgen/predicate.td
The file was modifiedmlir/lib/Dialect/SPIRV/TargetAndABI.cpp
The file was modifiedmlir/lib/Dialect/StandardOps/Ops.cpp
The file was modifiedmlir/lib/Parser/Token.h
The file was modifiedmlir/lib/IR/MLIRContext.cpp
The file was modifiedmlir/include/mlir/IR/Matchers.h
The file was modifiedmlir/lib/Dialect/SPIRV/SPIRVOps.cpp
The file was modifiedmlir/include/mlir/IR/Attributes.h
The file was modifiedmlir/test/lib/TestDialect/TestPatterns.cpp
The file was modifiedmlir/lib/Transforms/LoopFusion.cpp
The file was modifiedmlir/docs/Rationale.md
The file was modifiedmlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
Commit 86c52af05a64c4aa9d61984eeda8fb7849a4b0fa by llvm-dev
[TargetLowering] SimplifyDemandedBits - use getValidShiftAmountConstant helper.

Use the SelectionDAG::getValidShiftAmountConstant helper to get const/constsplat shift amounts, which allows us to drop the out of range shift amount early-out.

First step towards better non-uniform shift amount support in SimplifyDemandedBits.
The file was modifiedllvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Commit d33e96b68c6f6424dc81145b1301f4cd478e84a2 by llvm-dev
[X86] Regenerate hi reg tests
The file was modifiedllvm/test/CodeGen/X86/h-register-addressing-32.ll
The file was modifiedllvm/test/CodeGen/X86/h-register-addressing-64.ll
Commit b55c58a2d569f2d92333b05c1a7a00114d75e0a6 by pavel
[Error/unittests] Add a FailedWithMessage gtest matcher

Summary:
We already have a "Failed" matcher, which can be used to check any
property of the Error object. However, most frequently one just wants to
check the error message, and while this is possible with the "Failed"
matcher, it is also very convoluted
(Failed<ErrorInfoBase>(testing::Property(&ErrorInfoBase::message, "the
message"))).

Now, one can just write: FailedWithMessage("the message"). I expect that
most of the usages will remain this simple, but the argument of the
matcher is not limited to simple strings -- the argument of the matcher
can be any other matcher, so one can write more complicated assertions
if needed (FailedWithMessage(ContainsRegex("foo|bar"))). If one wants to
match multiple error messages, he can pass multiple arguments to the
matcher.

If one wants to match the message list as a whole (perhaps to check the
message count), I've also included a FailedWithMessageArray matcher,
which takes a single matcher receiving a vector of error message
strings.

Reviewers: sammccall, dblaikie, jhenderson

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74898
The file was modifiedllvm/unittests/Support/ErrorTest.cpp
The file was modifiedllvm/include/llvm/Testing/Support/Error.h
Commit 4fdaac0e1eb8e75fe59de0bd01cf72329dacbdb4 by sd.fertile
[PowerPC][NFC] Remove Darwin specific logic in frame finalization.

Remove some cumbersome Darwin specific logic for updating the frame
offsets of the condition-register spill slots. The containing function has an
early return if the subtarget is not ELF based which makes the Darwin logic
dead.
The file was modifiedllvm/lib/Target/PowerPC/PPCFrameLowering.cpp
Commit a49a41e7855fad426abf6ee9b8b88a535e8d33cc by gabor.marton
[AST][NFC] Update outdated comments in ASTStructuralEquivalence.cpp
The file was modifiedclang/lib/AST/ASTStructuralEquivalence.cpp
Commit 175f6e309ab911d43ab21707587615341112f3b5 by sd.fertile
[PowerPC][NFC] Add a test for vrsave usage iinline asm.

Add a lit test that that uses vrsave register in the clobber list, and
tests the extended mnemonics mtvrsave and mfvrsave.
The file was addedllvm/test/CodeGen/PowerPC/vrsave-inline-asm.ll
Commit de8793b9184ece0d24f46bc2d86711092848f938 by pavel
[lldb/DWARF] Add support for type units in dwp files

all that was needed was to teach lldb's DWARF context about the
debug_tu_index section.
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/DWARFContext.h
The file was addedlldb/test/Shell/SymbolFile/DWARF/dwp-debug-types.s
Commit f0c642e82274158f692d184de177be65eba814c1 by epastor
Remove unused functions in llvm-ml

On review, these functions will likely not be needed even in the final MasmParser.
The file was modifiedllvm/lib/MC/MCParser/MasmParser.cpp
Commit 5125803d344b848cdfc9441edfcc36dc8e488407 by alexandre.ganea
[mlir] Silence error: call to constructor of 'llvm::APInt' is ambiguous

I was getting this error when using Clang 9.0.1 for compiling.

F:\llvm-project\mlir\lib\IR\Builders.cpp(119,27): error: call to constructor of 'llvm::APInt' is ambiguous
                          APInt(32, value, /*isSigned=*/false));
                          ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
F:\llvm-project\llvm\include\llvm/ADT/APInt.h(277,3): note: candidate constructor
  APInt(unsigned numBits, uint64_t val, bool isSigned = false)
  ^
F:\llvm-project\llvm\include\llvm/ADT/APInt.h(304,3): note: candidate constructor
  APInt(unsigned numBits, unsigned numWords, const uint64_t bigVal[]);
  ^
1 error generated.
The file was modifiedmlir/lib/IR/Builders.cpp