- May 11, 2021
-
-
Stella Laurenzo authored
* Adds dialect registration, hand coded 'encoding' attribute and test. * An MLIR CAPI tablegen backend for attributes does not exist, and this is a relatively complicated case. I opted to hand code it in a canonical way for now, which will provide a reasonable blueprint for building out the tablegen version in the future. * Also added a (local) CMake function for declaring new CAPI tests, since it was getting repetitive/buggy. Differential Revision: https://reviews.llvm.org/D102141
-
Simon Pilgrim authored
[X86][SSE] Add examples of failures to remove a permute(pack(pack(),pack())) shuffle by reordering the packed operands.
-
Craig Topper authored
We were incorrectly calling getVectorNumElements on a scalable vector type. This shouldn't be allowed. This gives a warning on EVT, but not MVT.
-
Tomasz Miąsko authored
Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102142
-
Fangrui Song authored
-fno-semantic-interposition (only effective with -fpic) can optimize default visibility external linkage (non-ifunc-non-COMDAT) variable access and function calls to avoid GOT/PLT, by using local aliases, e.g. ``` int var; __attribute__((optnone)) int fun(int x) { return x * x; } int test() { return fun(var); } ``` -fpic (var and fun are dso_preemptable) ``` test: // @test adrp x8, :got:var ldr x8, [x8, :got_lo12:var] ldr w0, [x8] // fun is preemptible by default in ld -shared mode. ld will create a PLT. b fun ``` vs -fpic -fno-semantic-interposition (var and fun are dso_local) ``` test: // @test .Ltest$local: adrp x8, .Lvar$local ldr w0, [x8, :lo12:.Lvar$local] // The assembler either resolves .Lfun$local at assembly time, or produces a // relocation referencing a non-preemptible section symbol (which ca... -
Lang Hames authored
-
gbreynoo authored
The nm command guide shows the short options used as aliases but these are not found in the help text unless --show-hidden is used, other tools show aliases with --help. This change fixes the help output to be consistent with the command guide. Differential Revision: https://reviews.llvm.org/D102072
-
gbreynoo authored
The option --use-symbol-table is now a noop and does not appear in the help text, however it still appears in the command guide. This change removes it from the command guide and updates the description of --output-style . Differential Revision: https://reviews.llvm.org/D102078
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Fangrui Song authored
This adds a separator between two pieces of information. Reviewed By: #lld-macho, alexshap Differential Revision: https://reviews.llvm.org/D102114
-
Mark de Wever authored
Reviewed By: #libc, Quuxplusone Differential Revision: https://reviews.llvm.org/D102133
-
Harald van Dijk authored
The logic for x86_64 position-independent TType encodings was backwards, using 8 bytes where 4 were wanted and 4 where 8 were wanted. For regular x86_64, this was mostly harmless, exception tables are allowed to use 8-byte encodings even when it is not needed. For the large code model, and for X32, however, the generated exception tables were wrong. For the large code model, we cannot assume that the address will fit in 4 bytes. For X32, we cannot use 64-bit relocations. Fixes PR50148. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D102132
-
- May 10, 2021
-
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D102164
-
Momchil Velikov authored
Analogously to https://reviews.llvm.org/D98794 this patch uses the `alignstack` attribute to fix incorrect passing of homogeneous aggregate (HA) arguments on AArch32. The EABI/AAPCS was recently updated to clarify how VFP co-processor candidates are aligned: https://github.com/ARM-software/abi-aa/commit/4488e34998514dc7af5507236f279f6881eede62 Differential Revision: https://reviews.llvm.org/D100853
-
Sanjay Patel authored
This reverts commit fefcb1f8. It was supposed to be NFC, but as noted in the post-commit comments in D102002, that was not true: SimplifyCFG uses different parameters and there's a difference in an extension point / callback.
-
Jon Chesterfield authored
[libomptarget] Add support for target allocators to dynamic cuda RTL Follow on to D102000 which introduced new calls into libcuda. This patch adds the corresponding entry points to dynamic_cuda, fixing the build for systems that do not have the cuda toolkit installed. Function types and enum from https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__MEM.html Reviewed By: pdhaliwal Differential Revision: https://reviews.llvm.org/D102169
-
Zarko Todorovski authored
Correctly emit `vins`instructions that are safe in 32bit mode. Reviewed By: nemanjai, #powerpc Differential Revision: https://reviews.llvm.org/D101383
-
Alexey Bataev authored
Need to remove the old code for avoiding double counting of the gather nodes with perfect diamond matches within the tree after we started detecting perfect/shuffled matching in the previous patch D100495. We may skip the cost for such nodes completely. Differential Revision: https://reviews.llvm.org/D102023
-
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
-