- Nov 15, 2021
-
-
Nicolas Vasilache authored
FMAOp -> LLVM conversion is done progressively by peeling off 1 dimension from FMAOp at each pattern iteration. Add the recursively bounded property declaration to the pattern so that the rewriter can apply it multiple times. Without this, FMAOps with 3+D do not lower to LLVM. Differential Revision: https://reviews.llvm.org/D113886
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D113881
-
Kristóf Umann authored
modernize-loop-convert checks and fixes when a loop that iterates over the elements of a container can be rewritten from a for(...; ...; ...) style into the "new" C++11 for-range format. For that, it needs to parse the elements of that loop, like its init-statement, such as ItType it = cont.begin(). modernize-loop-convert checks whether the loop variable is initialized by a begin() member function. When an iterator is initialized with a conversion operator (e.g. for (const_iterator it = non_const_container.begin(); ...), attempts to retrieve the name of the initializer expression resulted in an assert, as conversion operators don't have a valid IdentifierInfo. I fixed this by making digThroughConstructors dig through conversion operators as well. Differential Revision: https://reviews.llvm.org/D113201
-
Butygin authored
[mlir] DialectConversion: fix OperationLegalizer::isIllegal result when legality callback returns None OperationLegalizer::isIllegal returns false if operation legality wasn't registered by user and we expect same behaviour when dynamic legality callback return None, but instead true was returned. Differential Revision: https://reviews.llvm.org/D113267
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D113877
-
Hans Wennborg authored
This casued assertion failures: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:9446: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode *, llvm::SDNode *): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed. See comment on the code review. (Had to update some expectations in test/CodeGen/X86/vselect-zero.ll manually due to other changes having landed after the reverted one.) > and (pcmpgt X, -1), Y --> pandn (vsrai X, BitWidth-1), Y > > This avoids the -1 constant vector in favor of an arithmetic shift > instruction if it exists (the ISA is still not complete after all > these years...). > > We catch this pattern late in combining by matching PCMPGT, so it > should not interfere with more general folds. > > Differential Revision: https://reviews.llvm.org/D113603 This reverts commit bf5748a1.
-
Matheus Izvekov authored
Signed-off-by:
Matheus Izvekov <mizvekov@gmail.com> Reviewed By: stephenneuendorffer Differential Revision: https://reviews.llvm.org/D113664
-
Andrzej Warzynski authored
This patch extends the `FIRToLLVMLowering` pass in Flang by adding a hook to transform `fir.emboxchar` to a sequence of LLVM MLIR instructions. This is part of the upstreaming effort from the `fir-dev` branch in [1]. [1] https://github.com/flang-compiler/f18-llvm-project Differential Revision: https://reviews.llvm.org/D113666 Patch originally written by: Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Simon Pilgrim authored
Pass in SDLoc instead of (repeated) local creations in SimplifyVBinOp and scalarizeBinOpOfSplats
-
Simon Pilgrim authored
-
Matthias Springer authored
This change makes it possible to set up custom mappings in a PostAnalysisStep. Some users of Comprehensive Bufferize have custom tensor types and it is most convenient to just reuse the same bvm. Also add some more assertions. Differential Revision: https://reviews.llvm.org/D113726
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D113875
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D113723
-
Jay Foad authored
MachineVerifier verified the subranges of a live interval if they existed, but did not complain if they did not exist. This patch changes the verifier to complain if there are no subranges in the live interval for a subreg operand (so long as MachineRegisterInfo says we should be tracking subreg liveness for that register). This matches the conditions for LiveIntervalCalc to create subranges in the first place. Differential Revision: https://reviews.llvm.org/D112556
-
Pavel Labath authored
D112976 changed the layout and 0d62e31c andjusted the test expectations to match. This patch changes the tests to expect both versions, so that one can run the test suite against older libc++ versions as well.
-
Dmitry Preobrazhensky authored
Corrected src data size of global_atomic_fcmpswap and global_atomic_fcmpswap_x2 opcodes. Differential Revision: https://reviews.llvm.org/D113746
-
David Green authored
-
Matt Kulukundis authored
hat tip: @The_Whole_Daisy for helping to isolate Reviewed By: dvyukov, fowles Differential Revision: https://reviews.llvm.org/D113713
-
Valentin Clement authored
This patch adds the !fir.len type conversion. The type is converted to the a 32 bits integer. This patch is part of the upstreaming effort from fir-dev branch. Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com> Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D113658
-
Peter Waller authored
Follow up to D105889, covering instructions using sve_fp_2op_p_zd_HSD: frintn, frintp, frintm, frintz, frinta, frintx, frinti, frecpx and fsqrt. Reviewed By: bsmith Differential Revision: https://reviews.llvm.org/D113485
-
Diana Picus authored
Clarify some comments as discussed here: https://github.com/flang-compiler/f18-llvm-project/pull/1210
-
Igor Kudrin authored
Non-allocatable sections are not part of the memory image of the program, so there is no need to find memory regions for them either matching properties or handling explicit assignments. The early test and return help to simplify LinkerScript::findMemoryRegion() a bit. Differential Revision: https://reviews.llvm.org/D113768
-
Simon Moll authored
Rewriting SDNode user loops broke VEISelLowering (commit efa896e5). This fixes it.
-
Sander de Smalen authored
The interface is a convenience function to ask if a block requires predication when widening, but it's important that there are two separate concepts to consider: (A) The block was predicated in the original loop. (B) The block was unpredicated in the original loop, but requires predication because of tail folding. In the case of (B) we know that at least one lane of the vector will be executed, which means we can implementing a load from a uniform address with a scalar load + splat (D112552). In the case of predication because of (A), we cannot do this, because the scalar load itself requires predication. The name 'blockNeedsPredication' does not make the distinction between (A) and (B), hence the reason to rename it. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D113392 -
Nicolas Vasilache authored
Names should be consistent across all operations otherwise painful bugs will surface. Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D113762
-
Fabian Wolff authored
Fixes PR#38187. Constructors are actually already checked, but only as functions, i.e. the check only looks at the constructor body and not at the initializers, which misses the (common) case where constructor parameters are moved as part of an initializer expression. One remaining false negative is when both the move //and// the use-after-move occur in constructor initializers. This is a lot more difficult to handle, though, because the `bugprone-use-after-move` check is currently based on a CFG that only takes the body into account, not the initializers, so e.g. initialization order would have to manually be considered. I will file a follow-up issue for this once PR#38187 is closed. Reviewed By: carlosgalvezp Differential Revision: https://reviews.llvm.org/D113708
-
Mehdi Amini authored
This reverts commit bec488b8. This commit introduced a layering violation between MLIR libraries. Reverting for now while discussing on the original review thread.
-
Kyungwoo Lee authored
It appears REQUIRES are needed for tests added in D108261. This was not caught in the pre-merge tests but in the post-commit tests. he fix is to move the tests into the target sub-directories. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D113870
-
David Blaikie authored
Add coverage to demonstrate why including the type of template parameters is necessary to disambiguate function template specializations. Test courtesy of Richard Smith
-
David Blaikie authored
-
David Blaikie authored
-
David Blaikie authored
This covers the DeclPrinter::VisitCXXRecordDecl caller - though also demonstrates some possible inconsistency in template specialization printing.
-
Stella Laurenzo authored
Re-applies D111513: * Adds a full-fledged Python example dialect and tests to the Standalone example (need to do a bit of tweaking in the top level CMake and lit tests to adapt better to if not building with Python enabled). * Rips out remnants of custom extension building in favor of pybind11_add_module which does the right thing. * Makes python and extension sources installable (outputs to src/python/${name} in the install tree): Both Python and C++ extension sources get installed as downstreams need all of this in order to build a derived version of the API. * Exports sources targets (with our properties that make everything work) by converting them to INTERFACE libraries (which have export support), as recommended for the forseeable future by CMake devs. Renames custom properties to start with lower-case letter, as also recommended/required (groan). * Adds a ROOT_DIR argument to declare_mlir_python_extension since now all C++ sou... -
Kyungwoo Lee authored
In a LTO build, the `end_sequence` in debug_line table for each compile unit (CU) points the end of text section which merged all CUs. The `end_sequence` needs to point to the end of each CU's range. This bug often causes invalid `debug_line` table in the final `.dSYM` binary for MachO after running `dsymutil` which tries to compensate an out-of-range address of `end_sequence`. The fix is to sync the line table termination with the range operations that are already maintained in DwarfDebug. When CU or section changes, or nodebug functions appear or module is finished, the prior pending line table is terminated using the last range label. In the MC path where no range is tracked, the old logic is conservatively used to end the line table using the section end symbol. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D108261
-
Vitaly Buka authored
PTHREAD_STACK_MIN is not a constexpr
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
The last use was removed on Jan 13, 2020 in commit 533d650e.
-
Mircea Trofin authored
ProfileCount could model invalid values, but a user had no indication that the getCount method could return bogus data. Optional<ProfileCount> addresses that, because the user must dereference the optional. In addition, the patch removes concept duplication. Differential Revision: https://reviews.llvm.org/D113839
-
Chen Zheng authored
Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D113471
-