OSDN Git Service

android-x86/external-llvm.git
7 years ago[ARM] GlobalISel: Load i1, i8 and i16 args from stack
Diana Picus [Thu, 26 Jan 2017 09:20:47 +0000 (09:20 +0000)]
[ARM] GlobalISel: Load i1, i8 and i16 args from stack

Add support for loading i1, i8 and i16 arguments from the stack, with or without
the ABI extension flags.

When the ABI extension flags are present, we load a 4-byte value, otherwise we
preserve the size of the load and let the instruction selector replace it with a
LDRB/LDRH. This generates the same thing as DAGISel.

Differential Revision: https://reviews.llvm.org/D27803

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293163 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SLP] Add one more reduction operation for extra argument test to make
Alexey Bataev [Thu, 26 Jan 2017 09:18:41 +0000 (09:18 +0000)]
[SLP] Add one more reduction operation for extra argument test to make
it vectorizable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293162 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PM] Use PoisoningVH correctly when merely deleting entries in a map
Chandler Carruth [Thu, 26 Jan 2017 08:31:54 +0000 (08:31 +0000)]
[PM] Use PoisoningVH correctly when merely deleting entries in a map
with it.

This code was dereferencing the PoisoningVH which isn't allowed once it
is poisoned. But the code itself really doesn't need to access the
pointer, it is just doing the safe stuff of clearing out data structures
keyed on the pointer value.

Change the code to use iterators to erase directly from a DenseMap. This
is also substantially more efficient as it avoids lots of hashing and
lookups to do the erasure. DenseMap supports iterating behind the
iteration which is fairly easy to implement.

Sadly, I don't have a test case here. I'm not even close and I don't
know that I ever will be. The issue is that several of the tricky
aspects of fixing this only show up when you cause the stack's
SmallVector to be in *EXACTLY* the right location. I only ever got
a reproduction for those with Clang, and only with *exactly* the right
command line flags. Any adjustment, even to seemingly unrelated flags,
would make partial and half-way solutions magically start to "work". In
good news, all of this was caught with the LLVM test suite. Also, there
is no *specific* code here that is untested, just that the old pattern
of code won't immediately fail on any test case I've managed to
contrive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293160 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoChapter3/KaleidoscopeJIT.h: Fix a warning. [-Wunused-lambda-capture]
NAKAMURA Takumi [Thu, 26 Jan 2017 08:31:14 +0000 (08:31 +0000)]
Chapter3/KaleidoscopeJIT.h: Fix a warning. [-Wunused-lambda-capture]

"this", aka class members, is not referred in the body.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293159 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[TargetTransformInfo] Add override keywords to supporess -Winconsistent-missing-override.
Craig Topper [Thu, 26 Jan 2017 08:04:27 +0000 (08:04 +0000)]
[TargetTransformInfo] Add override keywords to supporess -Winconsistent-missing-override.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293158 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AVX-512] Move the combine that runs combineBitcastForMaskedOp to the last DAG combin...
Craig Topper [Thu, 26 Jan 2017 07:17:58 +0000 (07:17 +0000)]
[AVX-512] Move the combine that runs combineBitcastForMaskedOp to the last DAG combine phase where I had originally meant to put it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293157 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] When bitcasting INSERT_SUBVECTOR/EXTRACT_SUBVECTOR to match masked operations...
Craig Topper [Thu, 26 Jan 2017 07:17:53 +0000 (07:17 +0000)]
[X86] When bitcasting INSERT_SUBVECTOR/EXTRACT_SUBVECTOR to match masked operations, use the correct type for the immediate operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293156 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[TargetTransformInfo] Refactor and improve getScalarizationOverhead()
Jonas Paulsson [Thu, 26 Jan 2017 07:03:25 +0000 (07:03 +0000)]
[TargetTransformInfo]  Refactor and improve getScalarizationOverhead()

Refactoring to remove duplications of this method.

New method getOperandsScalarizationOverhead() that looks at the present unique
operands and add extract costs for them. Old behaviour was to just add extract
costs for one operand of the type always, which still happens in
getArithmeticInstrCost() if no operands are provided by the caller.

This is a good start of improving on this, but there are more places
that can be improved by using getOperandsScalarizationOverhead().

Review: Hal Finkel
https://reviews.llvm.org/D29017

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293155 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SLP] Fixed test for extra arguments in horizontal reductions.
Alexey Bataev [Thu, 26 Jan 2017 06:19:52 +0000 (06:19 +0000)]
[SLP] Fixed test for extra arguments in horizontal reductions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293153 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[DAGCombiner] Fold extract_subvector of undef to undef. Fold away inserting undef...
Craig Topper [Thu, 26 Jan 2017 05:38:46 +0000 (05:38 +0000)]
[DAGCombiner] Fold extract_subvector of undef to undef. Fold away inserting undef subvectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293152 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Add demanded elts support for the inputs to pclmul intrinsic
Craig Topper [Thu, 26 Jan 2017 05:17:13 +0000 (05:17 +0000)]
[X86] Add demanded elts support for the inputs to pclmul intrinsic

This intrinsic uses bit 0 and bit 4 of an immediate argument to determine which bits of its inputs to read. This patch uses this information to simplify the demanded elements of the input vectors.

