- Sep 24, 2021
-
-
Sanjay Patel authored
This is motivated by the examples and discussion in: https://llvm.org/PR51245 ...and related bugs. By using vector compares and vector logic, we can convert 2 'set' instructions into 1 'movd' or 'movmsk' and generally improve throughput/reduce instructions. Unfortunately, we don't have a complete vector compare ISA before AVX, so I left SSE-only out of this patch. Ie, we'd need extra logic ops to simulate the missing predicates for SSE 'cmpp*', so it's not as clearly a win. Differential Revision: https://reviews.llvm.org/D110342
-
Sanjay Patel authored
-
Louis Dionne authored
-
Kazu Hirata authored
-
Igor Kudrin authored
Refactor handleArgs() to use that method. Differential Revision: https://reviews.llvm.org/D110350
-
Paul Robinson authored
-
Sanjay Patel authored
This reverts commit bb9333c3. This exposes another existing bug that causes an infinite loop as shown in D110170 ...so reverting while I look at another fix.
-
Dmitry Vyukov authored
The stress test does various assorted things (memory accesses, function calls, atomic operations, thread creation/join, intercepted libc calls) in multiple threads just to stress various parts of the runtime. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D110416
-
Hans Wennborg authored
It caused compiler crashes, see comment on the code review for repro. > This is basically D108837 but for jump threading. Free instructions > should be ignored for the threading decision. JumpThreading already > skips some free instructions (like pointer bitcasts), but does not > skip various free intrinsics -- in fact, it currently gives them a > fairly large cost of 2. > > Differential Revision: https://reviews.llvm.org/D110290 This reverts commit 1e3c6fc7.
-
Dmitry Vyukov authored
Add a test for __tsan_flush_memory() and for background flushing of the runtime memory. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D110409
-
Nico Weber authored
This reverts commit 5ce89279. Makes clang crash, see comments on https://reviews.llvm.org/D109844
-
Frederic Cambus authored
In build_symbolizer.sh we can safely remove the -eu argument from the shebang (which is an unportable construct), as the scripts sets **-e** and **-u** already. Differential Revision: https://reviews.llvm.org/D110039
-
Cullen Rhodes authored
Identified in D109359. Reviewed By: uweigand Differential Revision: https://reviews.llvm.org/D109598
-
Michał Górny authored
Refactor Socket::DecodeHostAndPort() to use LLVM API over redundant LLDB API. In particular, this means llvm::Regex, llvm::Error return type and llvm::to_integer(). While at it, change the port type from int32_t to uint16_t. The method never returns any value outside this range, and using the correct type allows us to rely on getAsInteger()'s implicit overflow check. Differential Revision: https://reviews.llvm.org/D110391
-
David Sherwood authored
There are several places in the code that are currently broken where we assume an Instruction is always a member of a BasicBlock that lives in a Function. This is a problem specifically when attempting to get the vscale_range attribute. This patch adds checks that an Instruction's parent also has a parent! I've added a test for a function-less @llvm.vscale intrinsic call here: unittests/Analysis/ValueTrackingTest.cpp
-
Valentin Clement authored
Add support to create unique name for namelist group and be able to deconstruct them. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D110331 Co-authored-by:
Jean Perier <jperier@nvidia.com> Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Michał Górny authored
This reverts commit a6daf992. It causes buildbot regressions, I'll investigate.
-
Michał Górny authored
Refactor Socket::DecodeHostAndPort() to use LLVM API over redundant LLDB API. In particular, this means llvm::Regex, llvm::Error return type and llvm::to_integer(). While at it, change the port type from int32_t to uint16_t. The method never returns any value outside this range, and using the correct type allows us to rely on getAsInteger()'s implicit overflow check. Differential Revision: https://reviews.llvm.org/D110391
-
Jay Foad authored
In repairIntervalsInRange, if the new instructions refer to subregs but the old instructions did not, make sure any existing live interval for the superreg is updated to have subranges. Also skip repairing any range that we have recalculated from scratch, partly for efficiency but also to avoids some cases that repairOldRegInRange can't handle. The existing test/CodeGen/AMDGPU/twoaddr-regsequence.mir provides some test coverage for this change: when TwoAddressInstructionPass converts REG_SEQUENCE into subreg copies, the live intervals will now get subranges and MachineVerifier will verify that the subranges are correct. Unfortunately MachineVerifier does not complain if the subranges are not present, so the test also passed before this patch. This patch also fixes ~800 of the ~1500 failures in the whole CodeGen lit test suite when -early-live-intervals is forced on. Differential Revision: https://reviews.llvm.org/D110328
-
Jay Foad authored
The fix applied in D23303 "LiveIntervalAnalysis: fix a crash in repairOldRegInRange" was over-zealous. It would bail out when the end of the range to be repaired was in the middle of the first segment of the live range of Reg, which was always the case when the range contained a single def of Reg. This patch fixes it as suggested by Matthias Braun in post-commit review on the original patch, and tests it by adding -early-live-intervals to a selection of existing lit tests that now pass. (Note that D23303 was originally applied to fix a crash in SILoadStoreOptimizer, but that is now moot since D23814 updated SILoadStoreOptimizer to run before scheduling so it no longer has to update live intervals.) Differential Revision: https://reviews.llvm.org/D110238 Unrevert with some changes to the tests: - Add -verify-machineinstrs to check for remaining problems in live interval support in TwoAddressInstructionPass. - Drop test/CodeGen/AMDGPU/extract-load-i1.ll since it suffers from some of those remaining problems.
-
Joachim Meyer authored
They create a new vector with the list, so they can be const. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D110394
-
Arjun P authored
Add support for intersecting, subtracting, complementing and checking equality of sets having divisions. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D110138
-
Alex Zinenko authored
This canonicalization pattern complements the tensor.cast(pad_tensor) one in propagating constant type information when possible. It contributes to the feasibility of pad hoisting. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D110343
-
Congzhe Cao authored
When moving an entire basic block BB before InsertPoint, currently we check for all instructions whether the operands dominates InsertPoint, however, this can be improved such that even an operand does not dominate InsertPoint, as long as it appears as a previous instruction in the same BB, it is safe to move. Reviewed By: Whitney Differential Revision: https://reviews.llvm.org/D110378
-
Stephen Tozer authored
Fixes issue found on greendragon buildbot, in which an incorrectly indented statement following an if block led to entire frames being dropped instead of simply filtering unneeded watches. This reverts commit 1f44fa3a.
-
Denys Petrov authored
[analyzer] Retrieve a value from list initialization of constant array declaration in a global scope. Summary: Fix the point that we didn't take into account array's dimension. Retrieve a value of global constant array by iterating through its initializer list. Differential Revision: https://reviews.llvm.org/D104285 Fixes: https://bugs.llvm.org/show_bug.cgi?id=50604
-
David Spickett authored
This reverts commit 0c2a4548. This was my mistake. When gdb can find its data directory it'll import it automatically. If it can't (like when you're using a version from a build folder) you need to give it the data directory path. We're safe to assume gdb is installed for testing purposes so it'll import it for us.
-
Hsiangkai Wang authored
Add the tail policy argument to Clang builtins. There are two policies for tail elements. Tail agnostic means users do not care about the values in the tail elements and tail undisturbed means the values in the tail elements need to be kept after the operation. In order to let users control the tail policy, we add an additional argument at the end of the argument list. For unmasked operations, we have no maskedoff and the tail policy is always tail agnostic. If users want to keep tail elements under unmasked operations, they could use all one mask in the masked operations to do it. So, we only add the additional argument for masked operations for most cases. There are exceptions listed below. In this patch, we do not handle the following cases to reduce the complexity of the patch. There could be two separate patches for them. Use dest argument to control tail policy vmerge.vvm/vmerge.vxm/vmerge.vim (add _t builtins with additional dest argument) vfmerge.vfm (add _t builtins with additional dest argument) vmv.v.v (add _t builtins with additional dest argument) vmv.v.x (add _t builtins with additional dest argument) vmv.v.i (add _t builtins with additional dest argument) vfmv.v.f (add _t builtins with additional dest argument) vadc.vvm/vadc.vxm/vadc.vim (add _t builtins with additional dest argument) vsbc.vvm/vsbc.vxm (add _t builtins with additional dest argument) Always has tail argument for masked/unmasked intrinsics Vector Single-Width Integer Multiply-Add Instructions (add _t and _mt builtins) Vector Widening Integer Multiply-Add Instructions (add _t and _mt builtins) Vector Single-Width Floating-Point Fused Multiply-Add Instructions (add _t and _mt builtins) Vector Widening Floating-Point Fused Multiply-Add Instructions (add _t and _mt builtins) Vector Reduction Operations (add _t and _mt builtins) Vector Slideup Instructions (add _t and _mt builtins) Vector Slidedown Instructions (add _t and _mt builtins) Discussion: https://github.com/riscv/rvv-intrinsic-doc/pull/101 Differential Revision: https://reviews.llvm.org/D109322
-
Hsiangkai Wang authored
Add the tail policy argument to LLVM IR intrinsics. There are two policies for tail elements. Tail agnostic means users do not care about the values in the tail elements and tail undisturbed means the values in the tail elements need to be kept after the operation. In order to let users control the tail policy, we add an additional argument at the end of the argument list. For unmasked operations, we have no maskedoff and the tail policy is always tail agnostic. If users want to keep tail elements under unmasked operations, they could use all one mask in the masked operations to do it. So, we only add the additional argument for masked operations for most cases. There are exceptions listed below. In this patch, we do not handle the following cases to reduce the complexity of the patch. There could be two separate patches for them. * Use dest argument to control tail policy vmerge.vvm/vmerge.vxm/vmerge.vim (add _t builtins with additional dest argument) vfmerge.vfm (add _t builtins with additional dest argument) vmv.v.v (add _t builtins with additional dest argument) vmv.v.x (add _t builtins with additional dest argument) vmv.v.i (add _t builtins with additional dest argument) vfmv.v.f (add _t builtins with additional dest argument) vadc.vvm/vadc.vxm/vadc.vim (add _t builtins with additional dest argument) vsbc.vvm/vsbc.vxm (add _t builtins with additional dest argument) * Always has tail argument for masked/unmasked intrinsics Vector Single-Width Integer Multiply-Add Instructions (add _t and _mt builtins) Vector Widening Integer Multiply-Add Instructions (add _t and _mt builtins) Vector Single-Width Floating-Point Fused Multiply-Add Instructions (add _t and _mt builtins) Vector Widening Floating-Point Fused Multiply-Add Instructions (add _t and _mt builtins) Vector Reduction Operations (add _t and _mt builtins) Vector Slideup Instructions (add _t and _mt builtins) Vector Slidedown Instructions (add _t and _mt builtins) Discussion: https://github.com/riscv/rvv-intrinsic-doc/pull/101 Differential Revision: https://reviews.llvm.org/D105092
-
Simon Pilgrim authored
Testing on a SLM box suggests these can run on either port, but the throughput is 4cy on either (inc MMX versions). Confirmed with Intel AoM / Agner / InstLatX64.
-
Simon Pilgrim authored
Record is a SmallVector<uint64_t, 1024> - we really need to avoid passing this by value. Avoid unnecessary big copies, reported by coverity.
-
David Spickett authored
Earlier versions of GDB do not do this automatically. (from my checks 8.3 does not and 9.2 does)
-
David Sherwood authored
There are several places in the code that are currently broken as they assume an Instruction always has a parent Function when attempting to get the vscale_range attribute. This patch adds checks that an Instruction has a parent. I've added a test for a parentless @llvm.vscale intrinsic call here: unittests/Analysis/ValueTrackingTest.cpp Differential Revision: https://reviews.llvm.org/D110158
-
gbreynoo authored
This change is to keep the help text and command guide of objcopy in tandem. - In the help output the options --rename-section and --set-section-flags were missing the flag exclude, which is found in the command guide. - In the command guide the alias -G for --keep-global-symbol was missing, which is found in the help output. Differential Revision: https://reviews.llvm.org/D110340 -
Dmitri Gribenko authored
-
David Spickett authored
I found this after upgrading from Ubuntu bionic (gdb 8.1.1) to Focal (gdb 9.2). (where this test fails, but that's for a different patch) 9.2 allows you to set breakpoint commands from Python, which was added in 8.3. (bintutils a913fffbdee21fdd50e8de0596358be425775678 "Allow breakpoint commands to be set from Python") The reason this test never failed before was because it did so silently. "source <python file>" doesn't fail even if that script raises an Exception. To fix this extend the gdb lit feature to check that: * gdb exists * has Python support * allows you to set breakpoint commands Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D110334
-
Jonas Paulsson authored
The type legalizer has by default no method of doing this bitcast other than storing and reloading the value from stack. This patch implements a custom lowering of this operation using extractions of subregs (z13 and earlier using FP128 register pairs), or of vector elements (with 'vector enhancements 1' using VR128 FP registers). Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D110346
-
David Green authored
Instead of relying on many volatile loads/stores in a single function, rewrite the test to use separate functions as any other test would.
-
Matthias Springer authored
* Do not discard static result type information that cannot be inferred from lower/upper padding. * Add optional argument to `PadTensorOp::inferResultType` for specifying known result dimensions. Differential Revision: https://reviews.llvm.org/D110380
-
Petr Hosek authored
When statically linking C++ standard library, we shouldn't add -Bdynamic after including the library on the link line because that might override user settings like -static and -static-pie. Rather, we should surround the library with --push-state/--pop-state to make sure that -Bstatic only applies to C++ standard library and nothing else. This has been supported since GNU ld 2.25 (2014) so backwards compatibility should no longer be a concern. Differential Revision: https://reviews.llvm.org/D110128
-