- Oct 05, 2020
-
-
David Blaikie authored
-
Yuanfang Chen authored
This is one of the reason for extra invalidations in D84959. In practice, I don't think we have use cases needing this. This simplifies the pipeline a bit and prune corner cases when considering invalidations. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D85676
-
Yuanfang Chen authored
All uses of the file undef the macro already.
-
David Blaikie authored
Few places did this already - refactor them all into a common helper.
-
Fangrui Song authored
i.e. they cannot be unreachable from the entry (which usually indicate usage errors). This change allows the removal of some nullptr checks. Reviewed By: kuhar Differential Revision: https://reviews.llvm.org/D88758
-
Craig Topper authored
MWAITX doesn't touch EFLAGS so no pseudos should def EFLAGS. The SAVE_EBX/RBX pseudos only needs to def the EBX register that the expansion overwrites. The EAX and ECX registers are only read. The pseudo emitted during isel that is used by the custom inserter shouldn't have any implicit defs or uses since everything is in vregs.
-
Craig Topper authored
These are now emitted by a CustomInserter rather than using a custom inserter themselves.
-
Stephen Neuendorffer authored
This reverts commit e9b87f43. There are issues with macros generating macros without an obvious simple fix so I'm going to revert this and try something different.
-
Arthur Eubanks authored
Some new function parameter attributes are derived under NPM. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D88760
-
Roman Lebedev authored
[NFC][SCEV] Add a test with some patterns where we could treat inttoptr/ptrtoint as semi-transparent
-
David Blaikie authored
Make the dumper & API a bit more informative by using the new tombstone addresses to filter out or otherwise render more explicitly dead code ranges.
-
Nikita Popov authored
-
Mehdi Amini authored
This aligns the behavior with the standard call as well as the LLVM verifier. Reviewed By: ftynse, dcaballe Differential Revision: https://reviews.llvm.org/D88362
-
Nikita Popov authored
Apparently querying dereferenceability of array allocations is being intentionally penalized (https://reviews.llvm.org/D41398), so avoid using them in tests.
-
Martin Storsjö authored
This file seems to have been accidentally added as part of commit 413577a8.
-
Fangrui Song authored
-
LLVM GN Syncbot authored
-
Craig Topper authored
For the wide builtins, pass a single input and output pointer to the builtins. Emit the GEPs and input loads from CGBuiltin.
-
Craig Topper authored
We were taking multiple pointer arguments in the builtin. gcc accepts a single void*. The cast from void* to _m128i* caused the IR generation to assume the pointer was aligned. Instead make the builtin take a single void*, emit i8* GEPs to adjust then cast to <2 x i64>* and perform a store with align of 1.
-
Craig Topper authored
-
Craig Topper authored
[X86] Consolidate wide Key Locker intrinsics into the same header as the other Key Locker intrinsics.
-
Florian Hahn authored
This adds a helper to convert a VPRecipeBase pointer to a VPUser, for recipes that inherit from VPUser. Once VPRecipeBase directly inherits from VPUser this helper can be removed.
-
Florian Hahn authored
Make sure we do not iterate using an invalid iterator. Another small fix/step towards traversing the def-use chains in VPlan.
-
Roman Lebedev authored
-
Esme-Yi authored
Summary: This patch implements the builtins for xvtdivdp, xvtdivsp, xvtsqrtdp, xvtsqrtsp. The instructions correspond to the following builtins: int vec_test_swdiv(vector double v1, vector double v2); int vec_test_swdivs(vector float v1, vector float v2); int vec_test_swsqrt(vector double v1); int vec_test_swsqrts(vector float v1); This patch depends on D88274, which fixes the bug in copying from CRRC to GPRC/G8RC. Reviewed By: steven.zhang, amyk Differential Revision: https://reviews.llvm.org/D88278
-
- Oct 04, 2020
-
-
Sanjay Patel authored
In the motivating case from https://llvm.org/PR47517 we create a node that does not get constant folded before getNegatedExpression is attempted from some other node, and we crash. By moving the fold into SelectionDAG::simplifyFPBinop(), we get the constant fold sooner and avoid the problem.
-
Nikita Popov authored
The case of a destination read between call and memcpy was not covered anywhere (but is handled correctly). However, a potentially throwing call between the call and the memcpy appears to be miscompiled.
-
Simon Pilgrim authored
Preliminary patch for the next stage of PR45974 - we don't want to be creating 'padded' vectors on-the-fly at all in combineX86ShufflesRecursively, and only pad the source inputs if we have a definite match inside combineX86ShuffleChain. This means that the inputs to combineX86ShuffleChain might soon be smaller than the final root value type, so we should ensure that isTargetShuffleEquivalent only matches with the inputs if they are the correct size.
-
Anatoly Parshintsev authored
[10/11] patch series to port ASAN for riscv64 Depends On D87580 Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D87581
-
Mark de Wever authored
Bruno De Fraine discovered some issues with D85091. The branch weights generated for `logical not` and `ternary conditional` were wrong. The `logical and` and `logical or` differed from the code generated of `__builtin_predict`. Adjusted the generated code for the likelihood to match `__builtin_predict`. The patch is based on Bruno's suggestions. Differential Revision: https://reviews.llvm.org/D88363
-
Alexey Baturo authored
[9/11] patch series to port ASAN for riscv64 Depends On D87579 Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D87580
-
Roman Lebedev authored
I have stumbled into this pretty accidentally, when rewriting some spaghetti-like code into something more structured, which involved using some `std::array<>`s. And to my surprise, the `alloca`s remained, causing about `+160%` perf regression. https://llvm-compile-time-tracker.com/compare.php?from=bb6f4d32aac3eecb51909f4facc625219307ee68&to=d563e66f40f9d4d145cb2050e41cb961e2b37785&stat=instructions suggests that this has geomean compile-time cost of `+0.08%`. Note that D68593 / cecc0d27 already did this chage for NewPM, but left OldPM in a pessimized state. This fixes [[ https://bugs.llvm.org/show_bug.cgi?id=40011 | PR40011 ]], [[ https://bugs.llvm.org/show_bug.cgi?id=42794 | PR42794 ]] and probably some other reports. Reviewed By: nikic, xbolva00 Differential Revision: https://reviews.llvm.org/D87972
-
Alexey Baturo authored
[8/11] patch series to port ASAN for riscv64 Depends On D87577 Reviewed By: eugenis, vitalybuka Differential Revision: https://reviews.llvm.org/D87579
-
Jonas Devlieghere authored
This is failing on GreenDragon: http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/24066/
-
Craig Topper authored
-
Craig Topper authored
This removes FIXMEs from selectAddr.
-
Craig Topper authored
We should avoid emitting MachineSDNodes from lowering. We can use the the implicit def handling in InstrEmitter to avoid manually copying from each xmm result register. We only need to manually emit the copies for the implicit uses.
-
Craig Topper authored
[X86] Remove X86ISD::MWAITX_DAG. Just match the intrinsic to the custom inserter pseudo instruction during isel.
-
Stephen Neuendorffer authored
New projects (particularly out of tree) have a tendency to hijack the existing llvm configuration options and build targets (add_llvm_library, add_llvm_tool). This can lead to some confusion. 1) When querying a configuration variable, do we care about how LLVM was configured, or how these options were configured for the out of tree project? 2) LLVM has lots of defaults, which are easy to miss (e.g. LLVM_BUILD_TOOLS=ON). These options all need to be duplicated in the CMakeLists.txt for the project. In addition, with LLVM Incubators coming online, we need better ways for these incubators to do things the "LLVM way" without alot of futzing. Ideally, this would happen in a way that eases importing into the LLVM monorepo when projects mature. This patch creates some generic infrastructure in llvm/cmake/modules and refactors MLIR to use this infrastructure. This should expand to include add_xxx_library, which is by far the most complicated bit of building a project correctly, since it has to deal with lots of shared library configuration bits. (MLIR currently hijacks the LLVM infrastructure for building libMLIR.so, so this needs to get refactored anyway.) Differential Revision: https://reviews.llvm.org/D85140
-
Craig Topper authored
Instead of emitting MachineSDNodes during lowering, emit X86ISD opcodes. These opcodes will either be selected by tablegen patterns or custom selection code. Emitting MachineSDNodes during lowering is uncommon so this makes things more consistent. It also allows selectAddr to be called to perform address matching during instruction selection. I had trouble getting tablegen to accept XMM0-XMM7 as results in an isel pattern for the WIDE instructions so I had to use custom instruction selection.
-