Differential Revision: https://reviews.llvm.org/D28979

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293151 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert test commit
Taewook Oh [Thu, 26 Jan 2017 04:34:25 +0000 (04:34 +0000)]
Revert test commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293150 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agotest commit
Taewook Oh [Thu, 26 Jan 2017 04:32:40 +0000 (04:32 +0000)]
test commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293148 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[OptDiag] Predicates to check the same type of IR and MIR opt remarks
Adam Nemet [Thu, 26 Jan 2017 04:03:18 +0000 (04:03 +0000)]
[OptDiag] Predicates to check the same type of IR and MIR opt remarks

It will be used from clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293145 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agogold-plugin: Fix test case.
Peter Collingbourne [Thu, 26 Jan 2017 02:15:08 +0000 (02:15 +0000)]
gold-plugin: Fix test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293137 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PM] Simplify the new PM interface to the loop unroller and expose two
Chandler Carruth [Thu, 26 Jan 2017 02:13:50 +0000 (02:13 +0000)]
[PM] Simplify the new PM interface to the loop unroller and expose two
factory functions for the two modes the loop unroller is actually used
in in-tree: simplified full-unrolling and the entire thing including
partial unrolling.

I've also wired these up to nice names so you can express both of these
being in a pipeline easily. This is a precursor to actually enabling
these parts of the O2 pipeline.

Differential Revision: https://reviews.llvm.org/D28897

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293136 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Loops] Restructure the LoopInfo verify function so that it more
Chandler Carruth [Thu, 26 Jan 2017 02:07:20 +0000 (02:07 +0000)]
[Loops] Restructure the LoopInfo verify function so that it more
directly walks the current loop structure verifying that a matching
structure can be found in a freshly computed version.

Also pull things out of containers when necessary once an issue is found
and print them directly.

This makes it substantially easier to debug verification failures as
the process stops at the exact point in the loop nest where they diverge
and has in easily accessed local variables (or printed to stderr
already) the loops and other information needed to analyze the failure.

Differential Revision: https://reviews.llvm.org/D29142

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293133 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agogold-plugin: Simplify naming of object files created with save-temps or obj-path.
Peter Collingbourne [Thu, 26 Jan 2017 02:07:05 +0000 (02:07 +0000)]
gold-plugin: Simplify naming of object files created with save-temps or obj-path.

Now we never append a number to the file name for task ID 0.

Differential Revision: https://reviews.llvm.org/D29160

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293132 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix --Wunused-function.
Rui Ueyama [Thu, 26 Jan 2017 02:03:58 +0000 (02:03 +0000)]
Fix --Wunused-function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293131 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[libFuzzer] remove a bit of stale code
Kostya Serebryany [Thu, 26 Jan 2017 01:45:54 +0000 (01:45 +0000)]
[libFuzzer] remove a bit of stale code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293129 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[libFuzzer] further simplify __sanitizer_cov_trace_pc_guard
Kostya Serebryany [Thu, 26 Jan 2017 01:34:58 +0000 (01:34 +0000)]
[libFuzzer] further simplify __sanitizer_cov_trace_pc_guard

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293128 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Fold fneg into round instructions
Matt Arsenault [Thu, 26 Jan 2017 01:25:36 +0000 (01:25 +0000)]
AMDGPU: Fold fneg into round instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293127 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ImplicitNullChecks] Add a test demonstrating a case we don't get today
Sanjoy Das [Thu, 26 Jan 2017 01:07:33 +0000 (01:07 +0000)]
[ImplicitNullChecks] Add a test demonstrating a case we don't get today

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293126 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[libFuzzer] simplify the code for __sanitizer_cov_trace_pc_guard and make sure it...
Kostya Serebryany [Thu, 26 Jan 2017 01:04:54 +0000 (01:04 +0000)]
[libFuzzer] simplify the code for __sanitizer_cov_trace_pc_guard and make sure it is not asan/msan-instrumented

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293125 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[LoopUnroll] Properly update loopinfo for runtime unrolling by 2
Michael Kuperstein [Thu, 26 Jan 2017 01:04:11 +0000 (01:04 +0000)]
[LoopUnroll] Properly update loopinfo for runtime unrolling by 2

Even when we don't create a remainder loop (that is, when we unroll by 2), we
may duplicate nested loops into the remainder. This is complicated by the fact
the remainder may itself be either inserted into an outer loop, or at the top
level. In the latter case, we may need to create new top-level loops.

Differential Revision: https://reviews.llvm.org/D29156

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293124 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[NewGVN] Skip uses in unreachable blocks.
Davide Italiano [Thu, 26 Jan 2017 00:42:42 +0000 (00:42 +0000)]
[NewGVN] Skip uses in unreachable blocks.

Otherwise we ask for a domtree node that's not there, and we crash.

Differential Revision:  https://reviews.llvm.org/D29145

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293122 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llc] Add -pass-remarks-output
Adam Nemet [Thu, 26 Jan 2017 00:39:51 +0000 (00:39 +0000)]
[llc] Add -pass-remarks-output

This is the opt/llc counterpart of -fsave-optimization-record to output
optimization remarks in a YAML file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293121 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoLowerTypeTests: Ignore external globals with type metadata.
Peter Collingbourne [Thu, 26 Jan 2017 00:32:15 +0000 (00:32 +0000)]
LowerTypeTests: Ignore external globals with type metadata.

Thanks to Davide Italiano for finding the problem and providing a test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293119 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[libFuzzer] don't call GetPreviousInstructionPc on the hot path -- only when dumping...
Kostya Serebryany [Thu, 26 Jan 2017 00:22:08 +0000 (00:22 +0000)]
[libFuzzer] don't call GetPreviousInstructionPc on the hot path -- only when dumping the PCs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293117 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[APFloat] Fix comments. NFC.
Tim Shen [Thu, 26 Jan 2017 00:11:07 +0000 (00:11 +0000)]
[APFloat] Fix comments. NFC.

