- Aug 18, 2021
-
-
Fraser Cormack authored
This patch adds vector-predicated ("VP") reduction intrinsics corresponding to each of the existing unpredicated `llvm.vector.reduce.*` versions. Unlike the unpredicated reductions, all VP reductions have a start value. This start value is returned when the no vector element is active. Support for expansion on targets without native vector-predication support is included. This patch is based on the ["reduction slice"](https://reviews.llvm.org/D57504#1732277) of the LLVM-VP reference patch (https://reviews.llvm.org/D57504). Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D104308 -
Siva Chandra Reddy authored
The current x86_64 implementations do not build on the windows bot machine. We will enable them back after fixing the problem.
-
Joseph Huber authored
This patch adds an extra option to print the module after running one of the OpenMPOpt passes if debugging is enabled. This makes it much easier to inspect the effects of this pass when doing debugging. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D108146
-
Philip Reames authored
his is a fix for PR43678, and is an alternate patch to D105723. The basic issue we're running into is that LSR + SCEVExpander are moving the very instruction whose operand we're in the process of expanding. This breaks the subtle and ill-documented invariant which let LSR work. (Full story can be found here: https://reviews.llvm.org/D105723#2878473) Rather than attempting a fix, this change just removes the optimization entirely. The code is entirely untested, and removing it appears to have no impact I can find. This code was added back in 2014 by 1e12f856 with a single test which does not seem to actually test the hoisting logic. From a philosophical standpoint, it also seems very strange to have the expander implementing optimizations which should live in a dedicated transform pass. Differential Revision: https://reviews.llvm.org/D106178
-
Denys Petrov authored
Summary: Change and replace some functions which IE does not support. This patch is made as a continuation of D92928 revision. Also improve hot keys behavior. Differential Revision: https://reviews.llvm.org/D107366
-
Fangrui Song authored
Similar to D94907 (llvm-nm -D). The output will match GNU objdump 2.37. Older versions don't use ` (version)` for undefined symbols. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D108097
-
MaheshRavishankar authored
Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D108182
-
Fangrui Song authored
The utility can be reused by llvm-objdump -T. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D108096
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D108144
-
- Aug 17, 2021
-
-
Roman Lebedev authored
Broadcast is not worse than extract+insert of subvector. https://godbolt.org/z/aPq98G6Yh Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D105390
-
Michael Kruse authored
The loop had no side-effect since first committed in 642594ae. While it is obvious what was intended, the code seems to never trigger.
-
Kostya Kortchinsky authored
Enable `-Wformat` again, and fix the offending instances. Differential Revision: https://reviews.llvm.org/D108168
-
Louis Dionne authored
As explained in http://eel.is/c++draft/range.nonprop.cache#note-1, we should allow copy and move elision to happen when calling emplace_deref in non-propagating-cache. Before this change, the only way to emplace into the non-propagating-cache was to call `__set(*it)`, which materialized `*it` when binding it to the reference argument of `__set` and disabled move elision. As a fly-by change, this also renames `__set` to `__emplace` for consistency and adds tests for it. Differential Revision: https://reviews.llvm.org/D107932
-
Marco Elver authored
Some compilers started complaining about the test: tsan_trace_test.cpp:128:21: error: missing field 'type' initializer Fix it by initializing all 5 fields, even though the type field will be reset in the for loop. Differential Revision: https://reviews.llvm.org/D108207
-
Tozer authored
Fixes issue: https://bugs.llvm.org/show_bug.cgi?id=47983 The AsmLexer currently has an issue with lexing line comments in files with CRLF line endings, in which it reads the carriage return as being part of the line comment. This causes an error for certain valid comment layouts; this patch fixes this by excluding the carriage return from the line comment. Differential Revision: https://reviews.llvm.org/D90234
-
Louis Dionne authored
-
Kazu Hirata authored
The corresponding definition was removed on Nov 29, 2016 in commit 5a0a2e64.
-
Jinsong Ji authored
AIX may use cat_64 for 64 bit cat, this is just update the lit test to accept the name as well. Reviewed By: #powerpc, shchenz Differential Revision: https://reviews.llvm.org/D108149
-
Dylan Fleming authored
Removed AArch64 usage of the getMaxVScale interface, replacing it with the vscale_range(min, max) IR Attribute. Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D106277
-
Louis Dionne authored
Adjust the names of helper function objects to represent better what they do, as suggested in the review of D107098.
-
David Green authored
This enables subreg liveness in the arm backend when MVE is present, which allows the register allocator to detect when subregister are alive/dead, compared to only acting on full registers. This can helps produce better code on MVE with the way MQPR registers are made up of SPR registers, but is especially helpful for MQQPR and MQQQQPR registers, where there are very few "registers" available and being able to split them up into subregs can help produce much better code. Differential Revision: https://reviews.llvm.org/D107642
-
David Green authored
As a part of D107642, this adds pseudo instructions for MQQPR and MQQQQPR register classes, that can spill and reloads entire registers whilst keeping them combined, not splitting them into multiple D subregs that a VLDMIA/VSTMIA would use. This can help certain analyses, and helps to prevent verifier issues with subreg liveness.
-
Sanjay Patel authored
-
Sanjay Patel authored
If both operands are negated, we can invert the min/max and do the negation after: smax (neg nsw X), (neg nsw Y) --> neg nsw (smin X, Y) smin (neg nsw X), (neg nsw Y) --> neg nsw (smax X, Y) This is visible as a remaining regression in D98152. I don't see a way to generalize this for 'unsigned' or adapt Negator to handle it. This only appears to be safe with 'nsw': https://alive2.llvm.org/ce/z/GUy1zJ Differential Revision: https://reviews.llvm.org/D108165
-
Sanjay Patel authored
-
Sebastian Neubauer authored
Combine two G_PTR_ADDs, but keep the register bank of the constant. That way, the combine can be used in post-regbank-select combines. Introduce two helper methods in CombinerHelper, getRegBank and setRegBank that get and set an optional register bank to a register. That way, they can be used before and after register bank selection. Differential Revision: https://reviews.llvm.org/D103326
-
Raphael Isemann authored
LLDB is using LLVM's target-specific disassembler which is only available when the respective LLVM target has been enabled in the build config. This patch just skips the test if there is no arm64 target (and its disassembler) available in the current build config. Reviewed By: jasonmolenda Differential Revision: https://reviews.llvm.org/D108145
-
Tiehu Zhang authored
In current implementation, the instruction to be sunk will be inserted before the target instruction without considering the def-use tree, which may case Instruction does not dominate all uses error. We need to choose a suitable location to insert according to the use chain Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D107262
-
Jeremy Morse authored
This reapplies 54a61c94, its follow up in 547b7125, which were reverted 95fe61e6. Original commit message: VarLoc based LiveDebugValues will abandon variable location propagation if there are too many blocks and variable assignments in the function. If it didn't, and we had (say) 1000 blocks and 1000 variables in scope, we'd end up with 1 million DBG_VALUEs just at the start of blocks. Instruction-referencing LiveDebugValues should honour this limitation too (because the same limitation applies to it). Hoist the relevant command line options into LiveDebugValues.cpp and pass it down into the implementation classes as an argument to ExtendRanges. I've duplicated all the run-lines in live-debug-values-cutoffs.mir to have an instruction-referencing flavour. Differential Revision: https://reviews.llvm.org/D107823
-
Simon Pilgrim authored
Improves on the unused variable fix from rG43575620
-
Anton Afanasyev authored
Add `shl` instruction to the DAG post-dominated by `trunc`, allowing TruncInstCombine to reduce bitwidth of expressions containing left shifts. The only thing we need to check is that the target bitwidth must be wider than the maximal shift amount: https://alive2.llvm.org/ce/z/AwArqu Part of https://reviews.llvm.org/D107766 Differential Revision: https://reviews.llvm.org/D108091
-
Anton Afanasyev authored
Precommit test for D107766/D108091. Also move fixed test for PR50555 from SLPVectorizer/X86/ to PhaseOrdering/X86/ subdirectory.
-
Florian Mayer authored
They were previously unconstrained, which allowed them to be reordered before the shadow memory write. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D107901
-
PeixinQiao authored
Initial commit test.
-
Tobias Gysi authored
Remove duplicate methods used to check iterator types. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D108102
-
Bing1 Yu authored
There is some discussion on the bitcast for vector and x86_amx at https://reviews.llvm.org/D99152. This patch is to introduce a x86 specific cast for vector and x86_amx, so that it can avoid some unnecessary optimization by middle-end. On the other way, we have to optimize the x86 specific cast by ourselves. This patch also optimize the cast operation to eliminate redundant code. Reviewed By: LuoYuanke Differential Revision: https://reviews.llvm.org/D107544
-
David Stuttard authored
Make sure return type is int type. Differential Revision: https://reviews.llvm.org/D108131 Change-Id: Ic02f07d1234cd51b6ed78c3fecd2cb1d6acd5644
-
Andrzej Warzynski authored
This patch refactors the `FrontendAction` class. It merely moves code around so that re-using it is easier. No new functionality is introduced. 1. Three new member methods are introduced: `RunPrescan`, `RunParse`, `RunSemanticChecks`. 2. The following free functions are re-implemented as member methods: * `reportFatalSemanticErrors` * `reportFatalScanningErrors` * `reportFatalParsingErrors` * `reportFatalErrors` `reportFatalSemanticErrors` is updated to resemble the other error reporting functions and to make the API more consistent. 3. The `BeginSourceFileAction` methods are simplified and the unused input argument is deleted. Differential Revision: https://reviews.llvm.org/D108130
-