- May 20, 2020
-
-
Matt Arsenault authored
This was replicating the low bits into the high bits for G_ZEXT, rather than using 0.
-
Nicolas Vasilache authored
Summary: Previously, the only support partial lowering from vector transfers to SCF was going through loops. This requires a dedicated allocation and extra memory roundtrips because LLVM aggregates cannot be indexed dynamically (for more details see the [deep-dive](https://mlir.llvm.org/docs/Dialects/Vector/#deeperdive)). This revision allows specifying full unrolling which removes this additional roundtrip. This should be used carefully though because full unrolling will spill, negating the benefits of removing the interim alloc in the first place. Proper heuristics are left for a later time. Differential Revision: https://reviews.llvm.org/D80100
-
Alexey Bataev authored
-
Alex Zinenko authored
The SingleBlockImplicitTerminator op trait provides a function `ensureRegionTerminator` that injects an appropriate terminator into the block if necessary, which is used during operation constructing and parsing. Currently, this function directly modifies the IR using low-level APIs on Operation and Block. If this function is called from a conversion pattern, these manipulations are not reflected in the ConversionPatternRewriter and thus cannot be undone or, worse, lead to tricky memory errors and malformed IR. Change `ensureRegionTerminator` to take an instance of `OpBuilder` instead of `Builder`, and use it to construct the block and the terminator when required. Maintain overloads taking an instance of `Builder` and creating a simple `OpBuilder` to use in parsers, which don't have an `OpBuilder` and cannot interact with the dialect conversion mechanism. This change was one of the reasons to make `<OpTy>::build` accept an `OpBuilder`. Differential Revision: https://reviews.llvm.org/D80138
-
Alex Zinenko authored
Originally, the SCFToStandard conversion only declared Ops from the Standard dialect as legal after conversion. This is undesirable as it would fail the conversion if the SCF ops contained ops from any other dialect. Furthermore, this would be problematic for progressive lowering of `scf.parallel` to `scf.for` after `ensureRegionTerminator` is made aware of the pattern rewriting infrastructure because it creates temporary `scf.yield` operations declared illegal. Change the legalization target to declare any op other than `scf.for`, `scf.if` and `scf.parallel` legal. Differential Revision: https://reviews.llvm.org/D80137
-
Alex Zinenko authored
Multiple places in the code base were erasing Blocks or operations in them using in-place modifications (`Block::erase` or `Block::clear`) unknown to ConversionPatternRewriter. These operations could not be undone if the pattern failed and could lead to inconsistent in-memory state of the IR with dangling pointers. Use `ConversionPatternRewriter::eraseOp` and `::eraseBlock` instead. Differential Revision: https://reviews.llvm.org/D80136
-
Alex Zinenko authored
PatternRewriter has support for erasing a Block from its parent region, but this feature has not been implemented for ConversionPatternRewriter that needs to keep track of and be able to undo block actions. Introduce support for undoing block erasure in the ConversionPatternRewriter by marking all the ops it contains for erasure and by detaching the block from its parent region. The detached block is stored in the action description and is not actually deleted until the rewrites are applied. Differential Revision: https://reviews.llvm.org/D80135
-
Alex Zinenko authored
Dialect conversion infrastructure may roll back op creation by erasing the operations in the reverse order of their creation. While this guarantees uses of values will be deleted before their definitions, this does not guarantee that a parent operation will not be deleted before its child. (This may happen in case of block inlining or if child operations, such as terminators, are created in the parent's `build` function before the parent itself.) Handle the parent/child relationship between ops by removing all child ops from the blocks before erasing the parent. The child ops remain live, detached from a block, and will be safely destroyed in their turn, which may come later than that of the parent. Differential Revision: https://reviews.llvm.org/D80134
-
Alex Zinenko authored
When creating temporary `scf.for` loops in `toy.print` lowering, the block insertion point was erronously set up to the beginning of the block rather than to its end, contradicting the comment just above the insertion point change. The code was nevertheless operational because `scf.for` was setting up its `scf.yield` terminator in an opaque to the pattern rewriting infrastructure way. Now that it is about to change, the problem would have been exposed and lead to conversion failures. Differential Revision: https://reviews.llvm.org/D80133
-
Nicolas Vasilache authored
Summary: This revision trims unnecessary complexity. Differential Revision: https://reviews.llvm.org/D80290
-
Nicolas Vasilache authored
Summary: This revision refactors the Linalg tiling pass to be written as pattern applications and retires the use of the folder in Linalg tiling. In the early days, tiling was written as a pass that would create (partially) folded and canonicalized operations on the fly for better composability. As this evolves towards composition of patterns, the pass-specific folder is counter-productive and is retired. The tiling options struct evolves to take a tile size creation function which allows materializing tile sizes on the fly (in particular constant tile sizes). This plays better with folding and DCE. With the folder going away in Tiling, the check on whether subviews are the same in linalg fusion needs to be more robust. This revision also implements such a check. In the current form, there are still some canonicalizations missing due to AffineMin/Max ops fed by scf::ForOp. These will be improved at a later time. Differential Revision: https://reviews.llvm.org/D80267
-
Simon Pilgrim authored
MachineMemOperand.h - replace Type.h with full GlobalValue.h include to fix -Wundefined-inline warnings.
-
Simon Pilgrim authored
-
Jay Foad authored
-
Raphael Isemann authored
-
Melanie Blower authored
[clang] FastMathFlags.allowContract should be initialized only from FPFeatures.allowFPContractAcrossStatement Summary: Fix bug introduced in D72841 adding support for pragma float_control Reviewers: rjmccall, Anastasia Differential Revision: https://reviews.llvm.org/D79903
-
Alex Zinenko authored
The dialect and conversions from/to it were renamed in previous commits. Differential Revision: https://reviews.llvm.org/D80216
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Exposes an implicit dependency on Type.h in MachineMemOperand.h
-
Simon Pilgrim authored
MSVC was warning that the definition for the MachineMemOperand stream handler doesn't exist.
-
Artem Dergachev authored
Fixes "Use of uninitialized value $ScanView in exec" error on systems with scan-view executable not located in the expected place. Patch by Oliver Tušla! Differential Revision: https://reviews.llvm.org/D77880
-
Raphael Isemann authored
This reverts commit 56de738d. This broke the aarch64 bot. Reverting on behalf of jarin.
-
Tres Popp authored
The assembly formats are essentially the generic forms without quotations and type information. Differential Revision: https://reviews.llvm.org/D80180
-
Pierre-vh authored
Previously, the LowOverheadLoops pass couldn't handle VPT blocks with conditions, or with multiple VCTPs. This patch improves the LowOverheadLoops pass so it can handle those cases. It also adds support for VCMPs before the VCTP. Differential Revision: https://reviews.llvm.org/D78206
-
Florian Hahn authored
-
Sam Parker authored
Combine the two API calls into one by introducing a structure to hold the relevant data. This has the added benefit of moving the boiler plate code for arguments and flags, into the constructors. This is intended to be a non-functional change, but the complicated web of logic involved here makes it very hard to guarantee. Differential Revision: https://reviews.llvm.org/D79941
-
Dmitri Gribenko authored
This reverts commit b783f70a. This change had multiple issues which required post-commit fixups, and not all issues are fixed yet. In particular, the LLDB build bot for ARM is still broken. There is also an ongoing conversation in the original phabricator review about whether there is undefined behavior in the code.
-
Dmitri Gribenko authored
This reverts commit fff3a846. It is a follow-up to b783f70a, which I'm reverting -- see the explanation in that revert.
-
Dmitri Gribenko authored
This reverts commit e3aa4cd9. It is a follow-up to b783f70a, which I'm reverting -- see the explanation in that revert.
-
Dmitri Gribenko authored
This reverts commit 15ee8a3a. It is a follow-up to b783f70a, which I'm reverting -- see the explanation in that revert.
-
Dmitri Gribenko authored
This reverts commit 82dbf4ac. It is a follow-up to b783f70a, which I'm reverting -- see the explanation in that revert.
-
Georgii Rymar authored
Similar to a regular section chunk, a Fill should have this property. This patch implements it. Differential revision: https://reviews.llvm.org/D80190
-
Raphael Isemann authored
Now with LLVM code style and expect_expr for checking. Also some minor changes to be more similar to the structure we use in other tests.
-
LLVM GN Syncbot authored
-
Benjamin Kramer authored
-
Florian Hahn authored
SCEVExpander modifies the underlying function so it is more suitable in Transforms/Utils, rather than Analysis. This allows using other transform utils in SCEVExpander. This patch was originally committed as b8a3c34e, but broke the modules build, as LoopAccessAnalysis was using the Expander. The code-gen part of LAA was moved to lib/Transforms recently, so this patch can be landed again. Reviewers: sanjoy.google, efriedma, reames Reviewed By: sanjoy.google Differential Revision: https://reviews.llvm.org/D71537
-
Kang Zhang authored
Summary: For PowerPC, there are 3 passes has disabled the machine verification. ``` PPCTargetMachine.cpp: addPass(&LiveVariablesID, false); PPCTargetMachine.cpp: addPass(createPPCEarlyReturnPass(), false); PPCTargetMachine.cpp: addPass(createPPCBranchSelectionPass(), false); ``` This patch is to enable machine verification for above three passes. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D79840
-
Georgii Rymar authored
We can use `-D` to generalize inputs. This patch does it. Differential revision: https://reviews.llvm.org/D80199
-
Emre Kultursay authored
Summary: When adb client connects to adb server, or when lldb connects to lldb server on Android device, IPv6 does not work (at least on Windows it does not work). For Android on Windows, each IPv6 failure (fallback-to-IPv4) wastes 2 seconds, and since this is called 5 times when attaching, LLDB is wasting 10 seconds. This CL brings a big improvement to attach latency. Reviewers: labath Reviewed By: labath Subscribers: aadsm, clayborg, mgrang, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D79757
-
Jaroslav Sevcik authored
Summary: This patch makes the stop reason reset logic similar to MacOS' debugserver, where exceptions are reset for all threads when resuming process for stepping or continuing (see [[ https://github.com/llvm/llvm-project/blob/96f3ea0d21b48ca088355db10d4d1a2e9bc9f884/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp#L433 | MachThreadList::ProcessWillResume ]] and [[ https://github.com/llvm/llvm-project/blob/96f3ea0d21b48ca088355db10d4d1a2e9bc9f884/lldb/tools/debugserver/source/MacOSX/MachThread.cpp#L363 | MachThread::ThreadWillResume ]]). Resetting stop reasons on resume fixes problems where LLDB spuriously reports SIGTRAP signal stop reason for deleted breakpoints (both internal and public) and where LLDB stops on an internal breakpoint while stepping over while a breakpoint is hit in another thread. See [[ https://bugs.llvm.org/show_bug.cgi?id=45642 | PR45642 ]] for details. Reviewed By: jingham, labath Differential Revision: https://reviews.llvm.org/D79308
-