Summary: Fix comments in response to jlebar's comments in D27872.

Reviewers: jlebar

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D29109

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293116 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ValueTracking] Implement SignBitMustBeZero correctly for sqrt.
Justin Lebar [Thu, 26 Jan 2017 00:10:26 +0000 (00:10 +0000)]
[ValueTracking] Implement SignBitMustBeZero correctly for sqrt.

Summary:
Previously we assumed that the result of sqrt(x) always had 0 as its
sign bit.  But sqrt(-0) == -0.

Reviewers: hfinkel, efriedma, sanjoy

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D28928

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293115 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoChange the test added in r293099 so it does not have the string "llvm-nm" to fix
Kevin Enderby [Wed, 25 Jan 2017 23:57:32 +0000 (23:57 +0000)]
Change the test added in r293099 so it does not have the string "llvm-nm" to fix
the clang-x86-windows-msvc2015 bot as the name is "llvm-nm.EXE" in that case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293114 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[llc] Add -pass-remarks-with-hotness
Adam Nemet [Wed, 25 Jan 2017 23:55:59 +0000 (23:55 +0000)]
[llc] Add -pass-remarks-with-hotness

Analogous to the code in opt, this enables hotness in opt-remarks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293113 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[NewGVN] Simplify folding a lambda used only once. NFCI.
Davide Italiano [Wed, 25 Jan 2017 23:37:49 +0000 (23:37 +0000)]
[NewGVN] Simplify folding a lambda used only once. NFCI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293112 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoNew OptimizationRemarkEmitter pass for MIR
Adam Nemet [Wed, 25 Jan 2017 23:20:33 +0000 (23:20 +0000)]
New OptimizationRemarkEmitter pass for MIR

This allows MIR passes to emit optimization remarks with the same level
of functionality that is available to IR passes.

It also hooks up the greedy register allocator to report spills.  This
allows for interesting use cases like increasing interleaving on a loop
until spilling of registers is observed.

I still need to experiment whether reporting every spill scales but this
demonstrates for now that the functionality works from llc
using -pass-remarks*=<pass>.

Differential Revision: https://reviews.llvm.org/D29004

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293110 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[OptDiag] Split code region out of DiagnosticInfoOptimizationBase
Adam Nemet [Wed, 25 Jan 2017 23:20:25 +0000 (23:20 +0000)]
[OptDiag] Split code region out of DiagnosticInfoOptimizationBase

Code region is the only part of this class that is IR-specific.  Code
region is moved down in the inheritance tree to a new derived class,
called DiagnosticInfoIROptimization.

All the existing remarks are derived from this new class now.

This allows the new MIR pass-remark classes to be derived from
DiagnosticInfoOptimizationBase.

Also because we keep the name DiagnosticInfoOptimizationBase, the clang
parts don't need any adjustment.

Differential Revision: https://reviews.llvm.org/D29003

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293109 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix for r293104, which renamed a directory.
Adrian McCarthy [Wed, 25 Jan 2017 22:48:57 +0000 (22:48 +0000)]
Fix for r293104, which renamed a directory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293105 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoNFC: Rename (PDB) RawSession to NativeSession
Adrian McCarthy [Wed, 25 Jan 2017 22:38:55 +0000 (22:38 +0000)]
NFC:  Rename (PDB) RawSession to NativeSession

This eliminates one overload on the term Raw.

Differential Revision: https://reviews.llvm.org/D29098

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293104 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoLangRef: Document the allowed metadata dropping transforms.
Peter Collingbourne [Wed, 25 Jan 2017 21:50:14 +0000 (21:50 +0000)]
LangRef: Document the allowed metadata dropping transforms.

Document the current practice regarding dropping metadata on modules,
functions and global variables.

Differential Revision: https://reviews.llvm.org/D29110

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293101 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAdd a warning when the llvm-nm -print-size flag is used on a Mach-O file as
Kevin Enderby [Wed, 25 Jan 2017 21:33:38 +0000 (21:33 +0000)]
Add a warning when the llvm-nm -print-size flag is used on a Mach-O file as
Mach-O files don’t have size information about the symbols in the object file
format unlike ELF.

Also add the part of the fix to llvm-nm that was missed with r290001 so
-arch armv7m works.

rdar://25681018

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293099 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[PPC] Give unaligned memory access lower cost on processor that supports it"
Daniel Jasper [Wed, 25 Jan 2017 21:21:08 +0000 (21:21 +0000)]
Revert "[PPC] Give unaligned memory access lower cost on processor that supports it"

This reverts commit r292680. It is causing significantly worse
performance and test timeouts in our internal builds. I have already
routed reproduction instructions your way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293092 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[pdb] Fix failing test
Zachary Turner [Wed, 25 Jan 2017 21:21:02 +0000 (21:21 +0000)]
[pdb] Fix failing test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293091 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[pdb] Correctly parse the hash adjusters table from TPI stream.
Zachary Turner [Wed, 25 Jan 2017 21:17:40 +0000 (21:17 +0000)]
[pdb] Correctly parse the hash adjusters table from TPI stream.

This is not a list of pairs, it is a hash table data structure. We now
correctly parse this out and dump it from llvm-pdbdump.

