- Jun 28, 2022
-
-
Craig Topper authored
Offsets in the range [-4095,-2049] or [2048, 4094] are split into two ADDIs. One of the ADDIs will be folded into the load/store immediate through an post-isel peephole.
-
Philip Reames authored
This change is a bit subtle. If we have a type like <vscale x 1 x i64>, the vectorizer will currently reject vectorization. The reason is that a type like <1 x i64> is likely to get simply rescalarized, and the vectorizer doesn't want to be in the game of simple unrolling. (I've given the example in terms of 1 x types which use a single register, but the same issue exists for any N x types which use N registers. e.g. RISCV LMULs.) This change distinguishes scalable types from fixed types under the reasoning that converting to a scalable type isn't unrolling. Because the actual vscale isn't known until runtime, using a vscale type is potentially very profitable. This makes an important, but unchecked, assumption. Specifically, the scalable type is assumed to only be legal per the cost model if there's actually a scalable register class which is distinct from the scalar domain. This is, to my knowledge, true for all targets which return non-invalid costs for scalable vector ops today, but in theory, we could have a target decide to lower scalable to fixed length vector or even scalar registers. If that ever happens, we'd need to revisit this code. In practice, this patch unblocks scalable vectorization for ELEN types on RISCV. Let me sketch one alternate implementation I considered. We could have restricted this to when we know a minimum value for vscale. Specifically, for the default +v extension for RISCV, we actually know that vscale >= 2 for ELEN types. However, doing it this way means we can't generate scalable vectors when using the various embedded vector extensions which have a minimum vscale of 1. Differential Revision: https://reviews.llvm.org/D128542
-
Roy Sundahl authored
It was possible for the parent process to exit before the forked child process had finished. In some shells, this causes the pipe to close and FileCheck misses some output from the child. Waiting for the child process to exit before exiting the parent, assures that all output from stdout and stderr is combined and forwarded through the pipe to FileCheck. rdar://95241490 Differential Revision: https://reviews.llvm.org/D128565
-
Xing Xue authored
Summary: This patch ports libc++ LIT test cases for getting time in various locales to AIX. Reviewed by: philnik, Mordante, libc++ Differential Revision: https://reviews.llvm.org/D128087
-
Xing Xue authored
Summary: This patch ports libc++ LIT test cases for money formats to AIX. On AIX, the money format of locale zh_CN.UTF-8 is the similar to that of en_US.UTF-8, i.e., sign, symbol, none, value. Reviewed by: Mordante, DiggerLin, libc++ Differential Revision: https://reviews.llvm.org/D128220
-
Philip Reames authored
The later is possibly greater than the former, and thus the assert was overly strong when a wider VLEN was set at the command line.
-
Philip Reames authored
This extends the existing cost model for reductions for scalable vectors. The existing cost model assumes that reductions are roughly logarithmic in cost for unordered variants and linear for ordered ones. This change keeps that same basic model, and extends it out to the maximum number of elements a scalable vector could possibly have. This results in costs which aren't terribly high for unordered reductions, but are for ordered ones. This seems about right; we want to strongly bias away from using scalable ordered reductions if the cost might be linear in VL. Differential Revision: https://reviews.llvm.org/D127447
-
Vitaly Buka authored
Breaks buildbot https://lab.llvm.org/buildbot/#/builders/37/builds/14334 This reverts commit f5d781d6.
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D128615
-
Vitaly Buka authored
-
Alex Langford authored
Looks like a copy/paste from ModuleList::FindCompileUnits.
-
Yuanfang Chen authored
Fix "Title underline too short."
-
Yuanfang Chen authored
There is no proper RTTI for these split functions. So just delete the metadata. Fixes https://github.com/llvm/llvm-project/issues/49689. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D116130
-
Yuanfang Chen authored
Information in the function `Prologue Data` is intentionally opaque. When a function with `Prologue Data` is duplicated. The self (global value) references inside `Prologue Data` is still pointing to the original function. This may cause errors like `fatal error: error in backend: Cannot represent a difference across sections`. This patch detaches the information from function `Prologue Data` and attaches it to a function metadata node. This and D116130 fix https://github.com/llvm/llvm-project/issues/49689. Reviewed By: pcc Differential Revision: https://reviews.llvm.org/D115844
-
Wei Yi Tee authored
Depends On D128658 Reviewed By: gribozavr2, xazax.hun Differential Revision: https://reviews.llvm.org/D128659
-
Wei Yi Tee authored
[clang][dataflow] Do not allow substitution of true/false boolean literals in `buildAndSubstituteFlowCondition` Reviewed By: gribozavr2, xazax.hun Differential Revision: https://reviews.llvm.org/D128658
-
Aart Bik authored
Reviewed By: Peiming Differential Revision: https://reviews.llvm.org/D128673
-
Groverkss authored
The parser currently can't parse bare identifiers like 'i0' in affine maps and sets, and similarly ids like f16/f32. But these bare ids are part of the grammar - although they are primitive types. ``` error: expected bare identifier set = affine_set<(i0, i1) : ()> ^ ``` This patch allows the parser for AffineMap/IntegerSet to parse bare identifiers as defined by the grammer. Reviewed By: bondhugula, rriddle Differential Revision: https://reviews.llvm.org/D127076 -
Peiming Liu authored
Adding more test cases for sparse_tensor.BinaryOp, including different cases when overlap/left/right region is implemented/empty/identity Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D128383
-
Daniel Thornburgh authored
The tests use in-band ANSI color codes, while the Windows cmd console uses an out-of-band interface for color.
-
Daniel Thornburgh authored
The tests use in-band ANSI color codes, while the Windows cmd console uses an out-of-band interface for color.
-
Amir Ayupov authored
ICP peel for inline mode only makes sense for calls, not jump tables. Plus, add a check that the Target BinaryFunction is found. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D128404
-
Peiming Liu authored
Previously, the sparse_tensor.unary integration test does not contain cases with the use of `linalg.index` (previoulsy unsupported), this commit adds test cases that use `linalg.index` operators. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D128460
-
LLVM GN Syncbot authored
-
Daniel Thornburgh authored
This adds a --filter option to llvm-symbolizer. This takes log-bearing symbolizer markup from stdin and writes a human-readable version to stdout. For now, this only implements the "symbol" markup tag; all others are passed through unaltered. This is a proof-of-concept bit of functionalty; implement the various tags is more-or-less just a matter of hooking up various parts of the Symbolize library to the architecture established here. Reviewed By: peter.smith Differential Revision: https://reviews.llvm.org/D126980
-
Chris Bieneman authored
Adding release note entries for LLVM & Clang to introduce the HLSL & DirectX support that is being added. Reviewed By: aaron.ballman, MaskRay Differential Revision: https://reviews.llvm.org/D127890
-
Joseph Huber authored
Summary: Currently in OpenMPOpt we strip `noinline` attributes from runtime functions. This is here because the device bitcode library that we link has problems with needed definitions getting prematurely optimized out. This is only necessary for OpenMP offloading to GPUs so we should narrow the scope for where we spend time doing this. In the future this shouldn't be necessary as we move to using a linked library rather than pulling in a bitcode library in Clang.
-
Kirill Okhotnikov authored
-
Amir Ayupov authored
- `indirect-call-promotion` -> `icp` - `indirect-call-promotion-mispredict-threshold` -> `icp-mp-threshold` - `indirect-call-promotion-use-mispredicts` -> `icp-use-mp` - `indirect-call-promotion-topn` -> `icp-topn` - `indirect-call-promotion-calls-topn` -> `icp-calls-topn` - `indirect-call-promotion-jump-tables-topn` -> `icp-jt-topn` - `icp-jump-table-targets` -> `icp-jt-targets` This also fixes an inconsistency in ICP flag names that some start with `indirect-call-promotion` while others start with `icp`. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D128375
-
Amir Ayupov authored
Follow the case of https://reviews.llvm.org/D126068 and simplify call sites with `llvm::less_first`. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D128242
-
Paul Walker authored
Increases coverage of predicated compares (int and fp) along with predicated zeroing of active floating point lanes.
-
Matt Arsenault authored
No point doing the more complicated check first.
-
Jonas Devlieghere authored
Add a log dump command to dump logs to a file. This only works for channels that have a log handler associated that supports dumping. For now that's limited to the circular log handler, but more could be added in the future. Differential revision: https://reviews.llvm.org/D128557
-
Patrick Walton authored
This commit modifies the AsmPrinter to avoid emitting any zero-sized symbols to the .debug_aranges table, by rounding their size up to 1. Entries with zero length violate the DWARF 5 spec, which states: > Each descriptor is a triple consisting of a segment selector, the beginning > address within that segment of a range of text or data covered by some entry > owned by the corresponding compilation unit, followed by the non-zero length > of that range. In practice, these zero-sized entries produce annoying warnings in lld and cause GNU binutils to truncate the table when parsing it. Other parts of LLVM, such as DWARFDebugARanges in the DebugInfo module (specifically the appendRange method), already avoid emitting zero-sized symbols to .debug_aranges, but not comprehensively in the AsmPrinter. In fact, the AsmPrinter does try to avoid emitting such zero-sized symbols when labels aren't involved, but doesn't when the symbol to emitted is a difference of two labels; this patch extends that logic to handle the case in which the symbol is defined via labels. Furthermore, this patch fixes a bug in which `available_externally` symbols would cause unpredictable values to be emitted into the `.debug_aranges` table under certain circumstances. In practice I don't believe that this caused issues up until now, but the root cause of this bug--an invalid DenseMap lookup--triggered failures in Chromium when combined with an earlier version of this patch. Therefore, this patch fixes that bug too. This is a revised version of diff D126257, which was reverted due to breaking tests. The now-reverted version of this patch didn't distinguish between symbols that didn't have their size reported to the DwarfDebug handler and those that had their size reported to be zero. This new version of the patch instead restricts the special handling only to the symbols whose size is definitively known to be zero. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D126835
-
Louis Dionne authored
Also, improve the test for nasty macros to define min and max, so this will be caught in the future. Differential Revision: https://reviews.llvm.org/D128655
-
Min-Yih Hsu authored
This patch memorize compatible LLVM types in `LLVM::isCompatibleType` in order to avoid redundant works. This is especially useful when the size of program is big and there are multiple occurrences of some deeply nested LLVM struct types, in which case we can gain quite some speedups with this patch. Differential Revision: https://reviews.llvm.org/D127918
-
Min-Yih Hsu authored
This patch adds three new LLVM intrinsic operations: llvm.intr.vastart/copy/end. And its translation from LLVM IR. This effectively removes a restriction, imposed by 0126dcf1, where non-external functions in LLVM dialect cannot be variadic. At that time it was not clear how LLVM intrinsics are going to be modeled, which indirectly affects va_start/copy/end, the core intrinsics used in variadic functions. But since we have LLVM intrinsics as normal MLIR operations, it's not a problem anymore. Differential Revision: https://reviews.llvm.org/D127540
-
Snehasish Kumar authored
Add a check to detect that the profiled binary was build with position independent code. Add a test with a pie binary to which can be reused later when support is added. Also clean up the error messages with trailing colons. Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D128564
-
Michał Górny authored
Sponsored by: The FreeBSD Foundation
-
gbreynoo authored
We did not properly handle using CREATETHIN in an MRI script and attempting to use ADDLIB to add the contents of a regular archive. This fix outputs a meaningful error message in this case and provides some more testing. Differential Revision: https://reviews.llvm.org/D128067
-