- Dec 22, 2016
-
-
Krzysztof Parzyszek authored
When the pipeliner is renaming phi values, it may need to iterate through the phi operands to check for other phis. However, the pipeliner should stop once it reaches a phi that is outside the pipelined loop. Also, when the generateExistingPhis code is unable to reuse an existing phi, the default code that computes the PhiOp2 is only to be used when the pipeliner is generating the kernel. Otherwise, the phi may be a value computed earlier in the same epilog. Patch by Brendon Cahoon. llvm-svn: 290355
-
Matt Arsenault authored
llvm-svn: 290351
-
Davide Italiano authored
We need to hook up here to get it working with the new PM. Add a test while here (and remove a typo). llvm-svn: 290350
-
Matt Arsenault authored
llvm-svn: 290349
-
Matt Arsenault authored
llvm-svn: 290348
-
Matt Arsenault authored
Caused by dereferencing end iterator when trying to const cast the iterator. Patch by Martin Sherburn llvm-svn: 290347
-
Davide Italiano authored
The code have been developed by Daniel Berlin over the years, and the new implementation goal is that of addressing shortcomings of the current GVN infrastructure, i.e. long compile time for large testcases, lack of phi predication, no load/store value numbering etc... The current code just implements the "core" GVN algorithm, although other pieces (load coercion, phi handling, predicate system) are already implemented in a branch out of tree. Once the core is stable, we'll start adding pieces on top of the base framework. The test currently living in test/Transform/NewGVN are a copy of the ones in GVN, with proper `XFAIL` (missing features in NewGVN). A flag will be added in a future commit to enable NewGVN, so that interested parties can exercise this code easily. Differential Revision: https://reviews.llvm.org/D26224 llvm-svn: 290346
-
Dan Gohman authored
llvm-svn: 290345
-
Dan Gohman authored
llvm-svn: 290344
-
Dan Gohman authored
WebAssembly's load/store offsets are unsigned and don't wrap, so it's not valid to fold in a negative offset. llvm-svn: 290342
-
Sam Kolton authored
Summary: This is needed for later SDWA support in CodeGen. Reviewers: vpykhtin, tstellarAMD Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye Differential Revision: https://reviews.llvm.org/D27412 llvm-svn: 290338
-
Sam Kolton authored
Summary: Real instruction should copy constraints from real instruction. This allows auto-generated disassembler to correctly process tied operands. Reviewers: nhaustov, vpykhtin, tstellarAMD Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye Differential Revision: https://reviews.llvm.org/D27847 llvm-svn: 290336
-
Ayman Musa authored
Replacing the memory operand in the ymm version of VPMADDWD from i128mem to i256mem. Differential Revision: https://reviews.llvm.org/D28024 llvm-svn: 290333
-
Chandler Carruth authored
a space after the comma in template arguments with our hacky type name system. llvm-svn: 290331
-
Chandler Carruth authored
I was staring at these and didn't realize these were module-layer proxies as opposed to some other layer. Justin and I have a plan to rename things to make the names themselves much easier to reason about, but I at least want the CHECK lines to be precise for now. llvm-svn: 290328
-
Chandler Carruth authored
declarations. We're using a custom class here instead of the helper template, these bits just didn't get deleted when the other bits did get deleted. This was found by a really nice MSVC warning about explicitly instantiating a template where some member functions aren't defined and thus can't be instantiatied. llvm-svn: 290327
-
Chandler Carruth authored
from the old pass manager in the new one. I'm not trying to support (initially) the numerous options that are currently available to customize the pass pipeline. If we end up really wanting them, we can add them later, but I suspect many are no longer interesting. The simplicity of omitting them will help a lot as we sort out what the pipeline should look like in the new PM. I've also documented to the best of my ability *why* each pass or group of passes is used so that reading the pipeline is more helpful. In many cases I think we have some questionable choices of ordering and I've left FIXME comments in place so we know what to come back and revisit going forward. But for now, I've left it as similar to the current pipeline as I could. Lastly, I've had to comment out several places where passes are not ported to the new pass manager or where the loop pass infrastructure is not yet ready. I did at least fix a few bugs in the loop pass infrastructure uncovered by running the full pipeline, but I didn't want to go too far in this patch -- I'll come back and re-enable these as the infrastructure comes online. But I'd like to keep the comments in place because I don't want to lose track of which passes need to be enabled and where they go. One thing that seemed like a significant API improvement was to require that we don't build pipelines for O0. It seems to have no real benefit. I've also switched back to returning pass managers by value as at this API layer it feels much more natural to me for composition. But if others disagree, I'm happy to go back to an output parameter. I'm not 100% happy with the testing strategy currently, but it seems at least OK. I may come back and try to refactor or otherwise improve this in subsequent patches but I wanted to at least get a good starting point in place. Differential Revision: https://reviews.llvm.org/D28042 llvm-svn: 290325
-
Adrian Prantl authored
When DwarfExpression is emitting a fragment that is located in a register and that fragment is smaller than the register, and the register must be composed from sub-registers (are you still with me?) the last DW_OP_piece operation must not be larger than the size of the fragment itself, since the last piece of the fragment could be smaller than the last subregister that is being emitted. rdar://problem/29779065 llvm-svn: 290324
-
Adrian Prantl authored
... so it becomes available to DIExpressionCursor. llvm-svn: 290322
-
Matt Arsenault authored
There are helpers for testing for constant or constant build_vector, and for splat ConstantFP vectors, but not for a constantfp or non-splat ConstantFP vector. llvm-svn: 290317
-
Matt Arsenault authored
No tests because these aren't currently used anywhere. llvm-svn: 290316
-
Mehdi Amini authored
Size goes from 72B to 64B per entry. Differential Revision: https://reviews.llvm.org/D27970 llvm-svn: 290314
-
Matt Arsenault authored
FMA is canonicalized to constant in the middle operand. Do the same so fmad matches and avoid an extra combine step. llvm-svn: 290313
-
Matt Arsenault authored
llvm-svn: 290312
-
Matt Arsenault authored
Extend the existing fadd/fsub->fmad combines to produce FMA if allowed. llvm-svn: 290311
-
Matt Arsenault authored
llvm-svn: 290309
-
Matt Arsenault authored
llvm-svn: 290308
-
Matt Arsenault authored
llvm-svn: 290307
-
Matt Arsenault authored
llvm-svn: 290306
-
Matt Arsenault authored
llvm-svn: 290302
-
Matt Arsenault authored
llvm-svn: 290301
-
Matt Arsenault authored
llvm-svn: 290300
-
Matt Arsenault authored
I don't think this matters because ConstantFP is legal. llvm-svn: 290299
-
Peter Collingbourne authored
This is to put the vector into a well defined state. Apparently the state of a vector after being moved from is valid but unspecified. Found with clang-tidy. llvm-svn: 290298
-
Haicheng Wu authored
-256 is a legal indexed address part. Differential Revision: https://reviews.llvm.org/D27537 llvm-svn: 290296
-
Easwaran Raman authored
Differential revision: https://reviews.llvm.org/D28038 llvm-svn: 290295
-
David Majnemer authored
The range metadata inserted by NVVMIntrRange is pessimistic, range metadata already present could be more precise. llvm-svn: 290294
-
Adrian Prantl authored
This patch renumbers the metadata nodes in debug info testcases after https://reviews.llvm.org/D26769. This is a separate patch because it causes so much churn. This was implemented with a python script that pipes the testcases through llvm-as - | llvm-dis - and then goes through the original and new output side-by side to insert all comments at a close-enough location. Differential Revision: https://reviews.llvm.org/D27765 llvm-svn: 290292
-
Adrian Prantl authored
Otherwise these records do not survive roundtrips. llvm-svn: 290291
-
Adrian Prantl authored
llvm-svn: 290288
-