We still need to understand the conditions that lead to a type
getting an entry in the hash adjuster table.  That will be done
in a followup investigation / patch.

Differential Revision: https://reviews.llvm.org/D29090

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293090 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSDag: fix how initial loads are formed when splitting vector ops.
Tim Northover [Wed, 25 Jan 2017 20:58:26 +0000 (20:58 +0000)]
SDag: fix how initial loads are formed when splitting vector ops.

Later code expects the vector loads produced to be directly
concatenable, which means we shouldn't pad anything except the last load
produced with UNDEF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293088 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGlobalISel: rework getOrCreateVReg to avoid double lookup. NFC.
Tim Northover [Wed, 25 Jan 2017 20:58:22 +0000 (20:58 +0000)]
GlobalISel: rework getOrCreateVReg to avoid double lookup. NFC.

Thanks to Quentin for suggesting the refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293087 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDebugInfo: remove unused parameter from function. NFC.
Tim Northover [Wed, 25 Jan 2017 20:58:07 +0000 (20:58 +0000)]
DebugInfo: remove unused parameter from function. NFC.

I think it's a hold-over from some previous iteration, but it's never
set to true in LLVM as it exists now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293086 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoMemorySSA: Link all defs together into an intrusive defslist, to make updater easier
Daniel Berlin [Wed, 25 Jan 2017 20:56:19 +0000 (20:56 +0000)]
MemorySSA: Link all defs together into an intrusive defslist, to make updater easier

Summary:
This is the first in a series of patches to add a simple, generalized updater to MemorySSA.

For MemorySSA, every def is may-def, instead of the normal must-def.
(the best way to think of memoryssa is "everything is really one variable, with different versions of that variable at different points in the program).
This means when updating, we end up having to do a bunch of work to touch defs below and above us.

In order to support this quickly, i have ilist'd all the defs for each block.  ilist supports tags, so this is quite easy. the only slightly messy part is that you can't have two iplists for the same type that differ only whether they have the ownership part enabled or not, because the traits are for the value type.

The verifiers have been updated to test that the def order is correct.

Reviewers: george.burgess.iv

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D29046

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293085 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AMDGPU] Bump up n_type for metadata v2
Konstantin Zhuravlyov [Wed, 25 Jan 2017 20:47:17 +0000 (20:47 +0000)]
[AMDGPU] Bump up n_type for metadata v2

Differential Revision: https://reviews.llvm.org/D29115

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293083 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Set call_convention bit in kernel_code_t
Matt Arsenault [Wed, 25 Jan 2017 20:21:57 +0000 (20:21 +0000)]
AMDGPU: Set call_convention bit in kernel_code_t

According to the documentation this is supposed to be -1
if indirect calls are not supported.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293081 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[XRay][AArch64] More staging for tail call support in XRay on AArch64 - in LLVM
Serge Rogatch [Wed, 25 Jan 2017 20:21:49 +0000 (20:21 +0000)]
[XRay][AArch64] More staging for tail call support in XRay on AArch64 - in LLVM

Summary:
This patch prepares more for tail call support in XRay. Until the logging part supports tail calls, this is just staging, so it seems LLVM part is mostly ready with this patch.
Related: https://reviews.llvm.org/D28948 (compiler-rt)

Reviewers: dberris, rengolin

Reviewed By: dberris

Subscribers: llvm-commits, iid_iunknown, aemerson

Differential Revision: https://reviews.llvm.org/D28947

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293080 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAdd iterator_range<regclass_iterator> to {Target,MC}RegisterInfo, NFC
Krzysztof Parzyszek [Wed, 25 Jan 2017 19:29:04 +0000 (19:29 +0000)]
Add iterator_range<regclass_iterator> to {Target,MC}RegisterInfo, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293077 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SLP] Extra test for functionality with extra args.
Alexey Bataev [Wed, 25 Jan 2017 17:24:31 +0000 (17:24 +0000)]
[SLP] Extra test for functionality with extra args.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293076 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "Do not verify dominator tree if it has no roots"
Chad Rosier [Wed, 25 Jan 2017 17:15:48 +0000 (17:15 +0000)]
Revert "Do not verify dominator tree if it has no roots"

This reverts commit r293033, per Danny's comment.  In short, we require
domtrees to have roots at all times.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293075 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoPowerPC: Slight cleanup of getReservedRegs(); NFC
Matthias Braun [Wed, 25 Jan 2017 17:12:10 +0000 (17:12 +0000)]
PowerPC: Slight cleanup of getReservedRegs(); NFC

Change getReservedRegs() to not mark a register as reserved and then
revert that decision in some cases. Motivated by the discussion in
https://reviews.llvm.org/D29056

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293073 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAdd loop pass insertion point EP_LateLoopOptimizations
Krzysztof Parzyszek [Wed, 25 Jan 2017 16:12:25 +0000 (16:12 +0000)]
Add loop pass insertion point EP_LateLoopOptimizations

Differential Revision: https://reviews.llvm.org/D28694

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293067 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Guards] Introduce loop-predication pass
Artur Pilipenko [Wed, 25 Jan 2017 16:00:44 +0000 (16:00 +0000)]
[Guards] Introduce loop-predication pass

This patch introduces guard based loop predication optimization. The new LoopPredication pass tries to convert loop variant range checks to loop invariant by widening checks across loop iterations. For example, it will convert

  for (i = 0; i < n; i++) {
    guard(i < len);
    ...
  }

