- Jun 15, 2020
-
-
Florian Hahn authored
Hoist the general logic into a new function, because it can be re-used by the MemorySSA backed DSE as well.
-
Jessica Paquette authored
This implements the following combines: ((0-A) + B) -> B-A (A + (0-B)) -> A-B Porting over the basic algebraic combines from the DAGCombiner. There are several combines which fold adds away into subtracts. This is just the simplest one. I noticed that add combines are some of the most commonly hit across CTMark, (via print statements when they fire), so I'm porting over some of the obvious ones. This gives some minor code size improvements on CTMark at -O3 on AArch64. Differential Revision: https://reviews.llvm.org/D77453
-
sameeran joshi authored
Review comments addressed.
-
Siva Chandra authored
-
Jonas Devlieghere authored
This patch remove the indentation before the command help output. Supposedly it was meant to be aligned with the different subcommands. Differential revision: https://reviews.llvm.org/D81783
-
Siva Chandra Reddy authored
Along that way, platform specific options to memcpy, memset and bzero builds have been enclosed in conditionals. Also, the optimization level has been set to -O2 for the memory function builds to actually see the static functions inlined. Reviewers: gchatelet Differential Revision: https://reviews.llvm.org/D81621
-
Francesco Petrogalli authored
Summary: Adding intrinsics and codegen patterns for: * trn1 <Zd>.q, <Zm>.q, <Zn>.q * trn2 <Zd>.q, <Zm>.q, <Zn>.q * zip1 <Zd>.q, <Zm>.q, <Zn>.q * zip2 <Zd>.q, <Zm>.q, <Zn>.q * uzp1 <Zd>.q, <Zm>.q, <Zn>.q * uzp2 <Zd>.q, <Zm>.q, <Zn>.q These instructions are defined in Armv8.6-A. Reviewers: sdesmalen, efriedma, kmclaughlin Reviewed By: sdesmalen Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80850
-
David Truby authored
Reviewers: sscalpone Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79507
-
Louis Dionne authored
This allows reporting issues early when creating feature names.
-
Nathan Ridge authored
This is a follow-up to D81845.
-
Jacques Pienaar authored
-
Nathan Ridge authored
Summary: The initial implementation of typeHierarchy/resolve only supported cases where an initial request was made for children, and then typeHierarchy/resolve was used to get additional levels of children. However, a client may also want to make an initial request for parents, and then show other children of those parents, so support typeHierarchy/resolve for items returned in response to a request for parents as well. Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D81845
-
Alex Zinenko authored
Similarly to `scf::ForOp`, introduce additional `function_ref` arguments to `AffineForOp::build` that can be used to populate the body of the loop during its construction. Provide compatibility functions for constructing affine loop nests using `edsc::ScopedContext`. `edsc::AffineLoopNestBuilder` and reletad functionality is now deprecated and will be removed soon, users are expected to switch to `affineLoopNestBuilder` that provides similar functionality with a simpler OpBuilder-based implementation. Differential Revision: https://reviews.llvm.org/D81754
-
Alex Zinenko authored
In the affine symbol and dimension check, the code currently assumes `getAffineScope` and its users `isValidDim` and `isValidSymbol` are only called on values defined in regions that have a parent Op with `AffineScope` trait. This is not necessarily the case, and these functions may be called on valid IR that does not satisfy this assumption. Return `nullptr` from `getAffineScope` if there is no parent op with `AffineScope` trait. Treat this case conservatively in `isValidSymbol` by only accepting as symbols the values that are guaranteed to be symbols (constants, and certain operations). No modifications are necessary to `isValidDim` that delegates most of the work to `isValidDim`. Differential Revision: https://reviews.llvm.org/D81753
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D81694
-
Denys Petrov authored
Summary: Implemented RangeConstraintManager::getRangeForComparisonSymbol which handles comparison operators. RangeConstraintManager::getRangeForComparisonSymbol cares about the sanity of comparison expressions sequences helps reasonably to branch an exploded graph. It can significantly reduce the graph and speed up the analysis. For more details, please, see the differential revision. This fixes https://bugs.llvm.org/show_bug.cgi?id=13426 Differential Revision: https://reviews.llvm.org/D78933
-
Matt Arsenault authored
These are legal since we can do a 96-bit load on some subtargets, but this is only for vector loads. If we can't widen the load, it needs to be broken down once known scalar. For 16-byte alignment, widen to a 128-bit load.
-
Wouter van Oortmerssen authored
Context: https://github.com/WebAssembly/memory64/blob/master/proposals/memory64/Overview.md This is just a first step, adding the new instruction variants while keeping the existing 32-bit functionality working. Some of the basic load/store tests have new wasm64 versions that show that the basics of the target are working. Further features need implementation, but these will be added in followups to keep things reviewable. Differential Revision: https://reviews.llvm.org/D80769
-
Erich Keane authored
In 1eddce41, I fixed a non-deterministic result problem by switching a SmallPtrSet to a SmallSetVector to ensure we iterated it deterministically. Unfortunately, this seems to show a surprisingly significant compiletime impact. This patch does 2 things in an attempt to fix this: First, it makes the 'small size' optimization 4 instead of 2. As these are pointers, this only increases the size of Sema by 4 sizeof(pointer)s (2 for the set, 2 for the vector). Second, instead of using SmallSetVector, which is a SmallVector + SmallDenseSet, it uses a SetVector of SmallVector + SmallPtrSet. The hope is that the pointer-specific optimizations of the SmallPtrSet will minimize the impact on compile-time.
-
Florian Hahn authored
Also enables a now-passing test case, that exposed a crash caused by the wrong order.
-
Simon Pilgrim authored
Pull the lowering code out of LowerVectorAllZeroTest (and rename it MatchVectorAllZeroTest). We should be able to reuse this in combineVectorSizedSetCCEquality as well. Another cleanup to simplify D81547.
-
Stefan Pintilie authored
We should not be adding the relocation addend to the instruction encoding. This patch removes that and sets those bits to zero. Differential Revision: https://reviews.llvm.org/D81082
-
Florian Hahn authored
Additional tests added ahead of partial overlapping store merging.
-
Dmitry Polukhin authored
Summary: Also added BuildDirectory for completness and removed unused `Fix`. Test Plan: check-all Reviewers: alexfh, gribozavr2 Subscribers: xazax.hun, cfe-commits Tags: #clang-tools-extra, #clang Differential Revision: https://reviews.llvm.org/D79285
-
Dominik Montada authored
-
Dominik Montada authored
-
Simon Pilgrim authored
Reduce by splitting the vector until we reach the target size for PTEST/MOVMSK_PCMPEQ. There might be some cases where AVX512 can perform this with 512-bit vectors but so far I haven't encountered any such pattern that reaches LowerVectorAllZeroTest. Prep work for D81547
-
Hans Wennborg authored
> relocImm was a complexPattern that handled both ConstantSDNode > and X86Wrapper. But it was only applied selectively because using > it would cause patterns to be not importable into FastISel or > GlobalISel. So it only got applied to flag setting instructions, > stores, RMW arithmetic instructions, and rotates. > > Most of the test changes are a result of making patterns available > to GlobalISel or FastISel. The absolute-cmp.ll change is due to > this fixing a pattern ordering issue to make an absolute symbol > match to an 8-bit immediate before trying a 32-bit immediate. > > I tried to use PatFrags to reduce the repetition, but I was getting > errors from TableGen. This caused "Invalid EmitNode" assertions, see the llvm-commits thread for discussion.
-
Simon Pilgrim authored
matchScalarReduction should return all its source vectors with the same type, so we can safely perform the OR reduction with the original type. So we just need to bitcast for PTEST/PCMPEQB with the final reduced vector.
-
Yvan Roux authored
Now that saving LR into a register is handled, some register constraints are needed to keep machine-outliner-no-lr-save.mir meaningful.
-
Kevin P. Neal authored
In preparation for a patch that will enforce new rules for the usage of the strictfp attribute, this patch introduces auto-upgrade behavior that will replace the strictfp attribute on callsites with nobuiltin if the enclosing function declaration doesn't also have the strictfp attribute. This auto-upgrade isn't being performed on .ll files because that would prevent us from writing a test for the forthcoming verifier behavior. Differential Revision: https://reviews.llvm.org/D70096
-
Jeff Mott authored
_ExtInt types - Fix computed size for _ExtInt types passed to checked arithmetic builtins. - Emit diagnostic when signed _ExtInt larger than 128-bits is passed to __builtin_mul_overflow. - Change Sema checks for builtins to accept placeholder types. Differential Revision: https://reviews.llvm.org/D81420
-
Marcel Koester authored
Differential Revision: https://reviews.llvm.org/D81839
-
Balázs Kéri authored
Summary: After an escaped FILE* stream handle it is not possible to make reliable checks on it because any function call can have effect on it. Reviewers: Szelethus, baloghadamsoftware, martong, NoQ Reviewed By: NoQ Subscribers: NoQ, rnkovacs, xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, gamesh411, Charusso, martong, ASDenysPetrov, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80699
-
Yvan Roux authored
Outline chunks of code which need to save and restore the link register when a spare register can be used to it. Differential Revision: https://reviews.llvm.org/D80127
-
Daniel Kiss authored
Summary: SCTLR_EL1.BT[01] controls the PACI[AB]SP compatibility with PBYTE 11 (see [1]) This bit will be set to zero so PACI[AB]SP are equal to BTI C instruction only. [1] https://developer.arm.com/docs/ddi0595/b/aarch64-system-registers/sctlr_el1 Reviewers: chill, tamas.petz, pbarrio, ostannard Reviewed By: tamas.petz, ostannard Subscribers: kristof.beyls, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81746
-
Jacques Pienaar authored
Use ::Adaptor alias instead uniformly. Makes the naming more consistent as adaptor can refer to attributes now too. Differential Revision: https://reviews.llvm.org/D81789
-
Matt Arsenault authored
The logic is written for what loads/stores should be selectable. There are a set of cases that should be selectable, but due to missing MVTs and/or selection patterns, will fail to select. I think eventually load/store select patterns should ignore the type and only look at the value size, but until that happens, bitcast these to equivalent i32 vectors.
-
Matt Arsenault authored
These were failing due to an unlegalizable G_CONCAT_VECTORS due to registers with types that are naturally illegal.
-
Matt Arsenault authored
Extract subvectors and cast to the result element type before remerging.
-