]>
granicus.if.org Git - llvm/log
Nirav Dave [Tue, 31 Jan 2017 17:00:27 +0000 (17:00 +0000)]
[X86] Implement -mfentry
Summary: Insert calls to __fentry__ at function entry.
Reviewers: hfinkel, craig.topper
Subscribers: mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D28000
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293648
91177308 -0d34-0410-b5e6-
96231b3b80d8
David Bozier [Tue, 31 Jan 2017 15:56:36 +0000 (15:56 +0000)]
Add support for demangling C++11 thread_local variables.
In clang, the grammar for mangling for these names are "<special-name> ::= TW <object name>" for wrapper variables or "<special-name> ::= TH <object name>" for initialization variables.
Initial change was made in libccxxabi r293638
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293643
91177308 -0d34-0410-b5e6-
96231b3b80d8
Artem Tamazov [Tue, 31 Jan 2017 15:50:11 +0000 (15:50 +0000)]
[AMDGPU][mc][tests][NFC] Revert coverage/smoke Gfx7 asm test
Reason: http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/2916/testReport/junit/LLVM/MC_AMDGPU/gfx7_asm_all_s/
This seems to reveal an AMDGPU/mc issue which needs to be triaged & fixed prior re-committing the test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293642
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 31 Jan 2017 15:24:11 +0000 (15:24 +0000)]
AMDGPU/SI: Fix inst-select-load-smrd.mir on some builds
Summary:
For some reason instructions are being inserted in the wrong order with some
builds. I'm not sure why this is happening.
Reviewers: arsenm
Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, tony-tye, tpr, llvm-commits
Differential Revision: https://reviews.llvm.org/D29325
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293639
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 31 Jan 2017 14:59:44 +0000 (14:59 +0000)]
[X86][SSE] Add support for combining PINSRB into a target shuffle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293637
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Tue, 31 Jan 2017 14:35:37 +0000 (14:35 +0000)]
[DAGCombine] require UnsafeFPMath for re-association of addition
Summary:
The affected transforms all implicitly use associativity of addition,
for which we usually require unsafe math to be enabled.
The "Aggressive" flag is only meant to convey information about the
performance of the fused ops relative to a fmul+fadd sequence.
Fixes Bug 31626.
Reviewers: spatel, hfinkel, mehdi_amini, arsenm, tstellarAMD
Subscribers: jholewinski, nemanjai, wdng, llvm-commits
Differential Revision: https://reviews.llvm.org/D28675
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293635
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 31 Jan 2017 14:35:01 +0000 (14:35 +0000)]
[ARM] Avoid using ARM instructions in Thumb mode
The Requires class overrides the target requirements of an instruction,
rather than adding to them, so all ARM instructions need to include the
IsARM predicate when they have overwitten requirements.
This caused the swp and swpb instructions to be allowed in thumb mode
assembly, and the ARM encoding of CDP to be selected in codegen (which
is different for conditional instructions).
Differential Revision: https://reviews.llvm.org/D29283
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293634
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 31 Jan 2017 14:13:53 +0000 (14:13 +0000)]
[X86] Silence unused variable warning in Release builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293631
91177308 -0d34-0410-b5e6-
96231b3b80d8
Silviu Baranga [Tue, 31 Jan 2017 14:04:15 +0000 (14:04 +0000)]
[InstCombine] Make sure that LHS and RHS have the same type in
transformToIndexedCompare
If they don't have the same type, the size of the constant
index would need to be adjusted (and this wouldn't be always
possible).
Alternatively we could try the analysis with the initial
RHS value, which would guarantee that the two sides have
the same type. However it is unlikely that in practice this
would pass our transformation requirements.
Fixes PR31808 (https://llvm.org/bugs/show_bug.cgi?id=31808).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293629
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 31 Jan 2017 13:58:01 +0000 (13:58 +0000)]
[X86][SSE] Detect unary PBLEND shuffles.
These can appear during shuffle combining.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293628
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 31 Jan 2017 13:51:10 +0000 (13:51 +0000)]
[X86][SSE] Add support for combining PINSRW into a target shuffle.
Also add the ability to recognise PINSR(Vex, 0, Idx).
Targets shuffle combines won't replace multiple insertions with a bit mask until a depth of 3 or more, so we avoid codesize bloat.
The unnecessary vpblendw in clearupper8xi16a will be fixed in an upcoming patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293627
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Tue, 31 Jan 2017 13:43:11 +0000 (13:43 +0000)]
[PowerPC][Altivec] Add vmr extended mnemonic
Just adds the vmr (Vector Move Register) mnemonic for the VOR instruction in
the PPC back end.
Committing on behalf of brunoalr (Bruno Rosa).
Differential Revision: https://reviews.llvm.org/D29133
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293626
91177308 -0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Tue, 31 Jan 2017 11:13:44 +0000 (11:13 +0000)]
[LoopUnroll] Use addClonedBlockToLoopInfo to clone the top level loop (NFC)
Summary:
rL293124 added the necessary infrastructure to properly add the cloned
top level loop to LoopInfo, which means we do not have to do it manually
in CloneLoopBlocks.
@mkuper sorry for not pointing this out during my review of D29156, I just
realized that today.
Reviewers: mzolotukhin, chandlerc, mkuper
Reviewed By: mkuper
Subscribers: llvm-commits, mkuper
Differential Revision: https://reviews.llvm.org/D29173
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293615
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Tue, 31 Jan 2017 10:49:24 +0000 (10:49 +0000)]
[mips] Addition of the immediate cases for the instructions [d]div, [d]divu
Related to http://reviews.llvm.org/D15772
Depends on http://reviews.llvm.org/D16888
Adds support for immediate operand for [D]DIV[U] instructions.
Patch By: Srdjan Obucina
Reviewers: zoran.jovanovic, vkalintiris, dsanders, obucina
Differential Revision: https://reviews.llvm.org/D16889
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293614
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 06:49:55 +0000 (06:49 +0000)]
[AVX-512] Don't both looking into the AVX512DQ execution domain fixing tables if AVX512DQ isn't supported since we can't do any conversion anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293608
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 06:49:53 +0000 (06:49 +0000)]
[X86] Add AVX and SSE2 version of MOVSDmr to execution domain fixing table. AVX-512 already did this for the EVEX version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293607
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 06:49:50 +0000 (06:49 +0000)]
[AVX-512] Fix copy and paste bug in execution domain fixing tables so that we can convert 256-bit movnt instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293606
91177308 -0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Tue, 31 Jan 2017 05:58:22 +0000 (05:58 +0000)]
[NVPTX] Implement NVPTXTargetLowering::getSqrtEstimate.
Summary:
This lets us lower to sqrt.approx and rsqrt.approx under more
circumstances.
* Now we emit sqrt.approx and rsqrt.approx for calls to @llvm.sqrt.f32,
when fast-math is enabled. Previously, we only would emit it for
calls to @llvm.nvvm.sqrt.f. (With this patch we no longer emit
sqrt.approx for calls to @llvm.nvvm.sqrt.f; we rely on intcombine to
simplify llvm.nvvm.sqrt.f into llvm.sqrt.f32.)
* Now we emit the ftz version of rsqrt.approx when ftz is enabled.
Previously, we only emitted rsqrt.approx when ftz was disabled.
Reviewers: hfinkel
Subscribers: llvm-commits, tra, jholewinski
Differential Revision: https://reviews.llvm.org/D28508
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293605
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 05:18:29 +0000 (05:18 +0000)]
[X86] Update the broadcast fallback patterns to use shuffle instructions from the appropriate execution domain.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293603
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 05:18:27 +0000 (05:18 +0000)]
[X86] Add test cases for AVX1 broadcast fallback patterns when load can't be folded.
Also add test cases that do an insertelement to all elements for the 8 element vector tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293602
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 05:18:24 +0000 (05:18 +0000)]
[AVX-512] Fix the ExeDomain for VMOVDDUP, VMOVSLDUP, and VMOVSHDUP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293601
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 03:07:46 +0000 (03:07 +0000)]
AMDGPU: Generalize matching of v_med3_f32
I think this is safe as long as no inputs are known to ever
be nans.
Also add an intrinsic for fmed3 to be able to handle all safe
math cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293598
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 02:17:41 +0000 (02:17 +0000)]
InferAddressSpaces: Rename constant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293594
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 02:17:32 +0000 (02:17 +0000)]
InferAddressSpaces: Handle icmp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293593
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 02:09:53 +0000 (02:09 +0000)]
[X86] Remove patterns for X86VPermilpi with integer types. I don't think we've formed these since the shuffle lowering rewrite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293592
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 02:09:51 +0000 (02:09 +0000)]
[X86] Remove duplicate patterns for X86VPermilpv that already exist in the instructions themselves.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293591
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 02:09:49 +0000 (02:09 +0000)]
[X86] Remove patterns for selecting PSHUFD with FP types. We don't seem to do this anymore and the AVX case definitely should be using VPERMILPS anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293590
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 02:09:46 +0000 (02:09 +0000)]
[X86] Remove 'else' after 'return'. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293589
91177308 -0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 Jan 2017 02:09:43 +0000 (02:09 +0000)]
[X86] Use integer broadcast instructions for integer broadcast patterns.
I'm not sure why we were using an FP instruction before and had to have a comment calling attention to it, but not justifying it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293588
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 01:56:57 +0000 (01:56 +0000)]
InferAddressSpaces: Support memory intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293587
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 01:40:38 +0000 (01:40 +0000)]
InferAddressSpaces: Support atomics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293584
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 01:30:16 +0000 (01:30 +0000)]
InferAddressSpaces: Don't replace volatile users
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293582
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 01:20:54 +0000 (01:20 +0000)]
AMDGPU: Implement hook for InferAddressSpaces
For now just port some of the existing NVPTX tests
and from an old HSAIL optimization pass which
approximately did the same thing.
Don't enable the pass yet until more testing is done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293580
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 Jan 2017 01:10:58 +0000 (01:10 +0000)]
NVPTX: Move InferAddressSpaces to generic code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293579
91177308 -0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Tue, 31 Jan 2017 00:56:17 +0000 (00:56 +0000)]
[ARM] 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@293578
91177308 -0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Tue, 31 Jan 2017 00:45:01 +0000 (00:45 +0000)]
TableGen: use fully qualified name for StringLiteral
Use the qualified name for StringLiteral (llvm::StringLiteral) when
generating the sources. This is needed as the generated files may be
used out-of-tree (e.g. swift) where you may not have a
`using namespace llvm;` resulting in an undefined lookup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293577
91177308 -0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Tue, 31 Jan 2017 00:42:42 +0000 (00:42 +0000)]
[SCEV] Simplify/generalize howFarToZero solving.
Make SolveLinEquationWithOverflow take the start as a SCEV, so we can
solve more cases. With that implemented, get rid of the special case
for powers of two.
The additional functionality probably isn't particularly useful,
but it might help a little for certain cases involving pointer
arithmetic.
Differential Revision: https://reviews.llvm.org/D28884
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293576
91177308 -0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 31 Jan 2017 00:34:23 +0000 (00:34 +0000)]
Remove LLVM_CONFIG from config headers
It appears to be dead, and it needlessly caused me to rebuild all of
LLVM when I changed CMAKE_INSTALL_PREFIX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293574
91177308 -0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 30 Jan 2017 23:58:51 +0000 (23:58 +0000)]
Fix llvm-readobj build error after r293569
Clang complains about an ambiguous call to printNumber() because it
can't work out what size_t should convert to. I picked uint64_t.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293573
91177308 -0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Mon, 30 Jan 2017 23:37:03 +0000 (23:37 +0000)]
[ExecutionDepsFix] Improve clearance calculation for loops
Summary:
In revision rL278321, ExecutionDepsFix learned how to pick a better
register for undef register reads, e.g. for instructions such as
`vcvtsi2sdq`. While this revision improved performance on a good number
of our benchmarks, it unfortunately also caused significant regressions
(up to 3x) on others. This regression turned out to be caused by loops
such as:
PH -> A -> B (xmm<Undef> -> xmm<Def>) -> C -> D -> EXIT
^ |
+----------------------------------+
In the previous version of the clearance calculation, we would visit
the blocks in order, remembering for each whether there were any
incoming backedges from blocks that we hadn't processed yet and if
so queuing up the block to be re-processed. However, for loop structures
such as the above, this is clearly insufficient, since the block B
does not have any unknown backedges, so we do not see the false
dependency from the previous interation's Def of xmm registers in B.
To fix this, we need to consider all blocks that are part of the loop
and reprocess them one the correct clearance values are known. As
an optimization, we also want to avoid reprocessing any later blocks
that are not part of the loop.
In summary, the iteration order is as follows:
Before: PH A B C D A'
Corrected (Naive): PH A B C D A' B' C' D'
Corrected (w/ optimization): PH A B C A' B' C' D
To facilitate this optimization we introduce two new counters for each
basic block. The first counts how many of it's predecssors have
completed primary processing. The second counts how many of its
predecessors have completed all processing (we will call such a block
*done*. Now, the criteria to reprocess a block is as follows:
- All Predecessors have completed primary processing
- For x the number of predecessors that have completed primary
processing *at the time of primary processing of this block*,
the number of predecessors that are done has reached x.
The intuition behind this criterion is as follows:
We need to perform primary processing on all predecessors in order to
find out any direct defs in those predecessors. When predecessors are
done, we also know that we have information about indirect defs (e.g.
in block B though that were inherited through B->C->A->B). However,
we can't wait for all predecessors to be done, since that would
cause cyclic dependencies. However, it is guaranteed that all those
predecessors that are prior to us in reverse postorder will be done
before us. Since we iterate of the basic blocks in reverse postorder,
the number x above, is precisely the count of the number of predecessors
prior to us in reverse postorder.
Reviewers: myatsina
Differential Revision: https://reviews.llvm.org/D28759
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293571
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 23:35:52 +0000 (23:35 +0000)]
[InstCombine] enable (X <<nsw C1) >>s C2 --> X <<nsw (C1 - C2) for vectors with splat constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293570
91177308 -0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 30 Jan 2017 23:30:52 +0000 (23:30 +0000)]
[WebAssembly] Add wasm support for llvm-readobj
Create a WasmDumper subclass of ObjDumper to support Webassembly binary
files.
Patch by Sam Clegg
Differential Revision: https://reviews.llvm.org/D27355
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293569
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 23:27:11 +0000 (23:27 +0000)]
NVPTX: Trivial cleanups of NVPTXInferAddressSpaces
- Move DEBUG_TYPE below includes
- Change unknown address space constant to be consistent with other
passes
- Grammar fixes in debug output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293567
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 23:26:17 +0000 (23:26 +0000)]
[InstCombine] add vector test for (X <<nsw C1) >>s C2 --> X <<nsw (C1 - C2); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293566
91177308 -0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Mon, 30 Jan 2017 23:21:32 +0000 (23:21 +0000)]
[Mips] 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@293565
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 30 Jan 2017 23:11:29 +0000 (23:11 +0000)]
[ICP] Fix bool conversion warning and actually write out the reason instead of dropping it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293564
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 23:02:12 +0000 (23:02 +0000)]
NVPTX: Refactor NVPTXInferAddressSpaces to check TTI
Add a new TTI hook for getting the generic address space value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293563
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 23:01:05 +0000 (23:01 +0000)]
[InstCombine] enable more lshr(shl X, C1), C2 folds for vectors with splat constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293562
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 Jan 2017 22:58:44 +0000 (22:58 +0000)]
[X86][SSE] Fix unsigned <= 0 warning in assert. NFCI.
Thanks to @mkuper
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293561
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 Jan 2017 22:48:49 +0000 (22:48 +0000)]
[X86][SSE] Generalize the number of decoded shuffle inputs. NFCI.
combineX86ShufflesRecursively can still only handle a maximum of 2 shuffle inputs but everything before it now supports any number of shuffle inputs.
This will be necessary for combining OR(SHUFFLE, SHUFFLE) patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293560
91177308 -0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Mon, 30 Jan 2017 22:46:37 +0000 (22:46 +0000)]
Expose isLegalToPromot as a global helper function so that SamplePGO pass can call it for legality check.
Summary: SamplePGO needs to check if it is legal to promote a target before it actually promotes it.
Reviewers: davidxl
Reviewed By: davidxl
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29306
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293559
91177308 -0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Mon, 30 Jan 2017 22:26:05 +0000 (22:26 +0000)]
Revert r292979 which causes compile time failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293557
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 22:24:36 +0000 (22:24 +0000)]
[InstCombine] add tests for more shift-shift patterns; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293555
91177308 -0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 30 Jan 2017 22:04:23 +0000 (22:04 +0000)]
Fix line endings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293554
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 30 Jan 2017 22:02:58 +0000 (22:02 +0000)]
AMDGPU: Fix release build broken by r293551
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293553
91177308 -0d34-0410-b5e6-
96231b3b80d8
Artem Tamazov [Mon, 30 Jan 2017 21:59:21 +0000 (21:59 +0000)]
Reapply [AMDGPU][mc][tests][NFC] Add coverage/smoke tests for Gfx7 and Gfx8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293552
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 30 Jan 2017 21:56:46 +0000 (21:56 +0000)]
Re-commit AMDGPU/GlobalISel: Add support for simple shaders
Fix build when global-isel is disabled and fix a warning.
Summary: We can select constant/global G_LOAD, global G_STORE, and G_GEP.
Reviewers: qcolombet, MatzeB, t.p.northover, ab, arsenm
Subscribers: mehdi_amini, vkalintiris, kzhuravl, wdng, nhaehnle, mgorny, yaxunl, tony-tye, modocache, llvm-commits, dberris
Differential Revision: https://reviews.llvm.org/D26730
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293551
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 30 Jan 2017 21:45:21 +0000 (21:45 +0000)]
GlobalISel: correctly translate invoke when callee is a register.
This should fix the GlobalISel verifier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293550
91177308 -0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Mon, 30 Jan 2017 21:05:18 +0000 (21:05 +0000)]
[AMDGPU] Internalize non-kernel symbols
Since we have no call support and late linking we can produce code
only for used symbols. This saves compilation time, size of the final
executable, and size of any intermediate dumps.
Run Internalize pass early in the opt pipeline followed by global
DCE pass. To enable it RT can pass -amdgpu-internalize-symbols option.
Differential Revision: https://reviews.llvm.org/D29214
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293549
91177308 -0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 30 Jan 2017 20:53:17 +0000 (20:53 +0000)]
Change the llvm-obdump(1) behavior with the -macho flag and inappropriate file types.
To better match the old darwin otool(1) behavior, when llvm-obdump(1) is used
with the -macho option and the input file is not an object file simply print
the file name and this message:
foo: is not an object file
and continue on to process other input files. Also in this case don’t exit
non-zero. This should help in some OSS projects' with autoconf scripts
that are expecting the old darwin otool(1) behavior.
rdar://
26828015
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293547
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 30 Jan 2017 20:52:42 +0000 (20:52 +0000)]
GlobalISel: account for differing exception selector sizes.
For some reason the exception selector register must be a pointer (that's
assumed by SDag); on the other hand, it gets moved into an IR-level type which
might be entirely different (i32 on AArch64). IRTranslator needs to be aware of
this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293546
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 30 Jan 2017 20:52:37 +0000 (20:52 +0000)]
GlobalISel: tidy up def/use test. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293545
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 19:50:17 +0000 (19:50 +0000)]
LSR: Don't drop address space when type doesn't match
For targets with different addressing modes in each address space,
if this is dropped querying isLegalAddressingMode later with this
will give a nonsense result, breaking the isLegalUse assertions.
This is a candidate for the 4.0 release branch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293542
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 30 Jan 2017 19:33:07 +0000 (19:33 +0000)]
GlobalISel: translate memset & memmove.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293541
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 19:30:24 +0000 (19:30 +0000)]
AMDGPU: Undo sub x, c -> add x, -c canonicalization
This is worse if the original constant is an inline immediate.
This should also be done for 64-bit adds, but requires fixing
operand folding bugs first.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293540
91177308 -0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 30 Jan 2017 19:16:30 +0000 (19:16 +0000)]
[RDF] Add support for regmasks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293538
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 30 Jan 2017 19:12:50 +0000 (19:12 +0000)]
GlobalISel: permit unused vregs without a register-class after ISel.
This can happen if earlier combining has removed all uses of some VReg, which
is fine and shouldn't flag an error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293537
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 30 Jan 2017 19:05:09 +0000 (19:05 +0000)]
Fix the GCC build.
This is fairly ugly, but apparently GCC still doesn't understand C++11.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293535
91177308 -0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Mon, 30 Jan 2017 19:03:26 +0000 (19:03 +0000)]
Turn a TableGen FastISelEmitter warning into an error.
Tablegen emitted a warning when the fast isel emitter created dead
code by emitting a pattern that has no predicate before a pattern
that has one.
This should be an error but was originally only a warning because the X86
backend had a buggy definition that unintentionally caused this to be hit
(PR21575). That has been fixed a while ago (r222094), so it's safe to
upgrade the warning to an error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293534
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 Jan 2017 18:59:25 +0000 (18:59 +0000)]
[X86][XOP] Fix test name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293533
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 Jan 2017 18:53:45 +0000 (18:53 +0000)]
Use SelectionDAG::getBuildVector helper function where possible. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293532
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 30 Jan 2017 18:49:24 +0000 (18:49 +0000)]
[IR] Remove global constructor from Function.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293528
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 30 Jan 2017 18:46:26 +0000 (18:46 +0000)]
[MC] Remove global constructors from MCSectionMachO.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293526
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 18:40:29 +0000 (18:40 +0000)]
AMDGPU: Run AMDGPUCodeGenPrepare after inlining
With leaf functions, this makes nonsensical decisions
based on the uniformity of the arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293525
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 18:40:23 +0000 (18:40 +0000)]
[InstCombine] enable (X >>?exact C1) << C2 --> X >>?exact (C1-C2) for vectors with splat constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293524
91177308 -0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Mon, 30 Jan 2017 18:29:46 +0000 (18:29 +0000)]
SDAG: Update ChainNodesMatched during UpdateChains if a node is replaced
Previously, we would hit UB (or the ISD::DELETED_NODE assert) if we
happened to replace a node during UpdateChains, because it would be
left in the list we were iterating over. This nulls out the pointer
when that happens so that we can avoid the issue.
Fixes llvm.org/PR31710
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293522
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 Jan 2017 18:20:42 +0000 (18:20 +0000)]
Use SelectionDAG::getBuildVector/getSplatBuildVector helper functions where possible. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293520
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 18:17:14 +0000 (18:17 +0000)]
[InstCombine] add vector splat tests for (X >>?exact C1) << C2 --> X >>?exact (C1-C2); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293517
91177308 -0d34-0410-b5e6-
96231b3b80d8
Marcos Pividori [Mon, 30 Jan 2017 18:14:53 +0000 (18:14 +0000)]
[libFuzzer] Implement TmpDir() for Windows.
Differential Revision: https://reviews.llvm.org/D28977
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293516
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 30 Jan 2017 18:12:56 +0000 (18:12 +0000)]
NewGVN: Instead of changeToUnreachable, insert an instruction SimplifyCFG will turn into unreachable when it runs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293515
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 18:11:38 +0000 (18:11 +0000)]
AMDGPU: Make i32 uaddo/usubo legal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293514
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 17:57:28 +0000 (17:57 +0000)]
DAG: Fold fneg into compare with constant into the constant
fcmp (fneg x), c, pred -> fcmp x, -c, (swap pred)
InstCombine already does this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293512
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 30 Jan 2017 17:54:57 +0000 (17:54 +0000)]
[Orc] Add missing include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293511
91177308 -0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 30 Jan 2017 17:46:56 +0000 (17:46 +0000)]
[RDF] Extract the physical register information into a separate class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293510
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 30 Jan 2017 17:42:41 +0000 (17:42 +0000)]
Revert "AMDGPU/GlobalISel: Add support for simple shaders"
This reverts commit r293503.
Revert while I investigate some of the buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293509
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 17:38:55 +0000 (17:38 +0000)]
[InstCombine] use auto with obvious type; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293508
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 17:19:32 +0000 (17:19 +0000)]
[InstCombine] enable (X <<nsw C1) >>s C2 --> X <<nsw (C1-C2) for vectors with splat constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293507
91177308 -0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 30 Jan 2017 17:13:56 +0000 (17:13 +0000)]
unique_ptrify some containers in GlobalISel::RegisterBankInfo
To simplify/clarify memory ownership, make leaks (as one was found/fixed
recently) harder to write, etc.
(also, while I was there - removed a duplicate lookup in a container)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293506
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 17:09:47 +0000 (17:09 +0000)]
AMDGPU: Fix atomic_inc/atomic_dec + ds_swizzle not being divergent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293504
91177308 -0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 30 Jan 2017 17:09:15 +0000 (17:09 +0000)]
AMDGPU/GlobalISel: Add support for simple shaders
Summary: We can select constant/global G_LOAD, global G_STORE, and G_GEP.
Reviewers: qcolombet, MatzeB, t.p.northover, ab, arsenm
Subscribers: mehdi_amini, vkalintiris, kzhuravl, wdng, nhaehnle, mgorny, yaxunl, tony-tye, modocache, llvm-commits, dberris
Differential Revision: https://reviews.llvm.org/D26730
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293503
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 30 Jan 2017 17:08:06 +0000 (17:08 +0000)]
Update pr31758.ll for unreachable revert
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293502
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 30 Jan 2017 17:06:55 +0000 (17:06 +0000)]
Revert "NewGVN: Make unreachable blocks be marked with unreachable"
This reverts commit r293196
Besides making things look nicer, ATM, we'd like to preserve analysis
more than we'd like to destroy the CFG. We'll probably revisit in the future
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293501
91177308 -0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 Jan 2017 16:58:34 +0000 (16:58 +0000)]
[X86][SSE] Add support for combining PINSRW+ASSERTZEXT+PEXTRW patterns with target shuffles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293500
91177308 -0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 30 Jan 2017 16:57:41 +0000 (16:57 +0000)]
DAG: Constant fold fp16_to_fp/fp16_to_fp
This fixes emitting conversions of constants on targets
without legal f16 that need to use these for legalization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293499
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 16:53:03 +0000 (16:53 +0000)]
[InstCombine] fixed to propagate 'exact' on lshr
The original shift is bigger, so this may qualify as 'obvious',
but here's an attempt at an Alive-based proof:
Name: exact
Pre: (C1 u< C2)
%a = shl i8 %x, C1
%b = lshr exact i8 %a, C2
=>
%c = lshr exact i8 %x, C2 - C1
%b = and i8 %c, ((1 << width(C1)) - 1) u>> C2
Optimization is correct!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293498
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 30 Jan 2017 16:38:49 +0000 (16:38 +0000)]
[InstCombine] add 'exact' to lshr to show that it got dropped; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293496
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 30 Jan 2017 16:32:20 +0000 (16:32 +0000)]
[Coroutines] Add header guard to header that's missing one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293494
91177308 -0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 30 Jan 2017 16:22:45 +0000 (16:22 +0000)]
[Inliner] Fold analysis remarks into missed remarks
This significantly reduces the noise level of these messages.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293492
91177308 -0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 30 Jan 2017 16:20:30 +0000 (16:20 +0000)]
[RDF] Add phis for entry block live-ins (in addition to function live-ins)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293491
91177308 -0d34-0410-b5e6-
96231b3b80d8
Haicheng Wu [Mon, 30 Jan 2017 16:15:14 +0000 (16:15 +0000)]
[Inliner] Fix a comment to match the code. NFC.
TotalAltCost => TotalSecondaryCost
Differential Revision: https://reviews.llvm.org/D29231
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293490
91177308 -0d34-0410-b5e6-
96231b3b80d8