to

  for (i = 0; i < n; i++) {
    guard(n - 1 < len);
    ...
  }

After this transformation the condition of the guard is loop invariant, so loop-unswitch can later unswitch the loop by this condition which basically predicates the loop by the widened condition:

  if (n - 1 < len)
    for (i = 0; i < n; i++) {
      ...
    }
  else
    deoptimize

This patch relies on an NFC change to make ScalarEvolution::isMonotonicPredicate public (revision 293062).

Reviewed By: sanjoy

Differential Revision: https://reviews.llvm.org/D29034

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293064 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AArch64] Minor code refactoring. NFC.
Chad Rosier [Wed, 25 Jan 2017 15:56:59 +0000 (15:56 +0000)]
[AArch64] Minor code refactoring. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293063 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoNFC. Make ScalarEvolution::isMonotonicPredicate public
Artur Pilipenko [Wed, 25 Jan 2017 15:07:55 +0000 (15:07 +0000)]
NFC. Make ScalarEvolution::isMonotonicPredicate public

Will be used by the upcoming LoopPredication optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293062 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine] Canonicalize guards for NOT OR condition
Artur Pilipenko [Wed, 25 Jan 2017 14:45:12 +0000 (14:45 +0000)]
[InstCombine] Canonicalize guards for NOT OR condition

This is a partial fix for Bug 31520 - [guards] canonicalize guards in instcombine

Reviewed By: apilipenko

Differential Revision: https://reviews.llvm.org/D29075

Patch by Maxim Kazantsev.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293061 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine][SSE] Add support for PACKSS/PACKUS constant folding
Simon Pilgrim [Wed, 25 Jan 2017 14:37:24 +0000 (14:37 +0000)]
[InstCombine][SSE] Add support for PACKSS/PACKUS constant folding

Differential Revision: https://reviews.llvm.org/D28949

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293060 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM] GlobalISel: Fix stack-use-after-scope bug.
Martin Bohme [Wed, 25 Jan 2017 14:28:19 +0000 (14:28 +0000)]
[ARM] GlobalISel: Fix stack-use-after-scope bug.

Summary:
Lifetime extension wasn't triggered on the result of BuildMI because the
reference was non-const. However, instead of adding a const, I've
removed the reference entirely as RVO should kick in anyway.

Reviewers: rovka, bkramer

Reviewed By: bkramer

Subscribers: aemerson, rengolin, dberris, llvm-commits, kristof.beyls

Differential Revision: https://reviews.llvm.org/D29124

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293059 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine] Canonicalize guards for AND condition
Artur Pilipenko [Wed, 25 Jan 2017 14:20:52 +0000 (14:20 +0000)]
[InstCombine] Canonicalize guards for AND condition

This is a partial fix for Bug 31520 - [guards] canonicalize guards in instcombine

Reviewed By: apilipenko

Differential Revision: https://reviews.llvm.org/D29074

Patch by Maxim Kazantsev.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293058 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine] Allow InstrCombine to remove one of adjacent guards if they are equivalent
Artur Pilipenko [Wed, 25 Jan 2017 14:12:12 +0000 (14:12 +0000)]
[InstCombine] Allow InstrCombine to remove one of adjacent guards if they are equivalent

This is a partial fix for Bug 31520 - [guards] canonicalize guards in instcombine

Reviewed By: majnemer, apilipenko

Differential Revision: https://reviews.llvm.org/D29071

Patch by Maxim Kazantsev.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293056 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SLP] Improve horizontal vectorization for non-power-of-2 number of
Alexey Bataev [Wed, 25 Jan 2017 09:54:38 +0000 (09:54 +0000)]
[SLP] Improve horizontal vectorization for non-power-of-2 number of
instructions.

If number of instructions in horizontal reduction list is not power of 2
then only PowerOf2Floor(NumberOfInstructions) last elements are actually
vectorized, other instructions remain scalar. Patch tries to vectorize
the remaining elements either.

Differential Revision: https://reviews.llvm.org/D28959

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293042 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoMark @llvm.powi.* as safe to speculatively execute.
whitequark [Wed, 25 Jan 2017 09:32:30 +0000 (09:32 +0000)]
Mark @llvm.powi.* as safe to speculatively execute.

Floating point intrinsics in LLVM are generally not speculatively
executed, since most of them are defined to behave the same as libm
functions, which set errno.

However, the @llvm.powi.* intrinsics do not correspond to any libm
function, and lacks any defined error handling semantics in LangRef.
It most certainly does not alter errno.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293041 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] enable memory interleaving for X86\SLM arch.
Mohammed Agabaria [Wed, 25 Jan 2017 09:14:48 +0000 (09:14 +0000)]
[X86] enable memory interleaving for X86\SLM arch.

Differential Revision: https://reviews.llvm.org/D28547

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293040 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix buildbot failures introduced by 293036
Artur Pilipenko [Wed, 25 Jan 2017 09:10:07 +0000 (09:10 +0000)]
Fix buildbot failures introduced by 293036

Fix unused variable, specify types explicitly to make VC compiler happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293039 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[DAGCombiner] Match load by bytes idiom and fold it into a single load. Attempt #2.
Artur Pilipenko [Wed, 25 Jan 2017 08:53:31 +0000 (08:53 +0000)]
[DAGCombiner] Match load by bytes idiom and fold it into a single load. Attempt #2.

