OSDN Git Service

android-x86/external-llvm.git
7 years agoAArch64CollectLOH: Rewrite as block-local analysis.
Matthias Braun [Sat, 3 Dec 2016 00:52:56 +0000 (00:52 +0000)]
AArch64CollectLOH: Rewrite as block-local analysis.

Previously this pass was using up to 5% compile time in some cases which
is a bit much for what it is doing. The pass featured a full blown
data-flow analysis which in the default configuration was restricted to a
single block.

This rewrites the pass under the assumption that we only ever work on a
single block. This is done in a single pass maintaining a state machine
per general purpose register to catch LOH patterns.

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

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

7 years ago[ppc] Correctly compute the cost of loading 32/64 bit memory into VSR
Guozhi Wei [Sat, 3 Dec 2016 00:41:43 +0000 (00:41 +0000)]
[ppc] Correctly compute the cost of loading 32/64 bit memory into VSR

VSX has instructions lxsiwax/lxsdx that can load 32/64 bit value into VSX register cheaply. That patch makes it known to memory cost model, so the vectorization of the test case in pr30990 is beneficial.

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

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

7 years agoSupport escaping in TrigramIndex.
Ivan Krasin [Fri, 2 Dec 2016 23:30:16 +0000 (23:30 +0000)]
Support escaping in TrigramIndex.

Summary:
This is a follow up to r288303, where I have introduced TrigramIndex
to speed up SpecialCaseList for the cases when all rules are
simple wildcards, like *hello*wor.d*.

Here, I add support for escaping, so that it's possible to
specify rules like *c\+\+abi*.

Reviewers: pcc

Subscribers: llvm-commits

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

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

7 years agoResubmit "[LibFuzzer] Split FuzzerUtil for Posix and Windows."
Zachary Turner [Fri, 2 Dec 2016 23:02:01 +0000 (23:02 +0000)]
Resubmit "[LibFuzzer] Split FuzzerUtil for Posix and Windows."

This resubmits r288529, which was resubmitted because it broke a
fuzzer bot.  According to kcc@ the test that broke was flakey
and it is unlikely to be a result of this patch.

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

7 years ago[lanai] Custom lowering of SHL_PARTS
Jacques Pienaar [Fri, 2 Dec 2016 22:01:28 +0000 (22:01 +0000)]
[lanai] Custom lowering of SHL_PARTS

Summary: Implement custom lowering of SHL_PARTS to enable lowering of left shift with larger than 32-bit shifts.

Reviewers: eliben, majnemer

Subscribers: llvm-commits

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

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

