- Aug 26, 2020
-
-
Kazuaki Ishizaki authored
CHECL -> CHECK Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D86550
-
Matt Arsenault authored
-
peter klausler authored
If the label field is empty, and macro replacement occurs, the rescanned text might be misclassified as a comment card if it happens to begin with a C or a D. Insert a leading space into these otherwise empty label fields. Fixes https://bugs.llvm.org/show_bug.cgi?id=47173
-
Arthur Eubanks authored
The legacy SLPVectorizer has a dependency on InjectTLIMappingsLegacy. That cannot be expressed in the new PM since they are both normal passes. Explicitly add -inject-tli-mappings as a pass. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D86492
-
David Green authored
-
Krzysztof Parzyszek authored
Use isHvxOperation(SDNode*) instead.
-
Sanjay Patel authored
Goes with D86429
-
Ta-Wei Tu authored
Summary: The LCSSA pass (required for all loop passes) sometimes adds additional blocks containing LCSSA variables, and checkLoopsStructure may return false even when the loops are perfectly nested in this case. This is because the successor of the exit block of the inner loop now points to the LCSSA block instead of the latch block of the outer loop. Examples are shown in the test nests-with-lcssa.ll. To fix the issue, the successor of the exit block of the inner loop can now point to a block in which all instructions are LCSSA phi node (except the terminator), and the sole successor of that block should point to the latch block of the outer loop. Reviewed By: Whitney, etiotto Differential Revision: https://reviews.llvm.org/D86133
-
- Aug 25, 2020
-
-
David Tenty authored
since __int128 currently isn't supported on AIX. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D85972
-
Sjoerd Meijer authored
A first version of get.active.lane.mask was committed in rG7fb8a40e. One of the main purposes and uses of this intrinsic is to communicate information from the middle-end to the back-end, but its current definition and semantics make this actually very difficult. The intrinsic was defined as: @llvm.get.active.lane.mask(%IV, %BTC) where %BTC is the Backedge-Taken Count (variable names are different in the LangRef spec). This allows to implicitly communicate the loop tripcount, which can be reconstructed by calculating BTC + 1. But it has been very difficult to prove that calculating BTC + 1 is safe and doesn't overflow. We need complicated range and SCEV analysis, and thus the problem is that this intrinsic isn't really doing what it was supposed to solve. Examples of the overflow checks that are required in the (ARM) back-end are D79175 and D86074, which aren't even complete/correct yet. To solve this problem, we are revising the definitions/semantics for get.active.lane.mask to avoid all the complicated overflow analysis. This means that instead of communicating the BTC, we are now using the loop tripcount. Now using LangRef's variable names, its semantics is changed from: icmp ule (%base + i), %n to: icmp ult (%base + i), %n with %n > 0 and corresponding to the loop tripcount. The intrinsic signature remains the same. Differential Revision: https://reviews.llvm.org/D86147
-
Sanjay Patel authored
The 1st attempt (rG557b890f) was reverted because it caused miscompiles. That bug is avoided here by changing the order of folds and as verified in the new tests. Original commit message: InstCombine currently has odd rules for folding insert-extract chains to shuffles, so we miss collapsing seemingly simple cases as shown in the tests here. But poison makes this not quite as easy as we might have guessed. Alive2 tests to show the subtle difference (similar to the regression tests): https://alive2.llvm.org/ce/z/hp4hv3 (this is ok) https://alive2.llvm.org/ce/z/ehEWaN (poison leakage) SLP tends to create these patterns (as shown in the SLP tests), and this could help with solving PR16739. Differential Revision: https://reviews.llvm.org/D86460
-
Sanjay Patel authored
The 1st draft of D86460 (reverted) would show miscompiles with these tests because the undef element tracking went wrong and became visible in the shuffle masks.
-
Fangrui Song authored
A n_type==NT_GNU_PROPERTY_TYPE_0 note encodes a program property. If pr_datasize is invalid, LLD may crash (https://github.com/ClangBuiltLinux/linux/issues/1141) This patch adds some error checking, supports big-endian, and add some tests for invalid n_descsz. Differential Revision: https://reviews.llvm.org/D86422
-
Jay Foad authored
-
Sjoerd Meijer authored
This adapts the verifier checks for intrinsic get.active.lane.mask to the new semantics of it as described in D86147. I.e., the second argument %n, which corresponds to the loop tripcount, must be greater than 0 if it is a constant, so check that. Differential Revision: https://reviews.llvm.org/D86301
-
Kostya Kortchinsky authored
With the 'new' way of releasing on 32-bit, we iterate through all the regions in between `First` and `Last`, which covers regions that do not belong to the class size we are working with. This is effectively wasted cycles. With this change, we add a `SkipRegion` lambda to `releaseFreeMemoryToOS` that will allow the release function to know when to skip a region. For the 64-bit primary, since we are only working with 1 region, we never skip. Reviewed By: hctim Differential Revision: https://reviews.llvm.org/D86399
-
Xing GUO authored
This patch makes the 'Attributes' field optional. We don't need to explicitly specify the 'Attributes' field in the future. Reviewed By: jhenderson, grimar Differential Revision: https://reviews.llvm.org/D86537
-
Sjoerd Meijer authored
This adapts legalization of intrinsic get.active.lane.mask to the new semantics as described in D86147. Because the second argument is now the loop tripcount, we legalize this intrinsic to an 'icmp ULT' instead of an ULE when it was the backedge-taken count. Differential Revision: https://reviews.llvm.org/D86302
-
Jeremy Morse authored
This patch adds the -Xclang option "-fexperimental-debug-variable-locations" and same LLVM CodeGen option, to pick which variable location tracking solution to use. Right now all the switch does is pick which LiveDebugValues implementation to use, the normal VarLoc one or the instruction referencing one in rGae6f7882. Over time, the aim is to add fragments of support in aid of the value-tracking RFC: http://lists.llvm.org/pipermail/llvm-dev/2020-February/139440.html also controlled by this command line switch. That will slowly move variable locations to be defined by an instruction calculating a value, and a DBG_INSTR_REF instruction referring to that value. Thus, this is going to grow into a "use the new kind of variable locations" switch, rather than just "use the new LiveDebugValues implementation". Differential Revision: https://reviews.llvm.org/D83048
-
Matt Arsenault authored
Most notably, we were incorrectly reporting <3 x s16> as a legal type for these. Make sure these aren't legal to help make progress on fixing the artifact combiner and vector legalizer rules. Unfortunately, this means spreading the -global-isel-abort=0 hack, although this doesn't change the legalizer result in any situation.
-
Matt Arsenault authored
Implicit uses of non-register value types places impossible to satisfy constraints on the legalizer / artifact combiner. These prevent writing sensible legalize rules for the artifacts without triggering infinite loops in the legalizer. The verifier really needs to enforce this, but I'm not sure what the exact conditions would look like yet.
-
Sjoerd Meijer authored
This adapts tail-predication to the new semantics of get.active.lane.mask as defined in D86147. This means that: - we can remove the BTC + 1 overflow checks because now the loop tripcount is passed in to the intrinsic, - we can immediately use that value to setup a counter for the number of elements processed by the loop and don't need to materialize BTC + 1. Differential Revision: https://reviews.llvm.org/D86303
-
Matt Arsenault authored
The selection patterns will currently fail on these.
-
Anatoly Trosinenko authored
This patch assumes `byref` can be handled identically to `byval`. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D85768
-
Anatoly Trosinenko authored
* Make the three tests look more uniformly * Explicitly specify types of integer and floating point literals * Add more test cases (mostly inspired by divtf3_test.c) - tests are added for obviously special cases such as +/-Inf, +/-0.0 and some more implementation-specific cases such as divisor being almost 1.0 * Make NaN in the second test case of `divtf3` to be `sNaN` instead of testing for `qNaN` again Reviewed By: sepavloff Differential Revision: https://reviews.llvm.org/D84932 -
Ilya Leoshkevich authored
After https://reviews.llvm.org/D86382 it works. Reviewed By: morehouse Differential Revision: https://reviews.llvm.org/D86184
-
Sjoerd Meijer authored
This adapts LV to the new semantics of get.active.lane.mask as discussed in D86147, which means that the LV now emits intrinsic get.active.lane.mask with the loop tripcount instead of the backedge-taken count as its second argument. The motivation for this is described in D86147. Differential Revision: https://reviews.llvm.org/D86304
-
Adam Czachorowski authored
We guess the style based on the existing using declarations. If there are any and they all start with ::, we add it to the newly added one too. Differential Revision: https://reviews.llvm.org/D86473
-
Alex Richardson authored
Some functions also include a `.Lfunc$local:` label due to -fno-semantic-interposition Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D85888
-
Alex Richardson authored
FreeBSD doesn't provide a crypt.h header but instead defines the functions in unistd.h. Use __has_include() to handle that case. Reviewed By: #sanitizers, vitalybuka Differential Revision: https://reviews.llvm.org/D85406
-
Alex Richardson authored
FreeBSD delivers a SIGBUS signal for bad addresses rather than SIGSEGV. Reviewed By: #sanitizers, vitalybuka, yln Differential Revision: https://reviews.llvm.org/D85409
-
Sam Parker authored
-
David Green authored
The arm backend does not handle select/select_cc on vectors with scalar conditions, preferring to expand them in codegenprepare instead. This usually works except when optimizing for size, where the optsize check would end up overruling the backend isSelectSupported check. We could handle the selects in ISel too, but this seems like smaller code than trying to splat the condition to all lanes. Differential Revision: https://reviews.llvm.org/D86433
-
Mikael Holmen authored
Without the fix the compiler warns with /data/repo/master/libunwind/src/AddressSpace.hpp:436:44: warning: unused parameter 'pinfo_size' [-Wunused-parameter] size_t pinfo_size, void *data) { ^ 1 warning generated. -
Mikael Holmen authored
Without the fix gcc 7.4 warns with ../lib/Target/PowerPC/PPCAsmPrinter.cpp: In member function 'void {anonymous}::PPCAsmPrinter::EmitTlsCall(const llvm::MachineInstr*, llvm::MCSymbolRefExpr::VariantKind)': ../lib/Target/PowerPC/PPCAsmPrinter.cpp:525:53: warning: enumeral and non-enumeral type in conditional expression [-Wextra] MCInstBuilder(Subtarget->isPPC64() ? Opcode : PPC::BL_TLS) ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ -
Sam Parker authored
-
Shinji Okumura authored
-
Paul Walker authored
Also updates isConstOrConstSplatFP to allow the mul(A,-1) -> neg(A) transformation when -1 is expressed as an ISD::SPLAT_VECTOR. Differential Revision: https://reviews.llvm.org/D86415
-
Sam Parker authored
Add a run to measure the code size cost of arithmetic instructions and add a function for i1 types.
-
Sam Parker authored
global_vars_see_dict -> global_vars_seen_dict
-