OSDN Git Service
Reid Kleckner [Tue, 3 May 2016 00:45:14 +0000 (00:45 +0000)]
[codeview] Maintain the type enum-to-classname mapping in the .def file
This way it will be easy to stamp out something like a type visitor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268347
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 3 May 2016 00:28:21 +0000 (00:28 +0000)]
Parse the TPI (type information) stream of PDB files.
This parses the TPI stream (stream 2) from the PDB file. This stream
contains some header information followed by a series of codeview records.
There is some additional complexity here in that alongside this stream of
codeview records is a serialized hash table in order to efficiently query
the types. We parse the necessary bookkeeping information to allow us to
reconstruct the hash table, but we do not actually construct it yet as
there are still a few things that need to be understood first.
Differential Revision: http://reviews.llvm.org/D19840
Reviewed By: ruiu, rnk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268343
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 3 May 2016 00:28:04 +0000 (00:28 +0000)]
Move llvm-readobj/StreamWriter to Support.
We wish to re-use this from llvm-pdbdump, and it provides a nice
way to print structured data in scoped format that could prove
useful for many other dumping tools as well. Moving to support
and changing name to ScopedPrinter to better reflect its purpose.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268342
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 3 May 2016 00:27:28 +0000 (00:27 +0000)]
ThinLTO: do not import function whose linkage prevents inlining.
There is not point in importing a "weak" or a "linkonce" function
since we won't be able to inline it anyway.
We already had a targeted check for WeakAny, this is using the
same check on GlobalValue as the inline, i.e.
isMayBeOverriddenLinkage()
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268341
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 3 May 2016 00:24:32 +0000 (00:24 +0000)]
livePhysRegs: Pass MBB by reference in addLive{Ins|Outs}(); NFC
The block must no be nullptr for the addLiveIns()/addLiveOuts()
function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268340
91177308-0d34-0410-b5e6-
96231b3b80d8
Wolfgang Pieb [Tue, 3 May 2016 00:22:09 +0000 (00:22 +0000)]
Moved test case for r268323 to DebugInfo/X86 to unbreak aarch64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268339
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Yung [Tue, 3 May 2016 00:12:59 +0000 (00:12 +0000)]
Adding period to the end of a comment to test out commit access.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268337
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 3 May 2016 00:08:46 +0000 (00:08 +0000)]
LivePhysRegs: Automatically determine presence of pristine regs.
Remove the AddPristinesAndCSRs parameters from
addLiveIns()/addLiveOuts().
We need to respect pristine registers after prologue epilogue insertion,
Seeing that we got this wrong in at least two commits already, we should
rather pay the small price to query MachineFrameInfo for it.
There are three cases that did not set AddPristineAndCSRs to true even
after register allocation:
- ExecutionDepsFix: live-out registers are used as a hint that the
register is used soon. This is not true for pristine registers so
use the new addLiveOutsNoPristines() to maintain this behaviour.
- SystemZShortenInst: Not setting AddPristineAndCSRs to true looks like
a bug, should do the right thing automatically now.
- StackMapLivenessAnalysis: Not adding pristine registers looks like a
bug to me. Added a FIXME comment but maintain the current behaviour
as a change may need to get coordinated with GC runtimes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268336
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 3 May 2016 00:04:07 +0000 (00:04 +0000)]
MITests: Update libdeps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268335
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Mon, 2 May 2016 23:45:03 +0000 (23:45 +0000)]
NFC: An iterator for stepping through CodeView type stream in llvm-readobj
This is a small refactoring step toward moving CodeView type stream logic from llvm-readobj to a library. It abstracts the logic of stepping through the stream into an iterator class and updates llvm-readobj to use that iterator. This has no functional change; llvm-readobj produces identical output.
The next step is to abstract the parsing of the different leaf types and then move that and the iterator into a library.
Since this is my first contrib outside LLDB, please let me know if I'm messing up on any of the LLVM style guidelines, idioms, or patterns.
Differential Revision: http://reviews.llvm.org/D19746
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268334
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 2 May 2016 23:22:18 +0000 (23:22 +0000)]
[MC] Create unique .pdata sections for every .text section
Summary:
This adds a unique ID to the COFF section uniquing map, similar to the
one we have for ELF. The unique id is not currently exposed via the
assembler because we don't have a use case for it yet. Users generally
create .pdata with the .seh_* family of directives, and the assembler
internally needs to produce .pdata and .xdata sections corresponding to
the code section.
The association between .text sections and the assembler-created .xdata
and .pdata sections is maintained as an ID field of MCSectionCOFF. The
CFI-related sections are created with the given unique ID, so if more
code is added to the same text section, we can find and reuse the CFI
sections that were already created.
Reviewers: majnemer, rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D19376
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268331
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Mon, 2 May 2016 23:05:48 +0000 (23:05 +0000)]
Add unittest for LiveIntervalAnalysis::handleMove()
This re-applies r260905. It requires LiveIntervals to not require
LiveVariables which was reverted and re-applied in r267954.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268329
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 2 May 2016 22:58:59 +0000 (22:58 +0000)]
[MachineBlockPlacement] Let the target optimize the branches at the end.
After the layout of the basic blocks is set, the target may be able to get rid
of unconditional branches to fallthrough blocks that the generic code does not
catch. This happens any time TargetInstrInfo::AnalyzeBranch is not able to
analyze all the branches involved in the terminators sequence, while still
understanding a few of them.
In such situation, AnalyzeBranch can directly modify the branches if it has been
instructed to do so.
This patch takes advantage of that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268328
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 2 May 2016 22:58:54 +0000 (22:58 +0000)]
[X86] Model FAULTING_LOAD_OP as a terminator and branch.
This operation may branch to the handler block and we do not want it
to happen anywhere within the basic block.
Moreover, by marking it "terminator and branch" the machine verifier
does not wrongly assume (because of AnalyzeBranch not knowing better)
the branch is analyzable. Indeed, the target was seeing only the
unconditional branch and not the faulting load op and thought it was
a simple unconditional block.
The machine verifier was complaining because of that and moreover,
other optimizations could have done wrong transformation!
In the process, simplify the representation of the handler block in
the faulting load op. Now, we directly reference the handler block
instead of using a label. This has the benefits of:
1. MC knows how to issue a label for a BB, so leave that to it.
2. Accessing the target BB from its label is painful, whereas it is
direct from a MBB operand.
Note: The 2 bytes offset in implicit-null-check.ll comes from the
fact the unconditional jumps are not removed anymore, as the whole
terminator sequence is not analyzable anymore.
Will fix it in a subsequence commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268327
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 2 May 2016 22:53:32 +0000 (22:53 +0000)]
Simplify. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268326
91177308-0d34-0410-b5e6-
96231b3b80d8
Wolfgang Pieb [Mon, 2 May 2016 22:50:51 +0000 (22:50 +0000)]
DebugInfo: Avoid propagating incorrect debug locations in SelectionDAG via CSE.
Summary:
When SelectionDAG performs CSE it is possible that the context's source
location is different from that of the selected node. This can lead to
incorrect line number records. We update the debug location to the
one that occurs earlier in the instruction sequence.
This fixes PR21006.
Reviewers: echristo, sdmitrouk
Subscribers: jevinskie, asl, llvm-commits
Differential Revision: http://reviews.llvm.org/D12094
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268323
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 2 May 2016 22:26:04 +0000 (22:26 +0000)]
Revert "ThinLTO: do not import function whose linkage prevents inlining."
This reverts commit r268315, the tests are not passing.
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268317
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 2 May 2016 22:16:57 +0000 (22:16 +0000)]
[llvm-pdbdump] Fix read past EOF when file is too small.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268316
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 2 May 2016 22:11:27 +0000 (22:11 +0000)]
ThinLTO: do not import function whose linkage prevents inlining.
There is not point in importing a "weak" or a "linkonce" function
since we won't be able to inline it anyway.
We already had a targeted check for WeakAny, this is using the
same check on GlobalValue as the inline, i.e.
isMayBeOverriddenLinkage()
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268315
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 2 May 2016 21:41:03 +0000 (21:41 +0000)]
Fix llvm-size to exit with non zero when it can’t open a file.
rdar://
26027819
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268313
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 2 May 2016 21:33:36 +0000 (21:33 +0000)]
Remove redundant return, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268312
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 2 May 2016 21:32:07 +0000 (21:32 +0000)]
Fix a typo, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268311
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 2 May 2016 21:12:48 +0000 (21:12 +0000)]
[X86][SSE] Added placeholder for 128/256-bit wide shuffle combines
Begun adding placeholder for future support for vperm2f128/vshuff64x2 style 128/256-bit wide shuffles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268306
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 2 May 2016 21:06:57 +0000 (21:06 +0000)]
Don't try to create thin bsd archives.
Not such variant has been specified yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268305
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Mon, 2 May 2016 21:06:14 +0000 (21:06 +0000)]
[dsymutil] Create the temporary files in the system temp directory.
llvm-dsymutil used to create the temporary files in the output directory.
This works fine except when the output directory contains a '%' char, which
is then replaced by llvm::sys::fs::createUniqueFile() generating an invalid
path.
Just use the default temp dir for those files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268304
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 2 May 2016 20:33:59 +0000 (20:33 +0000)]
Code refactoring -- preparation for new PM porting /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268301
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 2 May 2016 20:30:47 +0000 (20:30 +0000)]
[codeview] Isolate type dumping from object file state
This isolates the state we use for type dumping from the knowledge of
object files. We can use CVTypeDumper to dump types from anywhere in
memory now.
NFC
Reviewers: zturner
Differential Revision: http://reviews.llvm.org/D19824
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268300
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 2 May 2016 20:28:12 +0000 (20:28 +0000)]
Thread Expected<...> up from libObject’s getType() for symbols to allow llvm-objdump to produce a good error message.
Produce another specific error message for a malformed Mach-O file when a symbol’s
section index is more than the number of sections. The existing test case in test/Object/macho-invalid.test
for macho-invalid-section-index-getSectionRawName now reports the error with the message indicating
that a symbol at a specific index has a bad section index and that bad section index value.
Again converting interfaces to Expected<> from ErrorOr<> does involve
touching a number of places. Where the existing code reported the error with a
string message or an error code it was converted to do the same.
Also there some were bugs in the existing code that did not deal with the
old ErrorOr<> return values. So now with Expected<> since they must be
checked and the error handled, I added a TODO and a comment:
"// TODO: Actually report errors helpfully" and a call something like
consumeError(NameOrErr.takeError()) so the buggy code will not crash
since needed to deal with the Error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268298
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 2 May 2016 20:13:51 +0000 (20:13 +0000)]
AMDGPU: Custom lower v2i32 loads and stores
This will allow us to split up 64-bit private accesses when
necessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268296
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 2 May 2016 20:11:44 +0000 (20:11 +0000)]
AMDGPU/SI: Use v_readfirstlane_b32 when restoring SGPRs spilled to scratch
We were using v_readlane_b32 with the lane set to zero, but this won't
work if thread 0 is not active.
Differential Revision: http://reviews.llvm.org/D19745
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268295
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 2 May 2016 20:07:26 +0000 (20:07 +0000)]
AMDGPU: Make i64 loads/stores promote to v2i32
Now that unaligned access expansion should not attempt
to produce i64 accesses, we can remove the hack in
PreprocessISelDAG where this is done.
This allows splitting i64 private accesses while
allowing the new add nodes indexing the vector components
can be folded with the base pointer arithmetic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268293
91177308-0d34-0410-b5e6-
96231b3b80d8
John Regehr [Mon, 2 May 2016 19:58:00 +0000 (19:58 +0000)]
[LVI] Add an API to LazyValueInfo so that it can export ConstantRanges
that it computes. Currently this is used for testing and precision
tuning, but it might be used by optimizations later.
Differential Revision: http://reviews.llvm.org/D19179
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268291
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 2 May 2016 19:46:58 +0000 (19:46 +0000)]
[X86][AVX2] Added 128-bit wide shuffle test
Demonstrate missing 128-bit wide shuffle combine support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268290
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 2 May 2016 19:45:10 +0000 (19:45 +0000)]
Fix instance of -Winconsistent-missing-override in AMDGPU code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268289
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 2 May 2016 19:43:22 +0000 (19:43 +0000)]
Revert "[SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics"
This reverts commit r268254.
This change causes assertion failures while building Chromium. Reduced
test case coming soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268288
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 2 May 2016 19:37:56 +0000 (19:37 +0000)]
AMDGPU/SI: Set the kill flag on temp VGPRs used to restore SGPRs from scratch
Summary:
When we restore an SGPR value from scratch, we first load it into a
temporary VGPR and then use v_readlane_b32 to copy the value from the
VGPR back into an SGPR.
We weren't setting the kill flag on the VGPR in the v_readlane_b32
instruction, so the register scavenger wasn't able to re-use this
temp value later.
I wasn't able to create a lit test for this.
Reviewers: arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D19744
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268287
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Mon, 2 May 2016 19:06:51 +0000 (19:06 +0000)]
Fix typos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268281
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 2 May 2016 19:06:04 +0000 (19:06 +0000)]
Typo. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268280
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 2 May 2016 19:06:02 +0000 (19:06 +0000)]
Use false rather than 0 for a boolean value. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268279
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 2 May 2016 18:36:58 +0000 (18:36 +0000)]
Fix build breakage due to implicit conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268277
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 2 May 2016 18:30:08 +0000 (18:30 +0000)]
ARM: fix handling of SUB immediates in peephole opt.
We were negating an immediate that was going to be used in a SUBri form
unnecessarily. Since ADD/SUB are very similar we *can* do that, but we have to
change the SUB to an ADD at the same time. This also applies to ADD, and allows
us to handle a slightly larger range of immediates for those two operations.
rdar://
25992245
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268276
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Holewinski [Mon, 2 May 2016 18:12:02 +0000 (18:12 +0000)]
[NVPTX] Fix sign/zero-extending ldg/ldu instruction selection
Summary:
We don't have sign-/zero-extending ldg/ldu instructions defined,
so we need to emulate them with explicit CVTs. We were originally
handling the i8 case, but not any other cases.
Fixes PR26185
Reviewers: jingyue, jlebar
Subscribers: jholewinski
Differential Revision: http://reviews.llvm.org/D19615
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268272
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 2 May 2016 18:10:00 +0000 (18:10 +0000)]
[codeview] Don't dump type stream bytes unless asked to
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268271
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 2 May 2016 18:09:21 +0000 (18:09 +0000)]
PDB - Instead of hardcoding stream numbers, use an enum.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268270
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Mon, 2 May 2016 18:09:19 +0000 (18:09 +0000)]
[CFLAA] Fix a use-of-invalid-pointer bug.
As shown in the diff, we used to add to CFLAA's cache by doing
`Cache[Fn] = buildSetsFrom(Fn)`. `buildSetsFrom(Fn)` may cause `Cache`
to reallocate its underlying storage, if this happens and `Cache[Fn]`
was evaluated prior to `buildSetsFrom(Fn)`, then we'll store the result
to a bad address.
Patch by Jia Chen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268269
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 2 May 2016 18:09:14 +0000 (18:09 +0000)]
Parse PDB Name Hash Table
PDB has a lot of similar data structures. We already have code
for parsing a Name Map, but PDB seems to have a different but
very similar structure that is a hash table. This is the
beginning of code needed in order to parse the name hash table,
but it is not yet complete. It parses the basic metadata of
the hash table, the bucket array, and the names buffer, but
doesn't use any of these fields yet as the data structure
requires a non-trivial amount of work to understand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268268
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 2 May 2016 18:05:17 +0000 (18:05 +0000)]
AMDGPU: Move R600 specific code out of AMDGPUISelLowering.cpp
Reviewers: arsenm
Subscribers: jvesely, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D19736
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268267
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 2 May 2016 18:03:33 +0000 (18:03 +0000)]
ReversePostOrderFunctionAttrs is not modifying the call graph, let's preserve it.
When running cc1 with -flto=thin, it is followed by GlobalOpt, which
requires the callgraph. This saves rebuilding one.
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268266
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 2 May 2016 18:02:24 +0000 (18:02 +0000)]
AMDGPU/SI: Fix bug in SIInstrInfo::insertWaitStates() uncovered by r268260
We can't use MI->getDebugLoc() when MI is an iterator that could be
MBB.end().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268265
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 2 May 2016 17:39:06 +0000 (17:39 +0000)]
AMDGPU/SI: Use the hazard recognizer to break SMEM soft clauses
Summary:
Add support for detecting hazards in SMEM soft clauses, so that we only
break the clauses when necessary, either by adding s_nop or re-ordering
other alu instructions.
Reviewers: arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18870
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268260
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Mon, 2 May 2016 17:37:01 +0000 (17:37 +0000)]
AMDGPU: llvm.SI.fs.constant is a source of divergence
Summary:
This intrinsic is used to get flat-shaded fragment shader inputs. Those are
uniform across a primitive, but a fragment shader wave may process pixels from
multiple primitives (as indicated by the prim_mask), and so that's where
divergence can arise.
Reviewers: arsenm, tstellarAMD
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D19747
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268259
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 2 May 2016 17:29:55 +0000 (17:29 +0000)]
ScheduleDAGInstrs.cpp: Don't peel the iterator when it points the end. This will fix the crash in r268143.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268257
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 2 May 2016 17:25:22 +0000 (17:25 +0000)]
[WebAssembly] Rename memory_size intrinsic to current_memory
This follows the recent renaming in the wasm spec.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268255
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 2 May 2016 17:22:54 +0000 (17:22 +0000)]
[SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics
Make it possible that TryToSimplifyUncondBranchFromEmptyBlock merges empty
basic block including lifetime intrinsics as well as phi nodes and
unconditional branch into its successor or predecessor(s).
If successor of empty block has single predecessor, all contents including
lifetime intrinsics are sinked into the successor. Otherwise, they are
hoisted into its predecessor(s) and then merged into the predecessor(s).
Patch by Josh Yoon <josh.yoon@samsung.com>!
Differential Revision: http://reviews.llvm.org/D19257
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268254
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 2 May 2016 16:53:16 +0000 (16:53 +0000)]
Move createReversePostOrderFunctionAttrsPass right after the inliner is done
This is where it was originally, until LoopVersioningLICM was
inserted before in r259986, I don't believe it was on purpose.
Differential Revision: http://reviews.llvm.org/D19809
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268252
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 2 May 2016 16:52:00 +0000 (16:52 +0000)]
[LLE] Fix typo from r263058
This was meant to check unit stride for both the load and the store.
Thanks to Roman Shirokiy for noticing this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268251
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Mon, 2 May 2016 16:51:26 +0000 (16:51 +0000)]
Add llvm-pdbdump to the tool substitutions list in lit. NFC.
This adds llvm-pdbdump to the list of tools which get printed with
the full path in verbose mode. This makes it easier to take the
whole run line from verbose output and run it again without prepending
with the builds bin directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268250
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 2 May 2016 16:45:02 +0000 (16:45 +0000)]
Fixed signed/unsigned comparison warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268249
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 2 May 2016 16:45:00 +0000 (16:45 +0000)]
Remove extra whitespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268248
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 2 May 2016 16:23:09 +0000 (16:23 +0000)]
AMDGPU/SI: Use hazard recognizer to detect DPP hazards
Reviewers: arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18603
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268247
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 15:49:09 +0000 (15:49 +0000)]
remove blank lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268246
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 15:32:10 +0000 (15:32 +0000)]
[InstCombine] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268245
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 15:25:49 +0000 (15:25 +0000)]
[InstCombine] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268244
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 15:21:41 +0000 (15:21 +0000)]
[InstCombine] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268242
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 15:18:13 +0000 (15:18 +0000)]
[InstCombine] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268241
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 15:06:55 +0000 (15:06 +0000)]
[InstCombine] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268239
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 2 May 2016 14:58:22 +0000 (14:58 +0000)]
[X86][SSE] Dropped X86ISD::FGETSIGNx86 and use MOVMSK instead for FGETSIGN lowering
movmsk.ll tests are unchanged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268237
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 2 May 2016 14:56:21 +0000 (14:56 +0000)]
Cleanup comments. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268236
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 2 May 2016 14:50:30 +0000 (14:50 +0000)]
Cleanup comments. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268235
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 2 May 2016 14:48:03 +0000 (14:48 +0000)]
Silence unused variable warnings; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268234
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 2 May 2016 14:32:17 +0000 (14:32 +0000)]
Cleanup comments. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268233
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 2 May 2016 14:21:55 +0000 (14:21 +0000)]
[InstCombine] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268232
91177308-0d34-0410-b5e6-
96231b3b80d8
David L Kreitzer [Mon, 2 May 2016 13:45:25 +0000 (13:45 +0000)]
Enable the X86 call frame optimization for the 64-bit targets that allow it.
Fixes PR27241.
Differential Revision: http://reviews.llvm.org/D19688
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268227
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 2 May 2016 13:45:06 +0000 (13:45 +0000)]
Expose a getFullName for thin archive members.
It will be used in lld.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268226
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Mon, 2 May 2016 10:42:47 +0000 (10:42 +0000)]
[SystemZ] Temporarily disable codegen test int-add-12.ll.
This checks for AGSI transformation, which is temporarily disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268219
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Mon, 2 May 2016 09:37:44 +0000 (09:37 +0000)]
[SystemZ] Fix in restoreCalleeSavedRegisters()
Only add operands for GRs to the LMG.
Reviewed by Ulrich Weigand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268216
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Mon, 2 May 2016 09:37:40 +0000 (09:37 +0000)]
[SystemZ] Mark CC defs as dead whenever possible.
Marking implicit CC defs as dead everywhere except when CC is actually
defined and used explicitly, is important since the post-ra scheduler
will otherwise insert edges between instructions unnecessarily.
Also temporarily disable LA(Y)-> AGSI optimization in
foldMemoryOperandImpl(), since this inroduces a def of the CC reg,
which is illegal unless it is known to be dead.
Reviewed by Ulrich Weigand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268215
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 2 May 2016 05:44:21 +0000 (05:44 +0000)]
[X86] Fix a bug in LOCK arithmetic operation pattern matching where the wrong immediate predicate check was being used for 64-bit instructions with 8-bit immediates.
This didn't cause a bug because the order of the patterns ensured that the 64-bit instructions with 32-bit immediates were selected first.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268212
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 2 May 2016 05:30:26 +0000 (05:30 +0000)]
Fix grammar and correct comment - the debug information wasn't incorrect, rather suboptimal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268211
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 2 May 2016 02:30:18 +0000 (02:30 +0000)]
[llvm-readobj] Dump hash as part of -version-info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268210
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 2 May 2016 01:53:30 +0000 (01:53 +0000)]
[CodeGen] Add OPC_MoveChild0-OPC_MoveChild7 opcodes to isel matching tables to optimize table size. Shaves about 12K off the X86 matcher table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268209
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 1 May 2016 22:51:14 +0000 (22:51 +0000)]
[GlobalDCE] Modernize. Use FileCheck instead of grep.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268207
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 20:43:02 +0000 (20:43 +0000)]
[InstCombine][SSE] Added support to VPERMD/VPERMPS to shuffle combine to accept UNDEF elements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268206
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 20:33:25 +0000 (20:33 +0000)]
Dropped FIXME comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268205
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 20:22:42 +0000 (20:22 +0000)]
[InstCombine][SSE] Added support to VPERMILVAR to shuffle combine to accept UNDEF elements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268204
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 20:06:47 +0000 (20:06 +0000)]
[InstCombine][AVX] Fixed PERMILVAR identity tests and added additional decode tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268203
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 19:26:21 +0000 (19:26 +0000)]
[InstCombine][SSE] Added support to PSHUFB to shuffle combine to accept UNDEF elements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268202
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 18:28:45 +0000 (18:28 +0000)]
[InstCombine][SSE] Regenerate MOVSX/MOVZX tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268201
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 17:38:32 +0000 (17:38 +0000)]
[AVX512] VPACKUSWB/VPACKSSWB should not be encoded with EVEX.W=1. While there fix the execution domain for VPACKSSDW/VPACKUSDW.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268200
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 16:41:22 +0000 (16:41 +0000)]
[InstCombine][AVX2] Combine VPERMD/VPERMPS intrinsics with constant masks to shufflevector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268199
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 15:52:31 +0000 (15:52 +0000)]
Fixed MSVC 'not all control paths return a value' warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268198
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 1 May 2016 15:27:47 +0000 (15:27 +0000)]
Document the LLVM_ENABLE_EXPENSIVE_CHECKS cmake option introduced in r268050
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268197
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 1 May 2016 13:29:12 +0000 (13:29 +0000)]
getelementptr instruction, support index vector of EVT.
Differential Revision: http://reviews.llvm.org/D19775
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268195
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 1 May 2016 08:40:00 +0000 (08:40 +0000)]
Change AVX512 braodcastsd/ss patterns interaction with spilling . New implementation take a scalar register and generate a vector without COPY_TO_REGCLASS (turn it into a VR128 register ) .The issue is that during register allocation we may spill a scalar value using 128-bit loads and stores, wasting cache bandwidth.
Differential Revision: http://reviews.llvm.org/D19579
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268190
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 06:52:19 +0000 (06:52 +0000)]
[AVX512] Prefer AVX512 VPACK instructions over AVX/AVX2 instructions when VLX and BWI are supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268189
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 06:24:57 +0000 (06:24 +0000)]
[AVX512] Add HasVLX to the 128/256-bit versions of VPACKSSDW/USDW/SSWB/USWB and VPMADDUBSW/VPMADDWD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268188
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 05:57:06 +0000 (05:57 +0000)]
[AVX512] Make sure 128/256-bit DQI versions of VAND/VANDN/VOR/VXOR are also marked as requiring VLX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268186
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 05:22:15 +0000 (05:22 +0000)]
[X86] Add an AddedComplexity to another pattern to put it near similar in the output file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268184
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 05:22:13 +0000 (05:22 +0000)]
[X86] Remove a seemlingly unused pattern. The same pattern appears elsewhere with an AddedComplexity that made this unreachable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268183
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 1 May 2016 04:59:49 +0000 (04:59 +0000)]
[X86] Add AddedComplexity to keep some similar patterns near each other in the output file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268181
91177308-0d34-0410-b5e6-
96231b3b80d8