- Dec 13, 2020
-
-
Nikita Popov authored
CVP currently handles switches by checking an equality predicate on all edges from predecessor blocks. Of course, this can only work if the value being switched over is defined in a different block. Replace this implementation with a call to getPredicateAt(), which also does the predecessor edge predicate check (if not defined in the same block), but can also do quite a bit more: It can reason about phi-nodes by checking edge predicates for incoming values, it can reason about assumes, and it can reason about block values. As such, this makes the implementation both simpler and more powerful. The compile-time impact on CTMark is in the noise.
-
Nico Weber authored
We should fix them, but let's XFAIL them for now so that we can start running check-clang on bots and lock in the passing tests. Part of 46644.
-
Nikita Popov authored
These cover cases handled by getPredicateAt(), but not by the current implementation: * Assumes based on context instruction. * Value from phi node in same block (using per-pred reasoning). * Value from non-phi node in same block (using block-val reasoning).
-
Krzysztof Parzyszek authored
The getPayload/getMask/getPassThrough functions should return values that could be composed into a masked load/store without any additional type casts. The previous fix violated that. Instead, convert scalar mask to a vector right before rescaling.
-
Tony authored
Differential Revision: https://reviews.llvm.org/D93018
-
Tony authored
Differential Revision: https://reviews.llvm.org/D93017
-
Tony authored
- Document which processors are supported by which runtimes. - Add missing mappings for code object V2 note records Differential Revision: https://reviews.llvm.org/D93016
-
Brian Gesiak authored
When printing verification errors for ops with the incorrect number of operand segments, print the required number as well as the actual number. Split off from D93005. Differential Revision: https://reviews.llvm.org/D93145
-
Kazu Hirata authored
The last use of isLoop was removed on Apr 29, 2002 in commit 09bbb5c0 as part of an effort to remove "old induction varaible cannonicalization pass built on top of interval analysis".
-
Kazu Hirata authored
-
Krzysztof Parzyszek authored
AlignVectors treats all loaded/stored values as vectors of bytes, and masks as corresponding vectors of booleans, so make getMask produce a 1-element vector for scalars from the start.
-
Harald van Dijk authored
This makes it possible to use update_llc_test_checks to manage tests that check for incorrect x86 stack offsets. It does not yet modify any test to make use of this new option.
-
Harald van Dijk authored
The ABI demands a data16 prefix for lea in 64-bit LP64 mode, but not in 64-bit ILP32 mode. In both modes this prefix would ordinarily be ignored, but the instructions may be changed by the linker to instructions that are affected by the prefix. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D93157
-
- Dec 12, 2020
-
-
David Green authored
This adds some basic MVE masked load/store costs, notably changing the cost of legal loads/stores to the MVECostFactor and the cost of scalarized instructions to 8*NumElts. Differential Revision: https://reviews.llvm.org/D86538
-
David Green authored
When it comes to the scalar cost of any predicated block, the loop vectorizer by default regards this predication as a sign that it is looking at an if-conversion and divides the scalar cost of the block by 2, assuming it would only be executed half the time. This however makes no sense if the predication has been introduced to tail predicate the loop. Original patch by Anna Welker Differential Revision: https://reviews.llvm.org/D86452
-
Nikita Popov authored
-
Nikita Popov authored
-
Melanie Blower authored
Background: Call to library arithmetic functions for div is emitted by the compiler and it set wrong “C” calling convention for calls to these functions, whereas library functions are declared with `spir_function` calling convention. InstCombine optimization replaces such calls with “unreachable” instruction. It looks like clang lacks SPIRABIInfo class which should specify default calling conventions for “system” function calls. SPIR supports only SPIR_FUNC and SPIR_KERNEL calling convention. Reviewers: Erich Keane, Anastasia Differential Revision: https://reviews.llvm.org/D92721
-
Tatyana Krasnukha authored
Currently, the interpreter's context is not updated until a command is executed. This has resulted in the behavior of SB-interface functions and some commands depends on previous user actions. The interpreter's context can stay uninitialized, point to a currently selected target, or point to one of previously selected targets. This patch removes any usages of CommandInterpreter::UpdateExecutionContext. CommandInterpreter::HandleCommand* functions still may override context temporarily, but now they always restore it before exiting. CommandInterpreter saves overriden contexts to the stack, that makes nesting commands possible. Added test reproduces one of the issues. Without this fix, the last assertion fails because interpreter's execution context is empty until running "target list", so, the value of the global property was updated instead of process's local instance. Differential Revision: https://reviews.llvm.org/D92164
-
Tatyana Krasnukha authored
Replace loops with standard algorithms or range-based loops.
-
Tatyana Krasnukha authored
TargetList::CreateTarget automatically adds created target to the list, however, CommandObjectTargetCreate does some additional preparation after creating a target and which can fail. The command should remove created target if it failed. Since the function has many ways to return, scope guard does this work safely. Changes to the TargetList make target adding and selection more transparent. Other changes remove unnecessary SetSelectedTarget after CreateTarget. Differential Revision: https://reviews.llvm.org/D93052
-
Luo, Yuanke authored
-
Nathan James authored
Support all the spellings of boolean datatypes according to https://yaml.org/type/bool.html Reviewed By: silvas Differential Revision: https://reviews.llvm.org/D92755
-
David Green authored
-
Jan Svoboda authored
This commit <https://reviews.llvm.org/rGe5158b52730d323bb8cd2cba6dc6c89b90cba452> introduced an accidental change, which renames `-faccess-control` and `-fno-access-control` to `-fno-access-control` and `-fno-no-access-control`. Reviewed By: dexonsmith, MaskRay Differential Revision: https://reviews.llvm.org/D93104
-
Jan Svoboda authored
This introduces more flexible multiclass for declaring two flags controlling the same boolean keypath. Compared to existing Opt{In,Out}FFlag multiclasses, the new syntax makes it easier to read option declarations and reason about the keypath. This also makes specifying common properties of both flags possible. I'm open to suggestions on the class names. Not 100% sure the benefits are worth the added complexity. Depends on D92774. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D92775 -
Jan Svoboda authored
We don't need to always generate `-f[no-]experimental-new-pass-manager`. This patch does not change the behavior of any other command line flag. (For example `-triple` is still being always generated.) Reviewed By: dexonsmith, Bigcheese Differential Revision: https://reviews.llvm.org/D92857
-
Jan Svoboda authored
Add more tests of the command line marshalling infrastructure. The new tests now make a "round-trip": from arguments, to CompilerInvocation instance to arguments again in a single test case. The TODOs are resolved in a follow-up patch. Depends on D92830. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D92774
-
Kazu Hirata authored
-
Mircea Trofin authored
-
Giorgis Georgakoudis authored
Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D93055
-
Fangrui Song authored
gcov computes the line execution count as the sum of (a) counts from predecessors on other lines and (b) the sum of loop execution counts of blocks on the same line (think of loops on one line). For (b), we use Donald B. Johnson's cycle enumeration algorithm and perform cycle cancelling for each cycle. This number of candidate cycles were exponential and D93036 made it polynomial by skipping zero count cycles. The time complexity is high (O(V*E^2) (it could be O(E^2) but the linear `Blocks` check made it higher) and the implementation is complex. We could just identify loops and sum all back edges. However, this requires a dominator tree construction which is more complex. The time complexity can be decreased to almost linear, though. This patch just performs cycle cancelling iteratively. Add two members `traversable` and `incoming` to GCOVArc. There are 3 states: * `!traversable`: blocks not on this line or explored blocks * `traversable && incoming == nullptr`: unexplored blocks * `traversable && incoming != nullptr`: blocks which are being explored (on the stack) If an arc points to a block being explored, a cycle has been found. Let E be the number of arcs. Every time a cycle is found, at least one arc is saturated (`edgeCount` reduced to 0), so there are at most E cycles. Finding one cycle takes O(E) time, so the overall time complexity is O(E^2). Note that we always augment through a back edge and never need to augment its reverse edge so reverse edges in traditional flow networks are not needed. Reviewed By: xinhaoyuan Differential Revision: https://reviews.llvm.org/D93073
-
Fangrui Song authored
-
River Riddle authored
The doc has grown stale and is missing some recent changes to the infrastructure. Differential Revision: https://reviews.llvm.org/D93081
-
Duncan P. N. Exon Smith authored
-
Duncan P. N. Exon Smith authored
Pass on the filesystem error string `FileManager::getFileRef` in `clang-import-test`'s `ParseSource` function. Also include "error:" and a newline in the output. As a side effect, migrate to the `FileEntryRef` overload of `SourceManager::createFileID`. No real functionality change here, just slightly better output on error. Differential Revision: https://reviews.llvm.org/D92971
-
Duncan P. N. Exon Smith authored
Migrate over to the `FileEntryRef` overloads of `SourceManager::createFileID` and `overrideFileContents` (using `getVirtualFileRef`) in `TextDiagnostic`'s `ShowLine` test. No functionality change. Differential Revision: https://reviews.llvm.org/D92968
-
Jonas Paulsson authored
Fixed to properly compute the live-in lists of new blocks. Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D92803
-
Jonas Paulsson authored
The performance improvement on LBM previously achieved with improved software prefetching (36d4421f) have gone lost recently with e00f189d. There now is one memory access in the loop that LoopDataPrefetch cannot handle (while before there was none) which the heuristic rejects. This patch adds a small margin by allowing 1 non-prefetched memory access for every 32 prefetched ones, so that the heuristic doesn't bail in this type of case. Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D92985
-
diggerlin authored
Summary: "Speculative fix for link failure on bots" with a mention of "the clang-ppc64le-rhel bot fails on link: http://lab.llvm.org:8011/#/builders/57/builds/2307/steps/6/logs/stdio". PPCAsmPrinter.cpp:(.text._ZN12_GLOBAL__N_116PPCAIXAsmPrinter19emitFunctionBodyEndEv+0x2f8): undefined reference to `llvm::XCOFF::getNameForTracebackTableLanguageId(llvm::XCOFF::TracebackTable::LanguageID)' PPCAsmPrinter.cpp:(.text._ZN12_GLOBAL__N_116PPCAIXAsmPrinter19emitFunctionBodyEndEv+0x2170): undefined reference to `llvm::XCOFF::parseParmsType(unsigned int, unsigned int)'
-