- Feb 16, 2021
-
-
Duncan P. N. Exon Smith authored
This commit fixes how metadata is handled in CloneModule to be sound, and improves how it's handled in CloneFunctionInto (although the latter is still awkward when called within a module). Ruiling Song pointed out in PR48841 that CloneModule was changed to unsoundly use the RF_ReuseAndMutateDistinctMDs flag (renamed in fa35c1f8 for clarity). This flag papered over a crash caused by other various changes made to CloneFunctionInto over the past few years that made it unsound to use cloning between different modules. (This commit partially addresses PR48841, fixing the repro from preprocessed source but not textual IR. MDNodeMapper::mapDistinctNode became unsound in df763188 and this commit does not address that regression.) RF_ReuseAndMutateDistinctMDs is designed for the IRMover to use, avoiding unnecessary clones of all referenced metadata when linking bet...
-
Benjamin Kramer authored
This restores the behavior before 964f8103, which broke 2 tests: LLVM :: tools/llvm-lto2/X86/pipeline.ll lld :: ELF/lto/ltopasses-custom.ll
-
Stanislav Mekhanoshin authored
We are using AtomicNoRet map in multiple places to determine if an instruction atomic, rtn or nortn atomic. This method does not work always since we have some instructions which only has rtn or nortn version. One such instruction is ds_wrxchg_rtn_b32 which does not have nortn version. This has caused changes in memory legalizer tests. Differential Revision: https://reviews.llvm.org/D96639
-
Fangrui Song authored
The few options are niche. They solved a problem which was traditionally solved with more shell commands (`llvm-readelf -n` fetches the Build ID. Then `ln` is used to hard link the file to a directory derived from the Build ID.) Due to limitation, they are no longer used by Fuchsia and they don't appear to be used elsewhere (checked with Google Search and Debian Code Search). So delete them without a transition period. Announcement: https://lists.llvm.org/pipermail/llvm-dev/2021-February/148446.html Differential Revision: https://reviews.llvm.org/D96310
-
Johannes Doerfert authored
Even code in target and declare target regions might not be emitted. With this patch we delay more diagnostics and use laziness and linkage to determine if a function is emitted (for the device). Note that we still eagerly emit diagnostics for target regions, unfortunately, see the TODO for the reason. This hopefully fixes PR48933. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D95928
-
Johannes Doerfert authored
Type errors in function declarations were not (always) diagnosed prior to this patch. Furthermore, certain remarks did not get associated properly which caused them to be emitted multiple times. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D95912
-
Johannes Doerfert authored
This will highlight the effective changes in subsequent commits. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D95903
-
Adrian Prantl authored
This patch enables AsmPrinter support for complex expression with entry values. It shouldn't AsmPrinter's call whether these are safe or not but the pass who introduces the DW_OP_LLVM_entry_value. This patch on its own has no effect on clang. Differential Revision: https://reviews.llvm.org/D96559
-
Fangrui Song authored
Announcement: https://lists.llvm.org/pipermail/llvm-dev/2021-February/148446.html Differential Revision: https://reviews.llvm.org/D96360
-
Jacques Pienaar authored
Allow clients to create a new ShapedType of the same "container" type but with different element or shape. First use case is when refining shape during shape inference without needing to consider which ShapedType is being refined. Differential Revision: https://reviews.llvm.org/D96682
-
Sam McCall authored
This is NFC because the MessageHandler refused to dispatch to them until the server is initialized anyway. This is a more natural time to bind them - it's when they become callable, and it's when client capabalities are available and server ones can be set. One module-lifecycle function will be responsible for all three. Differential Revision: https://reviews.llvm.org/D96608
-
Simon Pilgrim authored
This will be necessary for the update of D25987 where we'll need to match OpLHS against other ops.
-
Mircea Trofin authored
-
Florian Hahn authored
This patch adjusts the placement of the bundle unpacking to just before code emission. In particular, this means bundle unpacking happens AFTER the machine outliner. With the previous position, the machine outliner may outline parts of a bundle, which breaks them up. This is an issue for BLR_RVMARKER handling, as illustrated by the rvmarker-pseudo-expansion-and-outlining.mir test case. The machine outliner should not break up the bundles created during pseudo expansion. This should fix PR49082. Reviewed By: SjoerdMeijer Differential Revision: https://reviews.llvm.org/D96294
-
- Feb 15, 2021
-
-
Caroline Concatto authored
-
David Green authored
This adds basic MVE costs for SMIN/SMAX/UMIN/UMAX, as well as MINNUM and MAXNUM representing fmin and fmax. It tightens up the costs, not using a ICmp+Select cost. Differential Revision: https://reviews.llvm.org/D96603
-
Tres Popp authored
This corresponds with the previous work to make shape.broadcast nary. Additionally, simplify the ConvertShapeConstraints pass. It now doesn't lower an implicit shape.is_broadcastable. This is still the same in combination with shape-to-standard when the 2 passes are used in either order. Differential Revision: https://reviews.llvm.org/D96401
-
James Henderson authored
Differential Revision: https://reviews.llvm.org/D96502 Reviewed by: aprantl
-
Caroline Concatto authored
This patch uses the function getShuffleCost with SK_Reverse to compute the cost for experimental.vector.reverse. For scalable vector type, it adds a table will the legal types on AArch64TTIImpl::getShuffleCost to not assert in BasicTTIImpl::getShuffleCost, and for fixed vector, it relies on the existing cost model in BasicTTIImpl. Depends on D94883 Differential Revision: https://reviews.llvm.org/D95603
-
James Henderson authored
Differential Revision: https://reviews.llvm.org/D96500 Reviewed by: aprantl
-
James Henderson authored
LLVM has a minimum requirement of python 3.6 now, and Python is explicitly checked for in the LLVM CMakeLists.txt, so this check is no longer needed here. Differential Revision: https://reviews.llvm.org/D96499 Reviewed by: aprantl
-
Simon Pilgrim authored
Noticed by @pengfei on D96703
-
Alex Zinenko authored
-
James Henderson authored
Some of these options have a degree of incidental coverage, or are for Mach-O only. This patch adds dedicated ELF (where applicable) coverage. Differential Revision: https://reviews.llvm.org/D96602 Reviewed by: rupprecht, Higuoxing
-
James Henderson authored
This adds colons to separate the file name from the message, removes a duplicate space, and removes a trailing full stop from some messages. These help bring the error messages into line with other tools, as well as making all llvm-nm message more self-consistent. Differential Revision: https://reviews.llvm.org/D96601 Reviewed by: Higuoxing, rupprecht, MaskRay
-
Kirill Bobyrev authored
* Use static variables instead of non-trivially destructible global ones. * Remove unused header. Differential Revision: https://reviews.llvm.org/D91600
-
Kerry McLaughlin authored
Currently, setting the `no-nans-fp-math` attribute to true will allow loops with fmin/fmax to vectorize, though we should be requiring that `no-signed-zeros-fp-math` is also set. This patch adds the check for no-signed-zeros at the function level and includes tests to make sure we don't vectorize functions with only one of the attributes associated. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D96604
-
Simon Pilgrim authored
VectorTyID was replaced with FixedVectorTyID and ScalableVectorTyID
-
Alex Zinenko authored
Port the translation of five dialects that define LLVM IR intrinsics (LLVMAVX512, LLVMArmNeon, LLVMArmSVE, NVVM, ROCDL) to the new dialect interface-based mechanism. This allows us to remove individual translations that were created for each of these dialects and just use one common MLIR-to-LLVM-IR translation that potentially supports all dialects instead, based on what is registered and including any combination of translatable dialects. This removal was one of the main goals of the refactoring. To support the addition of GPU-related metadata, the translation interface is extended with the `amendOperation` function that allows the interface implementation to post-process any translated operation with dialect attributes from the dialect for which the interface is implemented regardless of the operation's dialect. This is currently applied to "kernel" functions, but can be used to construct other metadata in dialect-specific ways without necessarily affecting operations. Depends On D96591, D96504 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D96592
-
Caroline Concatto authored
This patch adds a new intrinsic experimental.vector.reduce that takes a single vector and returns a vector of matching type but with the original lane order reversed. For example: ``` vector.reverse(<A,B,C,D>) ==> <D,C,B,A> ``` The new intrinsic supports fixed and scalable vectors types. The fixed-width vector relies on shufflevector to maintain existing behaviour. Scalable vector uses the new ISD node - VECTOR_REVERSE. This new intrinsic is one of the named shufflevector intrinsics proposed on the mailing-list in the RFC at [1]. Patch by Paul Walker (@paulwalker-arm). [1] https://lists.llvm.org/pipermail/llvm-dev/2020-November/146864.html Differential Revision: https://reviews.llvm.org/D94883
-
Valeriy Savchenko authored
-
David Green authored
Currently the findIncDecAfter will only look at the next instruction for post-inc candidates in the load/store optimizer. This extends that to a search through the current BB, until an instruction that modifies or uses the increment reg is found. This allows more post-inc load/stores and ldm/stm's to be created, especially in cases where a schedule might move instructions further apart. We make sure not to look any further for an SP, as that might invalidate stack slots that are still in use. Differential Revision: https://reviews.llvm.org/D95881
-
Yashaswini authored
Implementation of Do loop iteration variable check, Do while loop check, Do loop cycle restrictions. Also to check whether the ordered clause is present on the loop construct if any ordered region ever binds to a loop region arising from the loop construct. Files: check-omp-structure.h check-omp-structure.cpp resolve-directives.cpp Testcases: omp-do06-positivecases.f90 omp-do06.f90 omp-do08.f90 omp-do09.f90 omp-do10.f90 omp-do11.f90 omp-do12.f90 omp-do13.f90 omp-do14.f90 omp-do15.f90 omp-do16.f90 omp-do17.f90 Reviewed by: Kiran Chandramohan @kiranchandramohan , Valentin Clement @clementval Differential Revision: https://reviews.llvm.org/D92732
-
Adhemerval Zanella authored
Reinstate D90628 since the fix done by D96337 does not change the outcome of the https://bugs.llvm.org/show_bug.cgi?id=48052
-
Michał Górny authored
Differential Revision: https://reviews.llvm.org/D96557
-
Michał Górny authored
The new FreeBSDRemote plugin has reached feature parity with the legacy plugin, so we can finally remove the latter. The new plugin will be renamed to FreeBSD in a separate commit to avoid confusion. Differential Revision: https://reviews.llvm.org/D96555
-
Simon Pilgrim authored
update_llc_test_checks.py isn't reporting when we don't have a usable prefix for a particular run any more - so we lost all AVX2 testing!
-
Simon Pilgrim authored
Before we start removing combineSubToSubus (PR40111) - make sure we have actually have test coverage for SUB(X,TRUNC(UMIN(ZEXT(X),Y))) -> USUBSAT(X,TRUNC(UMIN(Y,C)))) patterns
-
Sjoerd Meijer authored
This reverts commit effc3b07, with the build problem fixed.
-
Max Kazantsev authored
Loop canonicalization may end up deleting blocks from CFG. And Scalar Evolution may still keep cached referenced to those blocks unless updated properly.
-