The previous patch (https://reviews.llvm.org/rL289538) got reverted because of a bug. Chandler also requested some changes to the algorithm.
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20161212/413479.html

This is an updated patch. The key difference is that collectBitProviders (renamed to calculateByteProvider) now collects the origin of one byte, not the whole value. It simplifies the implementation and allows to stop the traversal earlier if we know that the result won't be used.

From the original commit:

Match a pattern where a wide type scalar value is loaded by several narrow loads and combined by shifts and ors. Fold it into a single load or a load and a bswap if the targets supports it.

Assuming little endian target:
  i8 *a = ...
  i32 val = a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24)
=>
  i32 val = *((i32)a)

  i8 *a = ...
  i32 val = (a[0] << 24) | (a[1] << 16) | (a[2] << 8) | a[3]
=>
  i32 val = BSWAP(*((i32)a))

This optimization was discussed on llvm-dev some time ago in "Load combine pass" thread. We came to the conclusion that we want to do this transformation late in the pipeline because in presence of atomic loads load widening is irreversible transformation and it might hinder other optimizations.

Eventually we'd like to support folding patterns like this where the offset has a variable and a constant part:
  i32 val = a[i] | (a[i + 1] << 8) | (a[i + 2] << 16) | (a[i + 3] << 24)

Matching the pattern above is easier at SelectionDAG level since address reassociation has already happened and the fact that the loads are adjacent is clear. Understanding that these loads are adjacent at IR level would have involved looking through geps/zexts/adds while looking at the addresses.

The general scheme is to match OR expressions by recursively calculating the origin of individual bytes which constitute the resulting OR value. If all the OR bytes come from memory verify that they are adjacent and match with little or big endian encoding of a wider value. If so and the load of the wider type (and bswap if needed) is allowed by the target generate a load and a bswap if needed.

Reviewed By: RKSimon, filcab, chandlerc

Differential Revision: https://reviews.llvm.org/D27861

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293036 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM] GlobalISel: Support i1 add and ABI extensions
Diana Picus [Wed, 25 Jan 2017 08:47:40 +0000 (08:47 +0000)]
[ARM] GlobalISel: Support i1 add and ABI extensions

Add support for:
* i1 add
* i1 function arguments, if passed through registers
* i1 returns, with ABI signext/zeroext

Differential Revision: https://reviews.llvm.org/D27706

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293035 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM] GlobalISel: Support i8/i16 ABI extensions
Diana Picus [Wed, 25 Jan 2017 08:10:40 +0000 (08:10 +0000)]
[ARM] GlobalISel: Support i8/i16 ABI extensions

At the moment, this means supporting the signext/zeroext attribute on the return
type of the function. For function arguments, signext/zeroext should be handled
by the caller, so there's nothing for us to do until we start lowering calls.

Note that this does not include support for other extensions (i8 to i16), those
will be added later.

Differential Revision: https://reviews.llvm.org/D27705

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293034 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDo not verify dominator tree if it has no roots
Serge Pavlov [Wed, 25 Jan 2017 07:58:10 +0000 (07:58 +0000)]
Do not verify dominator tree if it has no roots

If dominator tree has no roots, the pass that calculates it is
likely to be skipped. It occures, for instance, in the case of
entities with linkage available_externally. Do not run tree
verification in such case.

Differential Revision: https://reviews.llvm.org/D28767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293033 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoImplemented color coding and Vertex labels in XRay Graph
Dean Michael Berris [Wed, 25 Jan 2017 07:14:43 +0000 (07:14 +0000)]
Implemented color coding and Vertex labels in XRay Graph

Summary:
A patch to enable the llvm-xray graph subcommand to color edges and
vertices based on statistics and to annotate vertices with statistics.

Depends on D27243

Reviewers: dblaikie, dberris

Reviewed By: dberris

Subscribers: mgorny, llvm-commits

Differential Revision: https://reviews.llvm.org/D28225

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293031 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86]Enable the use of 'mov' with a 64bit GPR and a large immediate
Coby Tayree [Wed, 25 Jan 2017 07:09:42 +0000 (07:09 +0000)]
[X86]Enable the use of 'mov' with a 64bit GPR and a large immediate

Enable the next form (intel style):
"mov <reg64>, <largeImm>"
which is should be available,
where <largeImm> stands for immediates which exceed the range of a singed 32bit integer

Differential Revision: https://reviews.llvm.org/D28988

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293030 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM] GlobalISel: Bail out on Thumb. NFC
Diana Picus [Wed, 25 Jan 2017 07:08:53 +0000 (07:08 +0000)]
[ARM] GlobalISel: Bail out on Thumb. NFC

Thumb is not supported yet, so bail out early.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293029 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Check nsz instead of unsafe math
Matt Arsenault [Wed, 25 Jan 2017 06:27:02 +0000 (06:27 +0000)]
AMDGPU: Check nsz instead of unsafe math

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293028 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SimplifyCFG] Do not sink and merge inline-asm instructions.
Akira Hatanaka [Wed, 25 Jan 2017 06:21:51 +0000 (06:21 +0000)]
[SimplifyCFG] Do not sink and merge inline-asm instructions.

Conservatively disable sinking and merging inline-asm instructions as doing so
can potentially create arguments that cannot satisfy the inline-asm constraints.

For example, SimplifyCFG used to do the following transformation:

(before)
if.then:
  %0 = call i32 asm "rorl $2, $0", "=&r,0,n"(i32 %r6, i32 8)
  br label %if.end
if.else:
  %1 = call i32 asm "rorl $2, $0", "=&r,0,n"(i32 %r6, i32 6)
  br label %if.end

