- May 10, 2021
-
-
jasonliu authored
The aim is to define _LIBCPP_ELAST for AIX since strerror/strerror_r can't handle out-of-range errno values. Differential Revision: https://reviews.llvm.org/D100986
-
Bradley Smith authored
Expanding a fixed length operation involves wrapping the operation in an insert/extract subvector pair, as such, when this is done to bitcast we end up with an extract_subvector of a bitcast. DAGCombine tries to convert this into a bitcast of an extract_subvector which restores the initial fixed length bitcast, causing an infinite loop of legalization. As part of this patch, we must make sure the above DAGCombine does not trigger after legalization if the created bitcast would not be legal. Differential Revision: https://reviews.llvm.org/D101990
-
Alexey Bataev authored
Follow the more general patch for now, do not try to SPMDize the kernel if the variable is used and local. Differential Revision: https://reviews.llvm.org/D101911
-
qixingxue authored
Since calling `PrintFatalError` will automatically add `error: ` prefix in the message printed, there is no need having an extra `ERROR:` prefix in the argument passed. Differential Revision: https://reviews.llvm.org/D102151 Reviewed By: Paul-C-Anagnostopoulos
-
Simon Pilgrim authored
X86FlagsCopyLowering.cpp - try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies. NFCI.
-
Simon Pilgrim authored
X86LoadValueInjectionLoadHardening.cpp - use const-reference in for-range loops to avoid unnecessary copies. NFCI.
-
Fraser Cormack authored
A ConstantAggregateZero may be created from a scalable vector type. However, it still assumed fixed number of elements when queried for them. This patch changes ConstantAggregateZero to correctly report its element count. This change fixes a couple of issues. Firstly, it fixes a crash in Constant::getUniqueValue when called on a scalable-vector zeroinitializer constant. Secondly, it fixes a latent bug in GlobalISel's IRTranslator in which translating a scalable-vector zeroinitializer would hit the assertion in ConstantAggregateZero::getNumElements when casting to a FixedVectorType, rather than reporting an error more gracefully. This is currently hypothetical as the IRTranslator has deeper issues preventing the use of scalable vector types. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D102082
-
Christian Kandeler authored
According to the specification, this should be an unsigned integer. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D101616
-
Djordje Todorovic authored
This is preparation for the https://reviews.llvm.org/D101025. The D101025 will start calculating var locstats for concrete fns that refere to an abstract origin as well.
-
Nico Weber authored
We might release a new version at some point after all. In fact, use the same pattern the other CHECK lines in this test use, for consistency.
-
Bradley Smith authored
When using predicated intrinsics, if the predicate used is all lanes active, use an unpredicated form of the instruction, additionally this allows for better use of immediate forms. This only includes instructions where the unpredicated/predicated forms matched in such a way that instruction selection would not introduce extra ptrue instructions. This allows us to convert the intrinsics directly to architecture independent ISD nodes. Depends on D101062 Differential Revision: https://reviews.llvm.org/D101828
-
Bradley Smith authored
When using predicated arithmetic intrinsics, if the predicate used is all lanes active, use an unpredicated form of the instruction, additionally this allows for better use of immediate forms. This also includes a new complex isel pattern which allows matching an all active predicate when the types are different but the predicate is a superset of the type being used. For example, to allow a b8 ptrue for a b32 predicate operand. This only includes instructions where the unpredicated/predicated forms are mismatched between variants, meaning that the removal of the predicate is done during instruction selection in order to prevent spurious re-introductions of ptrue instructions. Co-authored-by:
Paul Walker <paul.walker@arm.com> Differential Revision: https://reviews.llvm.org/D101062
-
Momchil Velikov authored
The function template `CallLowering::setArgFlags` is invoked both for arguments and return values. In the latter case, it calls `getParamStackAlign` with argument index `~0u`. Nothing wrong happens now, as the argument is safely incremented back to 0 inside `getParamStackAlign` (the type is `unsigned`), but in principle it's fragile and may become incorrect. Differential Revision: https://reviews.llvm.org/D102004
-
Sander de Smalen authored
DAGCombiner tries to combine a (fpext (load)) to (fround (extload)) but SVE has no FP-extending loads. By marking these as expand, the combine no longer happens. This also fixes a similar issue for fptrunc, where the source type is not a legal type. Reviewed By: bsmith, kmclaughlin Differential Revision: https://reviews.llvm.org/D102053
-
Simon Pilgrim authored
Silences MSVC warning.
-
Kadir Cetinkaya authored
This fixes a crash caused by Lexers being invalidated at code completion points in https://github.com/llvm/llvm-project/blob/main/clang/lib/Lex/PPLexerChange.cpp#L520. Differential Revision: https://reviews.llvm.org/D102069
-
Mats Petersson authored
When using parallel loop construct, the OpenMP specification allows for guided, auto and runtime as scheduling variants (as well as static and dynamic which are already supported). This adds the translation from MLIR to LLVM-IR for these scheduling variants. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D101435
-
Julian Gross authored
In the buffer deallocation pass, unranked memref types are not properly supported. After investigating this issue, it turns out that the Clone and Dealloc operation does not support unranked memref types in the current implementation. This patch adds the missing feature and enables the transformation of any memref type. This patch solves this bug: https://bugs.llvm.org/show_bug.cgi?id=48385 Differential Revision: https://reviews.llvm.org/D101760
-
David Spickett authored
According to: https://docs.python.org/3/library/subprocess.html#subprocess.Popen.poll poll can return None if the process hasn't terminated. I'm not quite sure how addr2line could end up closing the pipe without terminating but we did see this happen on one of our bots: ``` <...>scripts/asan_symbolize.py", line 211, in symbolize logging.debug("addr2line exited early (broken pipe), returncode=%d" % self.pipe.poll()) TypeError: %d format: a number is required, not NoneType ``` Handle None by printing a message that we couldn't get the return code. Reviewed By: delcypher Differential Revision: https://reviews.llvm.org/D101891
-
Frederik Gossen authored
As a canonicalization, infer the resulting shape rank if possible. Differential Revision: https://reviews.llvm.org/D102068
-
Guillaume Chatelet authored
This is a follow up on D101524 which: - simplifies cpu features detection and usage, - flattens target dependent optimizations so it's obvious which implementations are generated, - provides an implementation targeting the host (march/mtune=native) for the mem* functions, - makes sure all implementations are unittested (provided the host can run them), - makes sure all implementations are benchmarkable (provided the host can run them). Differential Revision: https://reviews.llvm.org/D101895
-
Petar Avramovic authored
Large loads on target that does not useFlatForGlobal have to be split in regbankselect. This did not happen in case when destination had vgpr bank and address had sgpr bank. Instead of checking if address bank is sgpr check bank of the destination. Differential Revision: https://reviews.llvm.org/D101992
-
Petar Avramovic authored
Pre-commit for D101992.
-
Alex Zinenko authored
Previously, the OpenMP to LLVM IR conversion was setting the alloca insertion point to the same position as the main compuation when converting OpenMP `parallel` operations. This is problematic if, for example, the `parallel` operation is placed inside a loop and would keep allocating on stack on each iteration leading to stack overflow. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D101307
-
Pushpinder Singh authored
Previously clang would print a binary blob into the bundled file for amdgcn. With this patch, it will instead print textual IR as expected. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D102065
-
Guillaume Chatelet authored
This patch provides a way to specify the default target cpu optimizations to use when compiling llvm-libc. This ensures we don't rely on current compiler's default and allows compiling and cross compiling for a particular target. Differential Revision: https://reviews.llvm.org/D101991
-
Pushpinder Singh authored
This patch prevents runtime tests running on systems without amdgpu. Reviewed By: protze.joachim, tianshilei1992 Differential Revision: https://reviews.llvm.org/D102054
-
Pushpinder Singh authored
This patch is suppose to fix the issue of hsa.h not found. Issue was reported in D99949 Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D102067
-
Fraser Cormack authored
This patch extends VectorLegalizer::ExpandSELECT to permit expansion also for scalable vector types. The only real change is conditionally checking for BUILD_VECTOR or SPLAT_VECTOR legality depending on the vector type. We can use this to fix "cannot select" errors for scalable vector selects on the RISCV target. Note that in future patches RISCV will possibly custom-lower vector SELECTs to VSELECTs for branchless codegen. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D102063
-
Adrian Kuegel authored
Inside a templated function, other class members need to be called with this->. Otherwise we get: explicit qualification required to use member 'setDebugName' from dependent base class.
-
Jun Ma authored
Since index_vector is lowered into step_vector in D100816, we can just remove index_vector, use step_vector for codegen directly. Differential Revision: https://reviews.llvm.org/D101593
-
Lang Hames authored
Dispatching query callbacks, rather than running them on the current thread, will allow them to be distributed across multiple threads.
-
Lang Hames authored
Generalizing this API allows work to be distributed more evenly. In particular, query callbacks can now be dispatched (rather than running immediately on the thread that satisfied the query). This avoids the pathalogical case where an operation on one thread satisfies many queries simultaneously, causing large amounts of work to be run on that thread while other threads potentially sit idle.
-
Teresa Johnson authored
Ignore ephemeral values (only feeding llvm.assume intrinsics) when computing the instruction count to decide if a block is small enough for threading. This is similar to the handling of these values in the InlineCost computation. These instructions will eventually be removed and shouldn't count against code size (similar to the existing ignoring of phis). Without this change, when enabling -fwhole-program-vtables, which causes type test / assume sequences to be inserted by clang, we can get different threading decisions. In particular, when building with instrumentation FDO it can affect the optimizations decisions before FDO matching, leading to some mismatches. Differential Revision: https://reviews.llvm.org/D101494
-
Yuanfang Chen authored
-
Zakk Chen authored
RISCVAsmPrinter already has MCSubtargetInfo. Reviewed By: HsiangKai Differential Revision: https://reviews.llvm.org/D101889
-
Chia-hung Duan authored
We are able to bind the result from native function while rewriting pattern. In matching pattern, if we want to get some values back, we can do that by passing parameter as return value placeholder. Besides, add the semantic of '$_self' in NativeCodeCall while matching, it'll be the operation that defines certain operand. Differential Revision: https://reviews.llvm.org/D100746
-
Jez Ng authored
This unbreaks my local build, which is configured to build only parts of LLVM.
-
Nico Weber authored
On a section with alignment of 16, subsections aligned to 16-byte boundaries should keep their 16-byte alignment. Fixes PR50274. (The same bug could have happened with -order_file previously.) Differential Revision: https://reviews.llvm.org/D102139
-
Jez Ng authored
This would cause us to pull in symbols (and code) that should be unused. Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D102137
-