- Jul 17, 2021
-
-
Fangrui Song authored
-
Dmitry Vyukov authored
Semaphore is a portable way to park/unpark threads. The plan is to use it to implement a portable blocking mutex in subsequent changes. Semaphore can also be used to efficiently wait for other things (e.g. we currently spin to synchronize thread creation and start). Reviewed By: vitalybuka, melver Differential Revision: https://reviews.llvm.org/D106071
-
Philip Reames authored
-
Guozhi Wei authored
This patch transforms the sequence lea (reg1, reg2), reg3 sub reg3, reg4 to two sub instructions sub reg1, reg4 sub reg2, reg4 Similar optimization can also be applied to LEA/ADD sequence. The modifications to TwoAddressInstructionPass is to ensure the operands of ADD instruction has expected order (the dest register of LEA should be src register of ADD). Differential Revision: https://reviews.llvm.org/D104684 -
Philip Reames authored
-
Fangrui Song authored
-
Jon Roelofs authored
This reverts commit dd57ba1a. It broke some tests: http://45.33.8.238/linux/51314/step_12.txt
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Add an assertion that we've calling MaskedElementsAreZero with a vector op and that the DemandedElts arg is a matching width. Makes the error a lot easier to grok when something else accidentally gets used.
-
Jon Roelofs authored
Differential revision: https://reviews.llvm.org/D105953
-
Craig Topper authored
[RISCV] Teach constant materialization that it can use zext.w at the end with Zba to reduce number of instructions. If the upper 32 bits are zero and bit 31 is set, we might be able to use zext.w to fill in the zeros after using an lui and/or addi. Most of this patch is plumbing the subtarget features into the constant materialization. Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D105509
-
Craig Topper authored
This is at the end of the switch so doesn't cause any issues now, but if a new case is added it will break.
-
Nikita Popov authored
As suggested on D105733, this adds a verifier rule that calls to intrinsics must match the signature of the intrinsic. Without opaque pointers this is automatically enforced for all calls, because the pointer types need to match. If the signatures don't match, a pointer bitcast has to be inserted. For intrinsics in particular, such bitcasts are not legal, because the address of intrinsics cannot be taken. With opaque pointers, there are no more pointer bitcasts, so it's generally possible for the call and the callee signature to differ. However, for intrinsics we still want to enforce that the signatures must match, the same as was done before through the address taken check. We can't enforce this more generally for non-intrinsics, because calls with mismatched signatures at the very least can legally occur in unreachable code, and might also be valid in some other cases, depending on how exactly the signatures differ. Differential Revision: https://reviews.llvm.org/D106013
-
madhur13490 authored
Differential Revision: https://reviews.llvm.org/D106161
-
Christopher Di Bella authored
* <__algorithm/iter_swap.h> * <__algorithm/swap_ranges.h> * <__functional/is_transparent.h> * <__memory/uses_allocator.h> * <__ranges/drop_view.h> * <__ranges/transform_view.h> * <shared_mutex> * <span> Also updates header inclusions that were affected. **NOTE:** This is a proper subset of D105932. Since the content has already been LGTM'd, I intend to merge this patch without review, pending green CI. I decided it would be better to move these changes into their own commit since the former patch has undergone further changes and will need yet another light review. In the event any of that gets rolled back (for whatever reason), the changes in this patch won't be affected. Differential Revision: https://reviews.llvm.org/D106040
-
Andrzej Warzynski authored
In the `flang` bash script, we need to be careful _when_ to use <output> from `flang -c -o <output> <input>` when generating the relocatable output file name. In particular, we should use it in this case: ```compilation only flang -c -o <output> <input> ``` but leave it for the final executable here: ```compile, assemble and link flang -o <output> <input> ``` This change is implemented in `get_relocatable_name`. I've also taken the liberty to fix how errors from sub-commands are reported (without this change, `flang` always returns `0` on failure). This is implemented in `main`. Differential Revision: https://reviews.llvm.org/D105896
-
- Jul 16, 2021
-
-
Congzhe Cao authored
We already know that we need to check whether lcssa phis are supported in inner loop exit block or in outer loop exit block, and we have logic to check them already. Presumably the inner loop latch does not have lcssa phis and there is no code that deals with lcssa phis in the inner loop latch. However, that assumption is not true, when we have loops with more than two-level nesting. This patch adds checks for lcssa phis in the inner latch. Reviewed By: Whitney Differential Revision: https://reviews.llvm.org/D102300
-
Louis Dionne authored
-
Matt Arsenault authored
NFC here since it's just using a scalar anyway.
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Louis Dionne authored
This makes sure that even if a node goes down, the BuildKite agent will be started again when it goes back up.
-
Alexander Belyaev authored
-
Geoffrey Martin-Noble authored
This has been deprecated for a while. There are no users in tree and I'm not aware of any out of tree users either. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D106114
-
Masoud Ataei authored
is needed be enable on P8 and later targets. Differential Revision: https://reviews.llvm.org/D106091
-
Louis Dionne authored
Instead of using TARGET_TRIPLE, which is always set to LLVM_DEFAULT_TARGET_TRIPLE, use that variable directly to populate the various XXXX_TARGET_TRIPLE variables in the runtimes. This re-applies 77396bbc and 5099e015, which were reverted in 850b57c5 because they broke the build. Differential Revision: https://reviews.llvm.org/D106009
-
Amy Kwan authored
This patch includes the following updates to the load/store refactoring effort introduced in D93370: - Update various VSX patterns that use to "force" an XForm, to instead just XForm. This allows the ability for the patterns to compute the most optimal addressing mode (and to produce a DForm instruction when possible) - Update pattern and test case for the LXVD2X/STXVD2X intrinsics - Update LIT test cases that use to use the XForm instruction to use the DForm instruction Differential Revision: https://reviews.llvm.org/D95115
-
Fraser Cormack authored
This reverts commit a6ca88e9. More caution is required to avoid overflow/underflow. Thanks to the santizers for catching this.
-
David Spickett authored
PackTags is used by to compress tags to go in the QMemTags packet and be passed to ptrace when writing memory tags. The behaviour of RepeatTagsForRange matches that described for QMemTags in the GDB documentation: https://sourceware.org/gdb/current/onlinedocs/gdb/General-Query-Packets.html#General-Query-Packets In addition, unpacking tags with number of tags 0 now means do not check that number of tags matches the range. This will be used by lldb-server to unpack tags before repeating them to fill the requested range. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D105179
-
Alex Zinenko authored
-
Alex Zinenko authored
The dialect-specific cast between builtin (ex-standard) types and LLVM dialect types was introduced long time before built-in support for unrealized_conversion_cast. It has a similar purpose, but is restricted to compatible builtin and LLVM dialect types, which may hamper progressive lowering and composition with types from other dialects. Replace llvm.mlir.cast with unrealized_conversion_cast, and drop the operation that became unnecessary. Also make unrealized_conversion_cast legal by default in LLVMConversionTarget as the majority of convesions using it are partial conversions that actually want the casts to persist in the IR. The standard-to-llvm conversion, which is still expected to run last, cleans up the remaining casts standard-to-llvm conversion, which is still expected to run last, cleans up the remaining casts Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D105880
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Matt Arsenault authored
This avoids relying on G_EXTRACT on unusual types, and also properly decomposes structs into multiple registers. This also preserves the LLTs in the memory operands.
-
Jeremy Morse authored
If you attach __attribute__((optnone)) to a function when using optimisations, that function will use fast-isel instead of the usual SelectionDAG method. This is a problem for instruction referencing, because it means DBG_VALUEs of virtual registers will be created, triggering some safety assertions in LiveDebugVariables. Those assertions exist to detect exactly this scenario, where an unexpected piece of code is generating virtual register references in instruction referencing mode. Fix this by transforming the DBG_VALUEs created by fast-isel into half-formed DBG_INSTR_REFs, after which they get patched up in finalizeDebugInstrRefs. The test modified adds a fast-isel mode to the instruction referencing isel test. Differential Revision: https://reviews.llvm.org/D105694
-
Sanjay Patel authored
More coverage for D105730
-
serge-sans-paille authored
This fixes bug 36064 Differential Revision: https://reviews.llvm.org/D106093
-
Dmitry Preobrazhensky authored
Added isCall for S_CALL_B64; added isBranch for S_SUBVECTOR_LOOP_*. Differential Revision: https://reviews.llvm.org/D106072
-
Zarko Todorovski authored
https://reviews.llvm.org/D105659 implements ByVal handling in llc but some cases are not compatible with existing XL compiler on AIX. Adding a clang warning for such cases. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D105660
-
Alexander Belyaev authored
RFC: https://llvm.discourse.group/t/rfc-reshape-ops-restructuring/3310 Differential Revision: https://reviews.llvm.org/D106141
-