(after)
  %.sink = select i1 %tobool, i32 6, i32 8
  %0 = call i32 asm "rorl $2, $0", "=&r,0,n"(i32 %r6, i32 %.sink)

This would result in a crash in the backend since only immediate integer operands
are permitted for constraint "n".

rdar://problem/30110806

Differential Revision: https://reviews.llvm.org/D29111

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293025 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDAG: Recognize no-signed-zeros-fp-math attribute
Matt Arsenault [Wed, 25 Jan 2017 06:08:42 +0000 (06:08 +0000)]
DAG: Recognize no-signed-zeros-fp-math attribute

clang already emits this with -cl-no-signed-zeros, but codegen
doesn't do anything with it. Treat it like the other fast math
attributes, and change one place to use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293024 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGlobalISel: Fix typo in error message
Justin Bogner [Wed, 25 Jan 2017 06:02:10 +0000 (06:02 +0000)]
GlobalISel: Fix typo in error message

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293023 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoIgnore llvm/test/tools/llvm-symbolizer/coff-exports.test on mingw.
NAKAMURA Takumi [Wed, 25 Jan 2017 05:26:23 +0000 (05:26 +0000)]
Ignore llvm/test/tools/llvm-symbolizer/coff-exports.test on mingw.

FIXME: Demangler could behave along not host but target.
For example, assume host=mingw, target=msc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293021 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDAGCombiner: Allow negating ConstantFP after legalize
Matt Arsenault [Wed, 25 Jan 2017 04:54:34 +0000 (04:54 +0000)]
DAGCombiner: Allow negating ConstantFP after legalize

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293019 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine] Added regression test to narrow-swich.ll
Gerolf Hoflehner [Wed, 25 Jan 2017 04:34:59 +0000 (04:34 +0000)]
[InstCombine] Added regression test to narrow-swich.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293018 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRewind instantiations of OuterAnalysisManagerProxy in r289317, r291651, and r291662.
NAKAMURA Takumi [Wed, 25 Jan 2017 04:26:29 +0000 (04:26 +0000)]
Rewind instantiations of OuterAnalysisManagerProxy in r289317, r291651, and r291662.

I found root class should be instantiated for variadic tempate to instantiate static member explicitly.

This will fix failures in mingw DLL build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293017 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Implement early ifcvt target hooks.
Matt Arsenault [Wed, 25 Jan 2017 04:25:02 +0000 (04:25 +0000)]
AMDGPU: Implement early ifcvt target hooks.

Leave early ifcvt disabled for now since there are some
shader-db regressions.

This causes some immediate improvements, but could be better.
The cost checking that the pass does is based on critical path
length for out of order CPUs which we do not want so it skips out
on many cases we want.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293016 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agogold-plugin: Add the file path to the file open error diagnostic.
Peter Collingbourne [Wed, 25 Jan 2017 03:35:28 +0000 (03:35 +0000)]
gold-plugin: Add the file path to the file open error diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293013 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoTry to prevent build breakage by touching a CMakeLists.txt.
Ahmed Bougacha [Wed, 25 Jan 2017 02:55:24 +0000 (02:55 +0000)]
Try to prevent build breakage by touching a CMakeLists.txt.

Looks like our cmake goop for handling .inc->td dependencies doesn't
track the .td files.

This manifests as cmake complaining about missing files since r293009.

Force a rerun to avoid that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293012 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PM] Teach LoopUnroll to update the LPM infrastructure as it unrolls
Chandler Carruth [Wed, 25 Jan 2017 02:49:01 +0000 (02:49 +0000)]
[PM] Teach LoopUnroll to update the LPM infrastructure as it unrolls
loops.

We do this by reconstructing the newly added loops after the unroll
completes to avoid threading pass manager details through all the mess
of the unrolling infrastructure.

I've enabled some extra assertions in the LPM to try and catch issues
here and enabled a bunch of unroller tests to try and make sure this is
sane.

Currently, I'm manually running loop-simplify when needed. That should
go away once it is folded into the LPM infrastructure.

Differential Revision: https://reviews.llvm.org/D28848

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293011 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[GlobalISel] Generate selector for more integer binop patterns.
Ahmed Bougacha [Wed, 25 Jan 2017 02:41:38 +0000 (02:41 +0000)]
[GlobalISel] Generate selector for more integer binop patterns.

This surprisingly isn't NFC because there are patterns to select GPR
sub to SUBSWrr (rather than SUBWrr/rs); SUBS is later optimized to
SUB if NZCV is dead.  From ISel's perspective, both are fine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293010 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[GlobalISel] Rename TargetGlobalISel.td to GISel/SelectionDAGCompat.td
Ahmed Bougacha [Wed, 25 Jan 2017 02:41:26 +0000 (02:41 +0000)]
[GlobalISel] Rename TargetGlobalISel.td to GISel/SelectionDAGCompat.td

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293009 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoReinstate "r292904 - [lit] Allow boolean expressions in REQUIRES and XFAIL
Greg Parker [Wed, 25 Jan 2017 02:26:03 +0000 (02:26 +0000)]
Reinstate "r292904 - [lit] Allow boolean expressions in REQUIRES and XFAIL
and UNSUPPORTED"

This reverts the revert in r292942.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293007 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[coroutines] Spill the result of the invoke instruction correctly
Gor Nishanov [Wed, 25 Jan 2017 02:25:54 +0000 (02:25 +0000)]
[coroutines] Spill the result of the invoke instruction correctly