7 years ago[IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warning...
Eugene Zelenko [Fri, 2 Dec 2016 22:00:59 +0000 (22:00 +0000)]
[IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC).

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

7 years agoRevert "[LibFuzzer] Split FuzzerUtil for Posix and Windows."
Zachary Turner [Fri, 2 Dec 2016 20:54:56 +0000 (20:54 +0000)]
Revert "[LibFuzzer] Split FuzzerUtil for Posix and Windows."

This reverts commit r288529, as it seems to introduce some
problems on the Linux bots.

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

7 years ago[WebAssembly] Fix a compiler warning. NFC.
Dan Gohman [Fri, 2 Dec 2016 20:13:05 +0000 (20:13 +0000)]
[WebAssembly] Fix a compiler warning. NFC.

Fix a warning about a comparison between signed and unsigned integer
expressions.

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

7 years ago[LibFuzzer] Introduce a portable WeakAlias implementation.
Zachary Turner [Fri, 2 Dec 2016 19:41:17 +0000 (19:41 +0000)]
[LibFuzzer] Introduce a portable WeakAlias implementation.

Windows doesn't really support weak aliases, but with some
linker magic we can get something that's pretty close on
Windows.  This introduces an interface to accessing weakly
aliased symbols that will work on any platform.  Linker
magic changes to come in a separate patch.

Patch by Marcos Pividori
Differential Revision: https://reviews.llvm.org/D27235

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

7 years ago[LibFuzzer] Split FuzzerUtil for Posix and Windows.
Zachary Turner [Fri, 2 Dec 2016 19:38:19 +0000 (19:38 +0000)]
[LibFuzzer] Split FuzzerUtil for Posix and Windows.

Pave the way for separating out platform specific
utility functions into separate files.

Patch by Marcos Pividori
Differential Revision: https://reviews.llvm.org/D27234

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

7 years ago[PGO] Fix PGO use ICE when there are unreachable BBs
Rong Xu [Fri, 2 Dec 2016 19:10:29 +0000 (19:10 +0000)]
[PGO] Fix PGO use ICE when there are unreachable BBs

For -O0 there might be unreachable BBs, which breaks the assumption that all the
BBs have an auxiliary data structure.  In this patch, we add another interface
called findBBInfo() so that a nullptr can be returned for the unreachable BBs
(and the callers can ignore those BBs).

This fixes the bug reported
https://llvm.org/bugs/show_bug.cgi?id=31209

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

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

7 years ago[SystemZ] Support remaining atomic instructions
Ulrich Weigand [Fri, 2 Dec 2016 18:24:16 +0000 (18:24 +0000)]
[SystemZ] Support remaining atomic instructions

Add assembler support for all atomic instructions that weren't already
supported.  Some of those could be used to implement codegen for 128-bit
atomic operations, but this isn't done here yet.

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

7 years ago[SystemZ] Support floating-point control register instructions
Ulrich Weigand [Fri, 2 Dec 2016 18:21:53 +0000 (18:21 +0000)]
[SystemZ] Support floating-point control register instructions

Add assembler support for instructions manipulating the FPC.

Also add codegen support via the GCC compatibility builtins:
  __builtin_s390_sfpc
  __builtin_s390_efpc

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

7 years ago[SystemZ] Refactor hasSideEffects setting
Ulrich Weigand [Fri, 2 Dec 2016 18:19:22 +0000 (18:19 +0000)]
[SystemZ] Refactor hasSideEffects setting

Move setting of hasSideEffects out of SystemZInstrFormats.td,
to allow use of the format classes for instructions where this
flag shouldn't be set.  NFC.

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

7 years agoAMDGPU: Implement isCheapAddrSpaceCast
Matt Arsenault [Fri, 2 Dec 2016 18:12:53 +0000 (18:12 +0000)]
AMDGPU: Implement isCheapAddrSpaceCast

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

7 years ago[x86] add common check prefix to reduce duplication; NFC
Sanjay Patel [Fri, 2 Dec 2016 17:58:26 +0000 (17:58 +0000)]
[x86] add common check prefix to reduce duplication; NFC

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

7 years ago[LTOs] Allow generation of hotness information
Adam Nemet [Fri, 2 Dec 2016 17:53:56 +0000 (17:53 +0000)]
[LTOs] Allow generation of hotness information

The flag is passed by the clang driver.

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

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

7 years agoMake LTO opt-remarks tests matching stricter
Adam Nemet [Fri, 2 Dec 2016 17:53:49 +0000 (17:53 +0000)]
Make LTO opt-remarks tests matching stricter

This ensures that we don't generate the hotness attribute by default.

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

7 years agofix check-label
Sanjay Patel [Fri, 2 Dec 2016 17:50:14 +0000 (17:50 +0000)]
fix check-label

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

7 years ago[x86] add tests to show missing demanded bits analysis; NFC
Sanjay Patel [Fri, 2 Dec 2016 17:48:48 +0000 (17:48 +0000)]
[x86] add tests to show missing demanded bits analysis; NFC

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

7 years ago[InstCombine] Add vector urem tests
Simon Pilgrim [Fri, 2 Dec 2016 17:16:21 +0000 (17:16 +0000)]
[InstCombine] Add vector urem tests

Demonstrate missed opportunity for urem -> and combine for powerof2 or zero non-uniform constant dividers

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

7 years ago[InstCombine] Regenerate vector srem tests
Simon Pilgrim [Fri, 2 Dec 2016 17:12:56 +0000 (17:12 +0000)]
[InstCombine] Regenerate vector srem tests

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

7 years agoRevert "[SLP] Fix for PR6246: vectorization for scalar ops on vector elements."
Renato Golin [Fri, 2 Dec 2016 16:56:26 +0000 (16:56 +0000)]
Revert "[SLP] Fix for PR6246: vectorization for scalar ops on vector elements."

This reverts commit r288497, as it broke the AArch64 build of Compiler-RT's
builtins (twice: once in r288412 and once in r288497). We should investigate
this offline.

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

7 years ago[DAGCombiner] do not fold (fmul (fadd X, 1), Y) -> (fmad X, Y, Y) by default
Nicolai Haehnle [Fri, 2 Dec 2016 16:06:18 +0000 (16:06 +0000)]
[DAGCombiner] do not fold (fmul (fadd X, 1), Y) -> (fmad X, Y, Y) by default

Summary:
When X = 0 and Y = inf, the original code produces inf, but the transformed
code produces nan. So this transform (and its relatives) should only be
used when the no-infs-fp-math flag is explicitly enabled.

Also disable the transform using fmad (intermediate rounding) when unsafe-math
is not enabled, since it can reduce the precision of the result; consider this
example with binary floating point numbers with two bits of mantissa:

  x = 1.01
  y = 111

  x * (y + 1) = 1.01 * 1000 = 1010 (this is the exact result; no rounding occurs at any step)

  x * y + x = 1000.11 + 1.01 =r 1000 + 1.01 = 1001.01 =r 1000 (with rounding towards zero)

The example relies on rounding towards zero at least in the second step.

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

Reviewers: RKSimon, tstellarAMD, spatel, arsenm

Subscribers: wdng, llvm-commits

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

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

7 years agoTidyup code with indentation and clang-format. NFCI.
Simon Pilgrim [Fri, 2 Dec 2016 15:44:30 +0000 (15:44 +0000)]
Tidyup code with indentation and clang-format. NFCI.

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

7 years ago[Sparc] Fix parsing of double-precision %f18, %f20, and %f22
Daniel Cederman [Fri, 2 Dec 2016 15:05:26 +0000 (15:05 +0000)]
[Sparc] Fix parsing of double-precision %f18, %f20, and %f22

Summary: They are currently being parsed as %f14, %f16, and %f18.

Reviewers: venkatra, jyknight

Subscribers: llvm-commits

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

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

7 years ago[X86][SSE] Renamed shuffle combine test.
Simon Pilgrim [Fri, 2 Dec 2016 14:43:39 +0000 (14:43 +0000)]
[X86][SSE] Renamed shuffle combine test.

We're trying to combine to vpunpckhbw not vpunpckhwd

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

7 years agoCODE_OWNERS: Take ownership of IR Linker as discussed on llvm-dev
Teresa Johnson [Fri, 2 Dec 2016 14:06:53 +0000 (14:06 +0000)]
CODE_OWNERS: Take ownership of IR Linker as discussed on llvm-dev

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

7 years ago[X86][SSE] Add support for extracting constant bit data from broadcasted constants
Simon Pilgrim [Fri, 2 Dec 2016 13:16:08 +0000 (13:16 +0000)]
[X86][SSE] Add support for extracting constant bit data from broadcasted constants

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

7 years ago[SLP] Fix for PR6246: vectorization for scalar ops on vector elements.
Alexey Bataev [Fri, 2 Dec 2016 12:20:22 +0000 (12:20 +0000)]
[SLP] Fix for PR6246: vectorization for scalar ops on vector elements.

When trying to vectorize trees that start at insertelement instructions
function tryToVectorizeList() uses vectorization factor calculated as
MinVecRegSize/ScalarTypeSize. But sometimes it does not work as tree
cost for this fixed vectorization factor is too high.
Patch tries to improve the situation. It tries different vectorization
factors from max(PowerOf2Floor(NumberOfVectorizedValues),
MinVecRegSize/ScalarTypeSize) to MinVecRegSize/ScalarTypeSize and tries
to choose the best one.

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

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

7 years ago[X86] Refactored getTargetConstantBitsFromNode to allow for expansion. NFCI.
Simon Pilgrim [Fri, 2 Dec 2016 11:58:05 +0000 (11:58 +0000)]
[X86] Refactored getTargetConstantBitsFromNode to allow for expansion. NFCI.

getTargetConstantBitsFromNode currently only extracts constant pool vector data, but it will need to be generalized to support broadcast and scalar constant pool data as well.

Converted Constant bit extraction and Bitset splitting to helper lambda functions.

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

7 years ago[SLPVectorizer][X86] Add tests for vectorization of buildvector of scalar fp-ops...
Simon Pilgrim [Fri, 2 Dec 2016 10:54:46 +0000 (10:54 +0000)]
[SLPVectorizer][X86] Add tests for vectorization of buildvector of scalar fp-ops (PR6246)

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

7 years ago[AVX-512] Add EVEX vpshuflw/vpshufhw/vpshufd instructions to load folding tables.
Craig Topper [Fri, 2 Dec 2016 07:57:11 +0000 (07:57 +0000)]
[AVX-512] Add EVEX vpshuflw/vpshufhw/vpshufd instructions to load folding tables.

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

7 years ago[AVX-512] Add EVEX PSHUFB instructions to load folding tables.
Craig Topper [Fri, 2 Dec 2016 07:06:30 +0000 (07:06 +0000)]
[AVX-512] Add EVEX PSHUFB instructions to load folding tables.

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

7 years ago[AVX-512] Add masked VINSERTF/VINSERTI instructions to load folding tables.
Craig Topper [Fri, 2 Dec 2016 06:24:38 +0000 (06:24 +0000)]
[AVX-512] Add masked VINSERTF/VINSERTI instructions to load folding tables.

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

7 years agoIR: Move NumElements field from {Array,Vector}Type to SequentialType.
Peter Collingbourne [Fri, 2 Dec 2016 03:20:58 +0000 (03:20 +0000)]
IR: Move NumElements field from {Array,Vector}Type to SequentialType.

Now that PointerType is no longer a SequentialType, all SequentialTypes
have an associated number of elements, so we can move that information to
the base class, allowing for a number of simplifications.

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

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

7 years agoChange LoopUnrollPass cost from int to unsigned to make it consistent. (NFC)
Dehao Chen [Fri, 2 Dec 2016 03:17:07 +0000 (03:17 +0000)]
Change LoopUnrollPass cost from int to unsigned to make it consistent. (NFC)

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

7 years agoIR: Change PointerType to derive from Type rather than SequentialType.
Peter Collingbourne [Fri, 2 Dec 2016 03:05:41 +0000 (03:05 +0000)]
IR: Change PointerType to derive from Type rather than SequentialType.

As proposed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-October/106640.html

This is for a couple of reasons:

- Values of type PointerType are unlike the other SequentialTypes (arrays
  and vectors) in that they do not hold values of the element type. By moving
  PointerType we can unify certain aspects of how the other SequentialTypes
  are handled.
- PointerType will have no place in the SequentialType hierarchy once
  pointee types are removed, so this is a necessary step towards removing
  pointee types.

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

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

7 years agoFix GlobalISel build.
Peter Collingbourne [Fri, 2 Dec 2016 02:55:30 +0000 (02:55 +0000)]
Fix GlobalISel build.

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

7 years agoConstantFolding: Factor code into helper function
Matt Arsenault [Fri, 2 Dec 2016 02:26:02 +0000 (02:26 +0000)]
ConstantFolding: Factor code into helper function

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

7 years agoIR: Change the gep_type_iterator API to avoid always exposing the "current" type.
Peter Collingbourne [Fri, 2 Dec 2016 02:24:42 +0000 (02:24 +0000)]
IR: Change the gep_type_iterator API to avoid always exposing the "current" type.

Instead, expose whether the current type is an array or a struct, if an array
what the upper bound is, and if a struct the struct type itself. This is
in preparation for a later change which will make PointerType derive from
Type rather than SequentialType.

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

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

7 years ago[DWARF] Put linkage-name on abstract origin even when there's a declaration.
Paul Robinson [Fri, 2 Dec 2016 01:55:17 +0000 (01:55 +0000)]
[DWARF] Put linkage-name on abstract origin even when there's a declaration.

In r266692, we made it possible to emit linkage names for just inlined
functions, putting the attribute on the abstract origin. Make sure we
don't think the linkage-name was already emitted on a declaration.

Differential Revision: http://reviews.llvm.org/D27320

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

7 years ago[ThinLTO] Stop importing constant global vars as copies in the backend
Teresa Johnson [Fri, 2 Dec 2016 01:02:30 +0000 (01:02 +0000)]
[ThinLTO] Stop importing constant global vars as copies in the backend

Summary:
We were doing an optimization in the ThinLTO backends of importing
constant unnamed_addr globals unconditionally as a local copy (regardless
of whether the thin link decided to import them). This should be done in
the thin link instead, so that resulting exported references are marked
and promoted appropriately, but will need a summary enhancement to mark
these variables as constant unnamed_addr.

The function import logic during the thin link was trying to handle
this proactively, by conservatively marking all values referenced in
the initializer lists of exported global variables as also exported.
However, this only handled values referenced directly from the
initializer list of an exported global variable. If the value is itself
a constant unnamed_addr variable, we could end up exporting its
references as well. This caused multiple issues. The first is that the
transitively exported references weren't promoted. Secondly, some could
not be promoted/renamed (e.g. they had a section or other constraint).
recursively, instead of just adding the first level of initializer list
references to the ExportList directly.

Remove this optimization and the associated handling in the function
import backend. SPEC measurements indicate we weren't getting much
from it in any case.

Fixes PR31052.

Reviewers: mehdi_amini

Subscribers: krasin, llvm-commits

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

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

7 years agoAMDGPU: Use wider scalar spills for SGPR spilling
Matt Arsenault [Fri, 2 Dec 2016 00:54:45 +0000 (00:54 +0000)]
AMDGPU: Use wider scalar spills for SGPR spilling

Since the spill is for the whole wave, these
don't have the swizzling problems that vector stores do
and a single 4-byte allocation is enough to spill a 64 element
register. This should reduce the number of spill instructions and
put all the spills for a register in the same cacheline.

This should save allocated private size, but for now it doesn't.
The extra slots are allocated for each component, but never used
because the frame layout is essentially finalized before frame
indices are replaced. For always using the scalar store path,
this should probably be moved into processFunctionBeforeFrameFinalized.

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

7 years agoWhen instructions are hoisted out of loops by MachineLICM, remove their debug loc.
Wolfgang Pieb [Fri, 2 Dec 2016 00:37:57 +0000 (00:37 +0000)]
When instructions are hoisted out of loops by MachineLICM, remove their debug loc.
This prevents erratic stepping behavior as well as incorrect source attribution
for sample profiling.

Reviewers: dblakie

Subscribers: llvm-commit

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

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

7 years agoSDAG: Avoid a large, usually empty SmallVector in a recursive function
Justin Bogner [Fri, 2 Dec 2016 00:11:01 +0000 (00:11 +0000)]
SDAG: Avoid a large, usually empty SmallVector in a recursive function

This SmallVector is using up 128 bytes on the stack every time despite
almost always being empty[1], and since this function can recurse quite
deeply that adds up to a lot of overhead. We've seen this run afoul of
ulimits in some cases with ASAN on.

Replacing the SmallVector with a std::vector trades an occasional heap
allocation for vastly less stack usage.

[1]: I gathered some stats on an internal test suite and the vector
was non-empty in only 45,000 of 10,000,000 calls to this function.

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

7 years ago[AArch64] Fold more spilled/refilled COPYs.
Geoff Berry [Thu, 1 Dec 2016 23:43:55 +0000 (23:43 +0000)]
[AArch64] Fold more spilled/refilled COPYs.

Summary:
Make AArch64InstrInfo::foldMemoryOperandImpl more general by folding all
full COPYs between register classes of the same size that are either
spilled or refilled.

Reviewers: MatzeB, qcolombet

Subscribers: aemerson, rengolin, mcrosier, llvm-commits

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

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

7 years ago[MC] Refactor emitELFSize to make usage more consistent. NFC.
Dan Gohman [Thu, 1 Dec 2016 23:39:08 +0000 (23:39 +0000)]
[MC] Refactor emitELFSize to make usage more consistent. NFC.

Move the cast<MCSymbolELF> inside emitELFSize, so that:
 - it's done in one place instead of at each call
 - it's more consistent with similar functions like EmitCOFFSafeSEH
 - ambiguity between cast<> and dyn_cast<> is avoided (which also
   eliminates an unnecessary dyn_cast call)

This also makes it easier to experiment with using ".size" directives on
non-ELF targets.

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

7 years agollvm-modextract: Call keep() on the output stream before exiting.
Peter Collingbourne [Thu, 1 Dec 2016 23:13:11 +0000 (23:13 +0000)]
llvm-modextract: Call keep() on the output stream before exiting.

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

7 years ago[ARM] Fix for 64-bit CAS expansion on ARM32 with -O0
Oleg Ranevskyy [Thu, 1 Dec 2016 22:58:35 +0000 (22:58 +0000)]
[ARM] Fix for 64-bit CAS expansion on ARM32 with -O0

Summary:
This patch fixes comparison of 64-bit atomic with its expected value in CMP_SWAP_64 expansion.

Currently, the low words are compared with CMP, while the high words are compared with SBC. SBC expects the carry flag to be set if CMP detects a difference. CMP might leave the carry unset for unequal arguments though if the first one is >= than the second. This might cause the comparison logic to detect false equality.

Example of the broken C++ code:
```
std::atomic<long long> at(2);

long long ll = 1;
std::atomic_compare_exchange_strong(&at, &ll, 3);
```
Even though the atomic `at` and the expected value `ll` are not equal and `atomic_compare_exchange_strong` returns `false`, `at` is changed to 3.

The patch replaces SBC with CMPEQ.

Reviewers: t.p.northover

Subscribers: aemerson, rengolin, llvm-commits, asl

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

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

7 years agoRevert "[SLP] Fix for PR6246: vectorization for scalar ops on vector elements."
Artem Belevich [Thu, 1 Dec 2016 22:52:15 +0000 (22:52 +0000)]
Revert "[SLP] Fix for PR6246: vectorization for scalar ops on vector elements."

This reverts r288412 which causes severe compile-time regression.

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

7 years agoRegisterCoalscer: Only coalesce complete reserved registers.
Matthias Braun [Thu, 1 Dec 2016 22:39:51 +0000 (22:39 +0000)]
RegisterCoalscer: Only coalesce complete reserved registers.

The coalescer eliminates copies from reserved registers of the form:
   %vregX = COPY %rY
in the case where %rY is a reserved register. However this turns out to
be invalid if only some of the subregisters are reserved (see also
https://reviews.llvm.org/D26648).

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

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

7 years agoFix broken buildbots because of r288424 (NFC).
Eugene Zelenko [Thu, 1 Dec 2016 22:26:55 +0000 (22:26 +0000)]
Fix broken buildbots because of r288424 (NFC).

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

7 years ago[ADT, Support, TableGen] Fix some Clang-tidy modernize-use-default and Include What...
Eugene Zelenko [Thu, 1 Dec 2016 22:13:24 +0000 (22:13 +0000)]
[ADT, Support, TableGen] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC).

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

7 years ago[dsymutil] Simplify a lazy-init condition/expression
David Blaikie [Thu, 1 Dec 2016 22:04:16 +0000 (22:04 +0000)]
[dsymutil] Simplify a lazy-init condition/expression

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

7 years ago[debug info] Minor cleanup from D27170/r288399
David Blaikie [Thu, 1 Dec 2016 21:59:09 +0000 (21:59 +0000)]
[debug info] Minor cleanup from D27170/r288399

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

7 years ago[SelectionDAG] getRawSubclassData should not return HasDebugValue.
Chih-Hung Hsieh [Thu, 1 Dec 2016 21:56:33 +0000 (21:56 +0000)]
[SelectionDAG] getRawSubclassData should not return HasDebugValue.

This change fixes a regression in r279537 and
makes getRawSubclassData behave like r279536.
Without this change, the fp128-g.ll test case will have an
infinite loop involving SoftenFloatRes_LOAD.

Differential Revision: http://reviews.llvm.org/D26942

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

7 years agoAArch64: fix 128-bit cmpxchg at -O0 (again, again).
Tim Northover [Thu, 1 Dec 2016 21:31:59 +0000 (21:31 +0000)]
AArch64: fix 128-bit cmpxchg at -O0 (again, again).

This time the issue is fortunately just a simple mistake rather than a horrible
design spectre. I thought SUBS/SBCS provided sufficient NZCV flags for
comparing two 64-bit values, but they don't.

The fix is slightly clunkier in AArch64 because we can't use conditional
execution to emit a pair of CMPs. Traditionally an "icmp ne i128" would map to
an EOR/EOR/ORR/CBNZ, but that uses more registers so it's easier to go with a
CSET/CINC/CBNZ combination. Slightly less efficient, but this is -O0 anyway.

Thanks to Anton Korobeynikov for pointing out the issue.

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

7 years agoImprove documentation on MSVC workaround for AlignedCharArray (NFC)
Mehdi Amini [Thu, 1 Dec 2016 20:54:29 +0000 (20:54 +0000)]
Improve documentation on MSVC workaround for AlignedCharArray (NFC)

The comment only mentioned "old version of MSVC".

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

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

7 years agoFix unused variable warning in Release builds. NFC.
Benjamin Kramer [Thu, 1 Dec 2016 20:49:34 +0000 (20:49 +0000)]
Fix unused variable warning in Release builds. NFC.

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

7 years ago[PR29121] Don't fold if it would produce atomic vector loads or stores
Philip Reames [Thu, 1 Dec 2016 20:17:06 +0000 (20:17 +0000)]
[PR29121] Don't fold if it would produce atomic vector loads or stores

The instcombine code which folds loads and stores into their use types can trip up if the use is a bitcast to a type which we can't directly load or store in the IR. In principle, such types shouldn't exist, but in practice they do today. This is a workaround to avoid a bug while we work towards the long term goal.

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

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

7 years agoFactor out common parts of LVI and Float2Int into ConstantRange [NFCI]
Philip Reames [Thu, 1 Dec 2016 20:08:47 +0000 (20:08 +0000)]
Factor out common parts of LVI and Float2Int into ConstantRange [NFCI]

This just extracts out the transfer rules for constant ranges into a single shared point. As it happens, neither bit of code actually overlaps in terms of the handled operators, but with this change that could easily be tweaked in the future.

I also want to have this separated out to make experimenting with a eager value info implementation and possibly a ValueTracking-like fixed depth recursion peephole version. There's no reason all four of these can't share a common implementation which reduces the chances of bugs.

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

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

7 years ago[SLP] Fix for PR6246: vectorization for scalar ops on vector elements.
Alexey Bataev [Thu, 1 Dec 2016 20:06:53 +0000 (20:06 +0000)]
[SLP] Fix for PR6246: vectorization for scalar ops on vector elements.

When trying to vectorize trees that start at insertelement instructions
function tryToVectorizeList() uses vectorization factor calculated as
MinVecRegSize/ScalarTypeSize. But sometimes it does not work as tree
cost for this fixed vectorization factor is too high.
Patch tries to improve the situation. It tries different vectorization
factors from max(PowerOf2Floor(NumberOfVectorizedValues),
MinVecRegSize/ScalarTypeSize) to MinVecRegSize/ScalarTypeSize and tries
to choose the best one.

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

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

7 years ago[WebAssembly] Define more wasm binary encoding constants.
Dan Gohman [Thu, 1 Dec 2016 20:02:12 +0000 (20:02 +0000)]
[WebAssembly] Define more wasm binary encoding constants.

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

7 years agoRefactored X86InterleavedAccess into a class. NFCI.
David L Kreitzer [Thu, 1 Dec 2016 19:56:39 +0000 (19:56 +0000)]
Refactored X86InterleavedAccess into a class. NFCI.

Patch by Farhana Aleen

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

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

7 years ago[tablegen] Delete duplicates from a vector without skipping elements
Vedant Kumar [Thu, 1 Dec 2016 19:38:50 +0000 (19:38 +0000)]
[tablegen] Delete duplicates from a vector without skipping elements

Tablegen's -gen-instr-info pass has a bug in its emitEnums() routine.
The function intends for values in a vector to be deduplicated, but it
accidentally skips over elements after performing a deletion.

I think there are smarter ways of doing this deduplication, but we can
do that in a follow-up commit if there's interest. See the thread:
[PATCH] TableGen InstrMapping Bug fix.

Patch by Tyler Kenney!

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

7 years agoRemove unused header, NFC.
Vedant Kumar [Thu, 1 Dec 2016 19:38:48 +0000 (19:38 +0000)]
Remove unused header, NFC.

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

7 years agoMove most EH from MachineModuleInfo to MachineFunction
Matthias Braun [Thu, 1 Dec 2016 19:32:15 +0000 (19:32 +0000)]
Move most EH from MachineModuleInfo to MachineFunction

Recommitting r288293 with some extra fixes for GlobalISel code.

Most of the exception handling members in MachineModuleInfo is actually
per function data (talks about the "current function") so it is better
to keep it at the function instead of the module.

This is a necessary step to have machine module passes work properly.

Also:
- Rename TidyLandingPads() to tidyLandingPads()
- Use doxygen member groups instead of "//===- EH ---"... so it is clear
  where a group ends.
- I had to add an ugly const_cast at two places in the AsmPrinter
  because the available MachineFunction pointers are const, but the code
  wants to call tidyLandingPads() in between
  (markFunctionEnd()/endFunction()).

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

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

7 years agoFix a bug with llvm-size and the -m option with multiple files not printing the file...
Kevin Enderby [Thu, 1 Dec 2016 19:12:55 +0000 (19:12 +0000)]
Fix a bug with llvm-size and the -m option with multiple files not printing the file names.

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

7 years agoFix unused variable warning in Release builds. NFC.
Benjamin Kramer [Thu, 1 Dec 2016 19:10:10 +0000 (19:10 +0000)]
Fix unused variable warning in Release builds. NFC.

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

7 years agoFix module map to create a module for the configured header Config/abi-breaking.h
Mehdi Amini [Thu, 1 Dec 2016 19:08:38 +0000 (19:08 +0000)]
Fix module map to create a module for the configured header Config/abi-breaking.h

A client of a header that relies on ABI breaking should get the macro
exported there.
Before this, the unittest for Support/Error including Support/Error.h
didn't get the macro exported by the Support module, because the
latter only re-export its submodules and included module, not
textual headers.

Hopefully, it'll also fix the build with local submodule visibility,
since the LLVM_Utils contains two submodules: ADT and Support. They
both include abi-breaking.h that defines a symbol. The textual
inclusion lead to a double definition of the symbol which broke
the parent module.

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

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

7 years agoThis change removes the dependency on DwarfDebug that was used for DW_FORM_ref_addr...
Greg Clayton [Thu, 1 Dec 2016 18:56:29 +0000 (18:56 +0000)]
This change removes the dependency on DwarfDebug that was used for DW_FORM_ref_addr by making a new DIEUnit class in DIE.cpp.

The DIEUnit class represents a compile or type unit and it owns the unit DIE as an instance variable. This allows anyone with a DIE, to get the unit DIE, and then get back to its DIEUnit without adding any new ivars to the DIE class. Why was this needed? The DIE class has an Offset that is always the CU relative DIE offset, not the "offset in debug info section" as was commented in the header file (the comment has been corrected). This is great for performance because most DIE references are compile unit relative and this means most code that accessed the DIE's offset didn't need to make it into a compile unit relative offset because it already was. When we needed to emit a DW_FORM_ref_addr though, we needed to find the absolute offset of the DIE by finding the DIE's compile/type unit. This class did have the absolute debug info/type offset and could be added to the CU relative offset to compute the absolute offset. With this change we can easily get back to a DIE's DIEUnit which will have this needed offset. Prior to this is required having a DwarfDebug and required calling:

DwarfCompileUnit *DwarfDebug::lookupUnit(const DIE *CU) const;
Now we can use the DIEUnit class to do so without needing DwarfDebug. All clients now use DIEUnit objects (the DwarfDebug stack and the DwarfLinker). A follow on patch for the DWARF generator will also take advantage of this.

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

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

7 years ago[SLP] Fixed cost model for horizontal reduction.
Alexey Bataev [Thu, 1 Dec 2016 18:42:42 +0000 (18:42 +0000)]
[SLP] Fixed cost model for horizontal reduction.

Currently when cost of scalar operations is evaluated the vector type is
used for scalar operations. Patch fixes this issue and fixes evaluation
of the vector operations cost.
Several test showed that vector cost model is too optimistic. It
allowed vectorization of 8 or less add/fadd operations, though scalar
code is faster. Actually, only for 16 or more operations vector code
provides better performance.

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

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

7 years ago[llvm] Implement support for -defsym assembler option
Mandeep Singh Grang [Thu, 1 Dec 2016 18:42:04 +0000 (18:42 +0000)]
[llvm] Implement support for -defsym assembler option

Summary:
Changes to llvm-mc to move common logic to separate function.

Related clang patch: https://reviews.llvm.org/D26213

Reviewers: rafael, t.p.northover, colinl, echristo, rengolin

Subscribers: llvm-commits

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

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

7 years ago[X86][SSE] Moved shuffle mask widening/narrowing helper functions earlier in the...
Simon Pilgrim [Thu, 1 Dec 2016 18:27:19 +0000 (18:27 +0000)]
[X86][SSE] Moved shuffle mask widening/narrowing helper functions earlier in the file.

Will be necessary for a future patch.

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

7 years ago[libFuzzer] add a test for r288389 (-rss_limit_mb=0 means no limit).
Kostya Serebryany [Thu, 1 Dec 2016 18:02:07 +0000 (18:02 +0000)]
[libFuzzer] add a test for r288389 (-rss_limit_mb=0 means no limit).

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

7 years ago[SystemZ] Fix fallout from r288374
Ulrich Weigand [Thu, 1 Dec 2016 18:00:50 +0000 (18:00 +0000)]
[SystemZ] Fix fallout from r288374

Avoid undefined behavior due to too-large shift count.

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

7 years ago[AsmParser] Diagnose empty symbol for .set directive
Weiming Zhao [Thu, 1 Dec 2016 18:00:36 +0000 (18:00 +0000)]
[AsmParser] Diagnose empty symbol for .set directive

Summary: Diagnose empty symbol to avoid hitting assertion in MCContext::getOrCreateSymbol

Reviewers: eli.friedman, rengolin

Subscribers: llvm-commits

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

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

7 years ago[libFuzzer] treat -rss_limit_mb=0 as no limit
Kostya Serebryany [Thu, 1 Dec 2016 17:56:15 +0000 (17:56 +0000)]
[libFuzzer] treat -rss_limit_mb=0 as no limit

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

7 years agoRecommit r287403 (reverted in r287804): [lit] When setting SDKROOT on Darwin, use...
Kuba Mracek [Thu, 1 Dec 2016 17:45:22 +0000 (17:45 +0000)]
Recommit r287403 (reverted in r287804): [lit] When setting SDKROOT on Darwin, use '--sdk macosx' to find the right SDK path.

This shouls now be safe and not break any more bots.  It's strictly better to use '--sdk macosx', otherwise xcrun can return weird things for example when you have Command Line Tools or the SDK installed into '/'.

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

7 years ago[GVN, OptDiag] Print the interesting instructions involved in missed load-elimination
Adam Nemet [Thu, 1 Dec 2016 17:34:50 +0000 (17:34 +0000)]
[GVN, OptDiag] Print the interesting instructions involved in missed load-elimination

[recommitting after the fix in r288307]

This includes the intervening store and the load/store that we're trying
to forward from in the optimization remark for the missed load
elimination.

This is hooked up under a new mode in ORE that allows for compile-time
budget for a bit more analysis to print more insightful messages.  This
mode is currently enabled for -fsave-optimization-record (-Rpass is
trickier since it is controlled in the front-end).

With this we can now print the red remark in http://lab.llvm.org:8080/artifacts/opt-view_test-suite/build/SingleSource/Benchmarks/Dhrystone/CMakeFiles/dry.dir/html/_org_test-suite_SingleSource_Benchmarks_Dhrystone_dry.c.html#L446

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

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

7 years ago[GVN, OptDiag] Include the value that is forwarded in load elimination
Adam Nemet [Thu, 1 Dec 2016 17:34:44 +0000 (17:34 +0000)]
[GVN, OptDiag] Include the value that is forwarded in load elimination

[recommitting after the fix in r288307]

This requires some changes to the opt-diag API.  Hal and I have
discussed this at the Dev Meeting and came up with a streaming delimiter
(setExtraArgs) to solve this.

Arguments after this delimiter are only included in the optimization
records and not in the remarks printed in the compiler output.  (Note,
how in the test the content of the YAML file changes but the remarks on
the compiler output don't.)

This implements the green GVN message with a bug fix at line
http://lab.llvm.org:8080/artifacts/opt-view_test-suite/build/SingleSource/Benchmarks/Dhrystone/CMakeFiles/dry.dir/html/_org_test-suite_SingleSource_Benchmarks_Dhrystone_dry.c.html#L446

The fix is that now we properly include the constant value in the
message: "load of type i32 eliminated in favor of 7"

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

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

7 years ago[SLP] Additional tests with the cost of vector operations.
Alexey Bataev [Thu, 1 Dec 2016 17:26:54 +0000 (17:26 +0000)]
[SLP] Additional tests with the cost of vector operations.

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

7 years ago[SystemZ] Fix applyFixup for 12-bit fixups
Ulrich Weigand [Thu, 1 Dec 2016 17:10:27 +0000 (17:10 +0000)]
[SystemZ] Fix applyFixup for 12-bit fixups

Now that we have fixups that only fill parts of a byte, it turns
out we have to mask off the bits outside the fixup area when
applying them.  Failing to do so caused invalid object code to
be emitted for bprp with a negative 12-bit displacement.

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

7 years agoRevert "[SLP] Additional tests with the cost of vector operations."
Alexey Bataev [Thu, 1 Dec 2016 16:45:04 +0000 (16:45 +0000)]
Revert "[SLP] Additional tests with the cost of vector operations."

This reverts commit a61718435fc4118c82f8aa6133fd81f803789c1e.

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

7 years ago[GVN] Basic optimization remark support
Adam Nemet [Thu, 1 Dec 2016 16:40:32 +0000 (16:40 +0000)]
[GVN] Basic optimization remark support

[recommitting after the fix in r288307]

Follow-on patches will add more interesting cases.

The goal of this patch-set is to get the GVN messages printed in
opt-viewer from Dhrystone as was presented in my Dev Meeting talk.  This
is the optimization view for the function (the last remark in the
function has a bug which is fixed in this series):
http://lab.llvm.org:8080/artifacts/opt-view_test-suite/build/SingleSource/Benchmarks/Dhrystone/CMakeFiles/dry.dir/html/_org_test-suite_SingleSource_Benchmarks_Dhrystone_dry.c.html#L430

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

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

7 years ago[SLP] Additional tests with the cost of vector operations.
Alexey Bataev [Thu, 1 Dec 2016 16:11:48 +0000 (16:11 +0000)]
[SLP] Additional tests with the cost of vector operations.

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

7 years ago[X86][SSE] Classify AND bitmasks as variable shuffle masks
Simon Pilgrim [Thu, 1 Dec 2016 16:00:14 +0000 (16:00 +0000)]
[X86][SSE] Classify AND bitmasks as variable shuffle masks

They are loading the bitmasks from the constant pool so the cost is similar to loading a shuffle mask.

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

7 years ago[X86][SSE] Add support for combining AND bitmasks to shuffles.
Simon Pilgrim [Thu, 1 Dec 2016 15:41:40 +0000 (15:41 +0000)]
[X86][SSE] Add support for combining AND bitmasks to shuffles.

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

7 years agoRemove iostream include from WasmObjectFile
Pavel Labath [Thu, 1 Dec 2016 15:20:34 +0000 (15:20 +0000)]
Remove iostream include from WasmObjectFile

The file does not seems to use c++ iostreams (and is is llvm policy to avoid
that). Committing as obvious.

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

7 years ago[LMT] Restrict nop length to one
Asaf Badouh [Thu, 1 Dec 2016 15:19:10 +0000 (15:19 +0000)]
[LMT] Restrict nop length to one
not all lakemont MCU support long nop.
we can't assume we can generate long nop by default for MCU.

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

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

7 years ago[X86][SSE] Tidied up filecheck prefixes for uitofp fast-math tests.
Simon Pilgrim [Thu, 1 Dec 2016 14:56:48 +0000 (14:56 +0000)]
[X86][SSE] Tidied up filecheck prefixes for uitofp fast-math tests.

They should be in 'narrowing' order from common to more specific test prefixes.

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

7 years agoSilence GCC's -Wenum-compare after r288335 in the same way it is done
Daniel Jasper [Thu, 1 Dec 2016 14:33:50 +0000 (14:33 +0000)]
Silence GCC's -Wenum-compare after r288335 in the same way it is done
in X86FastISel.cpp.

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

7 years ago[SelectionDAG] Rename and clarify visitFMULForFMADCombine (NFC)
Nicolai Haehnle [Thu, 1 Dec 2016 14:04:13 +0000 (14:04 +0000)]
[SelectionDAG] Rename and clarify visitFMULForFMADCombine (NFC)

Summary: Suggested by @spatel in D26602.

Reviewers: spatel, hfinkel

Subscribers: spatel, llvm-commits

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

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

7 years ago[X86][SSE] Add support for combining target shuffles to AND bitmasks.
Simon Pilgrim [Thu, 1 Dec 2016 13:47:02 +0000 (13:47 +0000)]
[X86][SSE] Add support for combining target shuffles to AND bitmasks.

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

7 years ago[X86][SSE] Add support for combining ISD::AND with shuffles.
Simon Pilgrim [Thu, 1 Dec 2016 11:52:37 +0000 (11:52 +0000)]
[X86][SSE] Add support for combining ISD::AND with shuffles.

Attempts to convert an AND with a vector of 255 or 0 values into a shuffle (blend) mask.

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

7 years ago[X86][SSE] Added tests showing missed combines of shuffles with ANDs.
Simon Pilgrim [Thu, 1 Dec 2016 11:26:07 +0000 (11:26 +0000)]
[X86][SSE] Added tests showing missed combines of shuffles with ANDs.

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

7 years ago[SCCP] Switch over to DEBUG() and drop an #ifdef.
Davide Italiano [Thu, 1 Dec 2016 08:48:14 +0000 (08:48 +0000)]
[SCCP] Switch over to DEBUG() and drop an #ifdef.

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

7 years ago[SCCP] Prefer `auto` when the type is obvious. NFCI.
Davide Italiano [Thu, 1 Dec 2016 08:36:12 +0000 (08:36 +0000)]
[SCCP] Prefer `auto` when the type is obvious. NFCI.

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

7 years agoTemporarily Revert "Move most EH from MachineModuleInfo to MachineFunction"
Eric Christopher [Thu, 1 Dec 2016 07:50:12 +0000 (07:50 +0000)]
Temporarily Revert "Move most EH from MachineModuleInfo to MachineFunction"

This apprears to have broken the global isel bot:
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-globalisel_build/5174/console

This reverts commit r288293.

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