Summary:
When we decide that the result of the invoke instruction need to be spilled, we need to insert the spill into a block that is on the normal edge coming out of the invoke instruction. (Prior to this change the code would insert the spill immediately after the invoke instruction, which breaks the IR, since invoke is a terminator instruction).

In the following example, we will split the edge going into %cont and insert the spill there.

```
  %r = invoke double @print(double 0.0) to label %cont unwind label %pad

  cont:
    %0 = call i8 @llvm.coro.suspend(token none, i1 false)
    switch i8 %0, label %suspend [i8 0, label %resume
                                  i8 1, label %cleanup]
  resume:
    call double @print(double %r)
```

Reviewers: majnemer

Reviewed By: majnemer

Subscribers: mehdi_amini, llvm-commits, EricWF

Differential Revision: https://reviews.llvm.org/D29102

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293006 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU add support for spilling to a user sgpr pointed buffers
Tom Stellard [Wed, 25 Jan 2017 01:25:13 +0000 (01:25 +0000)]
AMDGPU add support for spilling to a user sgpr pointed buffers

Summary:
This lets you select which sort of spilling you want, either s[0:1] or 64-bit loads from s[0:1].

Patch By: Dave Airlie

Reviewers: nhaehnle, arsenm, tstellarAMD

Reviewed By: arsenm

Subscribers: mareko, llvm-commits, kzhuravl, wdng, yaxunl, tony-tye

Differential Revision: https://reviews.llvm.org/D25428

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293000 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AArch64] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Wed, 25 Jan 2017 00:29:26 +0000 (00:29 +0000)]
[AArch64] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292996 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGlobalISel: Use the correct types when translating landingpad instructions
Justin Bogner [Wed, 25 Jan 2017 00:16:53 +0000 (00:16 +0000)]
GlobalISel: Use the correct types when translating landingpad instructions

There was a bug here where we were using p0 instead of s32 for the
selector type in the landingpad. Instead of hardcoding these types we
should get the types from the landingpad instruction directly.

Note that we replicate an assert from SDAG here to only support
two-valued landingpads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292995 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix llvm-objdump so it picks a good CPU based for Mach-O files
Kevin Enderby [Tue, 24 Jan 2017 23:41:04 +0000 (23:41 +0000)]
Fix llvm-objdump so it picks a good CPU based for Mach-O files
for CPU_SUBTYPE_ARM_V7S and CPU_SUBTYPE_ARM_V7K.

For these two cpusubtypes they should default to a cortex-a7 CPU
to give proper disassembly without a -mcpu= flag.

rdar://27431703

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292993 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[XCore] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Tue, 24 Jan 2017 23:02:48 +0000 (23:02 +0000)]
[XCore] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292988 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Remove spurious out branches after a kill
Matt Arsenault [Tue, 24 Jan 2017 22:18:39 +0000 (22:18 +0000)]
AMDGPU: Remove spurious out branches after a kill

The sequence like this:
  v_cmpx_le_f32_e32 vcc, 0, v0
  s_branch BB0_30
  s_cbranch_execnz BB0_30
  ; BB#29:
  exp null off, off, off, off done vm
  s_endpgm
  BB0_30:
  ; %endif110

is likely wrong. The s_branch instruction will unconditionally jump
to BB0_30 and the skip block (exp done + endpgm) inserted for
performing the kill instruction will never be executed. This results
in a GPU hang with Star Ruler 2.

The s_branch instruction is added during the "Control Flow Optimizer"
pass which seems to re-organize the basic blocks, and we assume
that SI_KILL_TERMINATOR is always the last instruction inside a
basic block. Thus, after inserting a skip block we just go to the
next BB without looking at the subsequent instructions after the
kill, and the s_branch op is never removed.

Instead, we should remove the unconditional out branches and let
skip the two instructions if the exec mask is non-zero.

This patch fixes the GPU hang and doesn't introduce any regressions
with "make check".

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99019

Patch by Samuel Pitoiset <samuel.pitoiset@gmail.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292985 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert rL292621. Caused some internal build bot failures in apple.
Wei Mi [Tue, 24 Jan 2017 22:15:06 +0000 (22:15 +0000)]
Revert rL292621. Caused some internal build bot failures in apple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292984 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[SystemZ] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Tue, 24 Jan 2017 22:10:43 +0000 (22:10 +0000)]
[SystemZ] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292983 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoEnable FeatureFlatForGlobal on Volcanic Islands
Matt Arsenault [Tue, 24 Jan 2017 22:02:15 +0000 (22:02 +0000)]
Enable FeatureFlatForGlobal on Volcanic Islands

This switches to the workaround that HSA defaults to
for the mesa path.

This should be applied to the 4.0 branch.

Patch by Vedran Miletić <vedran@miletic.net>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292982 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoExplicitly promote indirect calls before sample profile annotation.
Dehao Chen [Tue, 24 Jan 2017 21:05:51 +0000 (21:05 +0000)]
Explicitly promote indirect calls before sample profile annotation.

Summary: In iterative sample pgo where profile is collected from PGOed binary, we may see indirect call targets promoted and inlined in the profile. Before profile annotation, we need to make this happen in order to annotate correctly on IR. This patch explicitly promotes these indirect calls and inlines them before profile annotation.

Reviewers: xur, davidxl

Reviewed By: davidxl

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D29040

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292979 91177308-0d34-0410-b5e6-96231b3b80d8