OSDN Git Service

android-x86/external-llvm.git
7 years ago[AMDGPU][NFC] De-tabify
Konstantin Zhuravlyov [Wed, 8 Feb 2017 13:29:23 +0000 (13:29 +0000)]
[AMDGPU][NFC] De-tabify

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

7 years agoAdding virtual destructor for PredicateBase.
Alexander Kornienko [Wed, 8 Feb 2017 13:28:27 +0000 (13:28 +0000)]
Adding virtual destructor for PredicateBase.

A virtual destructor is needed, since the derived classes are stored in
`iplist<PredicateBase> AllInfos;` and, apparently, ilist_node doesn't have a
virtual destructor.

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

7 years ago[ARM] GlobalISel: Add FPR reg bank
Diana Picus [Wed, 8 Feb 2017 13:23:04 +0000 (13:23 +0000)]
[ARM] GlobalISel: Add FPR reg bank

Add a register bank for floating point values and select simple instructions
using them (add, copies from GPR).

This assumes that the hardware can cope with a single precision add (VADDS)
instruction, so the legalizer will treat G_FADD as legal and the instruction
selector will refuse to select if the hardware doesn't support it. In the future
we'll want to be more careful about this, and legalize to libcalls if we have to
use soft float.

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

7 years ago[AMDGPU] Distinguish between S/VGPR allocation and encoding granularities
Konstantin Zhuravlyov [Wed, 8 Feb 2017 13:18:40 +0000 (13:18 +0000)]
[AMDGPU] Distinguish between S/VGPR allocation and encoding granularities

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

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

7 years ago[AMDGPU] Move register related queries to subtarget class
Konstantin Zhuravlyov [Wed, 8 Feb 2017 13:02:33 +0000 (13:02 +0000)]
[AMDGPU] Move register related queries to subtarget class

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

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

7 years ago[AArch64][TableGen] Skip tied result operands for InstAlias
Amara Emerson [Wed, 8 Feb 2017 11:28:08 +0000 (11:28 +0000)]
[AArch64][TableGen] Skip tied result operands for InstAlias

This patch checks the number of operands in the resulting
instruction instead of just the alias, then skips over
tied operands when generating the printing method.

This allows us to generate the preferred assembly syntax
for the AArch64 'ins' instruction, which should always be
displayed as 'mov' according to the ARMARM.

Several unit tests have changed as a result, but only to
reflect the preferred disassembly.

Some other InstAlias patterns (movk/bic/orr) needed a
slight adjustment to stop them becoming the default
and breaking other unit tests.

Patch by Graham Hunter.

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

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

7 years agoUpdate CODE_OWNERS with my new email address
Dylan McKay [Wed, 8 Feb 2017 10:38:06 +0000 (10:38 +0000)]
Update CODE_OWNERS with my new email address

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

7 years ago[AVR] XFAIL a set of failing CodeGen tests
Dylan McKay [Wed, 8 Feb 2017 10:24:18 +0000 (10:24 +0000)]
[AVR] XFAIL a set of failing CodeGen tests

There are about 3 underlying bugs causing the tests to fail.

On top of that, some tests just we're 'generic' enough. i.e. 32-bit
registers.

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

7 years ago[Assembler] Enable nicer diagnostics for inline assembly.
Sanne Wouda [Wed, 8 Feb 2017 10:20:07 +0000 (10:20 +0000)]
[Assembler] Enable nicer diagnostics for inline assembly.

Summary:
Enables source location in diagnostic messages from the backend.  This
is after parsing, during finalization.  This requires the SourceMgr, the
inline assembly string buffer, and DiagInfo to still be alive after
EmitInlineAsm returns.

This patch creates a single SourceMgr for inline assembly inside the
AsmPrinter.  MCContext gets a pointer to this SourceMgr.  Using one
SourceMgr per call to EmitInlineAsm would make it difficult for
MCContext to figure out in which SourceMgr the SMLoc is located, while a
single SourceMgr can figure it out if it has multiple buffers.

The Str argument to EmitInlineAsm is copied into a buffer and owned by
the inline asm SourceMgr.  This ensures that DiagHandlers won't print
garbage.  (Clang emits a "note: instantiated into assembly here", which
refers to this string.)

The AsmParser gets destroyed before finalization, which means that the
DiagHandlers the AsmParser installs into the SourceMgr will be stale.
Restore the saved DiagHandlers.

Since now we're using just one SourceMgr for multiple inline asm
strings, we need to tell the AsmParser which buffer it needs to parse
currently.  Hand a buffer id -- returned from SourceMgr::
AddNewSourceBuffer -- to the AsmParser.

Reviewers: rnk, grosbach, compnerd, rengolin, rovka, anemet

Reviewed By: rnk

Subscribers: llvm-commits

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

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

7 years agoUse dynamic symbols for ELF disassembly
Sam Parker [Wed, 8 Feb 2017 09:44:18 +0000 (09:44 +0000)]
Use dynamic symbols for ELF disassembly

Disassembly currently begins from addresses obtained from the objects
symbol table. For ELF, add the dynamic symbols to the list if no
static symbols are available so that we can more successfully
disassemble stripped binaries.

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

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

7 years ago[ArgPromote] Delete a test that makes no sense (any more).
Chandler Carruth [Wed, 8 Feb 2017 08:54:08 +0000 (08:54 +0000)]
[ArgPromote] Delete a test that makes no sense (any more).

This test is under 'ArgumentPromotion' but there are no arguments that
get promoted in the test case, so there seems to be no point. Also,
there are no assertions about the output at all, so this seems like
something we should just delete given the low value.

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

7 years ago[AVR] Add missing #includes
Dylan McKay [Wed, 8 Feb 2017 08:52:46 +0000 (08:52 +0000)]
[AVR] Add missing #includes

A previous change seems to have remove #includes from header files. This
fixes the build.

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

7 years ago[ArgPromote] Clean up a crash test case by rinsing it through opt,
Chandler Carruth [Wed, 8 Feb 2017 08:47:35 +0000 (08:47 +0000)]
[ArgPromote] Clean up a crash test case by rinsing it through opt,
renaming things to at least have somewhat spelled out names, and even
have meaningful names where I could guess at what they should be.

Also add FileCheck assertions that we're actually doing what we set out
to do for some of the tests, for example not promoting a type that would
result in infinite promotion.

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

7 years ago[ArgPromote] Actually add FileCheck to a test that I actually updated to
Chandler Carruth [Wed, 8 Feb 2017 08:04:02 +0000 (08:04 +0000)]
[ArgPromote] Actually add FileCheck to a test that I actually updated to
have nice CHECK patterns instead of relying on a coarse 'not grep'
check. Sorry that I missed this the first time through.

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

7 years ago[ArgPromote] Actually run FileCheck on this test. The CHECK lines are
Chandler Carruth [Wed, 8 Feb 2017 08:01:14 +0000 (08:01 +0000)]
[ArgPromote] Actually run FileCheck on this test. The CHECK lines are
already there, just waiting to, well, be checked. =]

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

7 years agoTargetLowering: Remove AddrSpace parameter from GetAddrModeArguments
Matt Arsenault [Wed, 8 Feb 2017 07:09:03 +0000 (07:09 +0000)]
TargetLowering: Remove AddrSpace parameter from GetAddrModeArguments

It doesn't make any sense to pass in to what is supposed to be parsing
the call, and this can be inferred from the pointer output.

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

7 years agoLSR: Check atomic instruction pointer operands
Matt Arsenault [Wed, 8 Feb 2017 06:44:58 +0000 (06:44 +0000)]
LSR: Check atomic instruction pointer operands

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

7 years agoAMDGPU: Enable InferAddressSpaces
Matt Arsenault [Wed, 8 Feb 2017 06:16:04 +0000 (06:16 +0000)]
AMDGPU: Enable InferAddressSpaces

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

7 years ago[X86] Add test for clflushopt intrinsic and only enable it to be selected if the...
Craig Topper [Wed, 8 Feb 2017 05:45:46 +0000 (05:45 +0000)]
[X86] Add test for clflushopt intrinsic and only enable it to be selected if the feature flag is set.

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

7 years ago[X86] Remove the VMFUNC feature flag. It was only partially implemented and we have...
Craig Topper [Wed, 8 Feb 2017 05:45:42 +0000 (05:45 +0000)]
[X86] Remove the VMFUNC feature flag. It was only partially implemented and we have no support for codegening vmfunc instructions today.

If that support ever gets added, the full feature flag support should come along with it.

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

7 years ago[X86] Remove PCOMMIT instruction support since Intel has deprecated this instruction...
Craig Topper [Wed, 8 Feb 2017 05:45:39 +0000 (05:45 +0000)]
[X86] Remove PCOMMIT instruction support since Intel has deprecated this instruction with no plans to release products with it.

Intel's documentation for the deprecation https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction

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

7 years agoMove mnemonicIsValid to Mips target.
Craig Topper [Wed, 8 Feb 2017 02:54:12 +0000 (02:54 +0000)]
Move mnemonicIsValid to Mips target.

Summary:
The Mips target is the only user of mnemonicIsValid. This patch
moves this method from AsmMatcherEmitter.cpp to MipsAsmParser.cpp,
getting rid of the method in all other targets where it generated
warnings about an unused function.

Patch by Gonsolo.

Reviewers: craig.topper

Reviewed By: craig.topper

Subscribers: sdardis

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

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

7 years agoRevert "CVP: Make CVP iterate in an order that maximizes reuse of LVI cache"
Daniel Berlin [Wed, 8 Feb 2017 02:48:25 +0000 (02:48 +0000)]
Revert "CVP: Make CVP iterate in an order that maximizes reuse of LVI cache"

This reverts commit r294398, it seems to be failing on the bots.

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

7 years agoCVP: Make CVP iterate in an order that maximizes reuse of LVI cache
Daniel Berlin [Wed, 8 Feb 2017 02:35:07 +0000 (02:35 +0000)]
CVP: Make CVP iterate in an order that maximizes reuse of LVI cache

Summary:
After the DFS order change for LVI, i have a few testcases that now
take forever.

The TL;DR - This is mainly due to the overdefined cache, but that
requires predicateinfo to fix[1]

In order to maximize reuse of the LVI cache for now, change the order
we iterate in.

This reduces my testcase from 5 minutes to 4 seconds.

I have verified cases like gmic do not get slower.

I am playing with whether the order should be postorder or idf.

[1] In practice, overdefined anywhere should be overdefined
everywhere, so this cache should be global.  That also fixes this bug.
The problem, however, is that LVI relies on this cache being filled in
per-block because it wants different values in different blocks due to
precisely the naming issue that predicateinfo fixes.  With
predicateinfo, making the cache global works fine on individual
passes, and also resolves this issue.

Reviewers: davide, sanjoy, chandlerc

Subscribers: llvm-commits, djasper

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

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

7 years ago[DAGCombiner] Push truncate through adde when the carry isn't used.
Amaury Sechet [Wed, 8 Feb 2017 00:32:36 +0000 (00:32 +0000)]
[DAGCombiner] Push truncate through adde when the carry isn't used.

Summary: As per title.

Reviewers: mkuper, spatel, bkramer, RKSimon, zvi

Subscribers: llvm-commits

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

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

7 years ago[Orc][RPC] Add a HandlerTratis specialization for free functions.
Lang Hames [Wed, 8 Feb 2017 00:13:51 +0000 (00:13 +0000)]
[Orc][RPC] Add a HandlerTratis specialization for free functions.

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

7 years ago[libFuzzer] Use long long to ensure 64 bits.
Marcos Pividori [Wed, 8 Feb 2017 00:03:31 +0000 (00:03 +0000)]
[libFuzzer] Use long long to ensure 64 bits.

We should always use unsigned long long to ensure 64 bits. On Windows, unsigned
long is 4 bytes. This was the reason why value-profile-cmp4.test was failing on
Windows.

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

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

7 years ago[libFuzzer] Use custom target instead of list of binaries for tests.
Marcos Pividori [Wed, 8 Feb 2017 00:03:26 +0000 (00:03 +0000)]
[libFuzzer] Use custom target instead of list of binaries for tests.

Update cmake to use a custom target TestBinaries instead of a list of targets.
This simplifies cmake, and fix some errors. This way, we don't have to propagate
the values into parents directories. We only need to use add_dependencies.

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

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

7 years ago[libFuzzer] Properly use Handle instead of FD on Windows.
Marcos Pividori [Wed, 8 Feb 2017 00:03:18 +0000 (00:03 +0000)]
[libFuzzer] Properly use Handle instead of FD on Windows.

For Windows, sanitizers work with Handles, not with posix file descriptors,
because they use the windows-specific API. So we need to convert the fds to
handles before passing them to the sanitizer library.
After this change, close_fd_mask is fixed for Windows (this fix some tests too).

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

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

7 years ago[libFuzzer] Change Uninstrumented test name.
Marcos Pividori [Wed, 8 Feb 2017 00:03:13 +0000 (00:03 +0000)]
[libFuzzer] Change Uninstrumented test name.

On Windows, executables with the word "uninst" included in their names are
associated with administrator privileges.

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

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

7 years ago[libFuzzer] fuzzer-jobs requires posix.
Marcos Pividori [Wed, 8 Feb 2017 00:03:07 +0000 (00:03 +0000)]
[libFuzzer] fuzzer-jobs requires posix.

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

7 years ago[libFuzzer] Update fuzzer.test to properly set environment variables.
Marcos Pividori [Wed, 8 Feb 2017 00:03:03 +0000 (00:03 +0000)]
[libFuzzer] Update fuzzer.test to properly set environment variables.

Use env to set environment variables, so it works on Windows and Linux.

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

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

7 years ago[libFuzzer] Don't add newline character when using echo in tests.
Marcos Pividori [Wed, 8 Feb 2017 00:02:59 +0000 (00:02 +0000)]
[libFuzzer] Don't add newline character when using echo in tests.

Add the option "-n", so we don't add a new line character at the end of the file
when using echo. (on Windows this means 2 characters).

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

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

7 years ago[libFuzzer] Disable ulimit test on windows.
Marcos Pividori [Wed, 8 Feb 2017 00:02:54 +0000 (00:02 +0000)]
[libFuzzer] Disable ulimit test on windows.

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

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

7 years ago[libFuzzer] Remove ? wildcard on tests.
Marcos Pividori [Wed, 8 Feb 2017 00:02:50 +0000 (00:02 +0000)]
[libFuzzer] Remove ? wildcard on tests.

We can not use the wildcard ? on Windows.

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

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

7 years ago[libFuzzer] Update fuzzer-segv to set environment variables.
Marcos Pividori [Wed, 8 Feb 2017 00:02:45 +0000 (00:02 +0000)]
[libFuzzer] Update fuzzer-segv to set environment variables.

Use env to set environment variables, so it works on Linux and Windows.

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

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

7 years ago[libFuzzer] Properly configure tests for Windows.
Marcos Pividori [Wed, 8 Feb 2017 00:02:41 +0000 (00:02 +0000)]
[libFuzzer] Properly configure tests for Windows.

This configuration is necessary, and is included in all tests suites.
We need to execute: `config.test_format = lit.formats.ShTest(False)`
Otherwise, lit will try to use bash, which generates many problems.

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

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

7 years ago[libFuzzer] Simplify dump_coverage test.
Marcos Pividori [Wed, 8 Feb 2017 00:02:36 +0000 (00:02 +0000)]
[libFuzzer] Simplify dump_coverage test.

Environment variables are handled differently on Windows. In this case it is not
necessary to use environment variables. So, I simplify the test to work on
Windows.

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

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

7 years ago[libFuzzer] Update Load test to work on 32 bits.
Marcos Pividori [Wed, 8 Feb 2017 00:02:32 +0000 (00:02 +0000)]
[libFuzzer] Update Load test to work on 32 bits.

We should ensure the size of the variable `a` is 8 bytes. Otherwise, this
generates a stack buffer overflow inside the memcpy call in 32 bits machines.
(We write more bytes than the size of a, when it is 4 bytes)

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

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

7 years ago[libFuzzer] Update test to consider different exceptions.
Marcos Pividori [Wed, 8 Feb 2017 00:02:25 +0000 (00:02 +0000)]
[libFuzzer] Update test to consider different exceptions.

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

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

7 years ago[libFuzzer] Temporarily fix Shmem for Windows.
Marcos Pividori [Wed, 8 Feb 2017 00:02:12 +0000 (00:02 +0000)]
[libFuzzer] Temporarily fix Shmem for Windows.

In this diff, I add stubs for shared memory on Windows. Now we can compile and
use libFuzzer without support for shared memory.

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

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

7 years ago[IRCE] Add a missing invariant check
Sanjoy Das [Tue, 7 Feb 2017 23:59:07 +0000 (23:59 +0000)]
[IRCE] Add a missing invariant check

Currently IRCE relies on the loops it transforms to be (semantically) of
the form:

  for (i = START; i < END; i++)
    ...

or

  for (i = START; i > END; i--)
    ...

However, we were not verifying the presence of the START < END entry
check (i.e. check before the first iteration).  We were only verifying
that the backedge was guarded by (i + 1) < END.

Usually this would work "fine" since (especially in Java) most loops do
actually have the START < END check, but of course that is not
guaranteed.

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

7 years ago[CMake] Allow overriding CMAKE_LIBTOOL
Chris Bieneman [Tue, 7 Feb 2017 23:32:56 +0000 (23:32 +0000)]
[CMake] Allow overriding CMAKE_LIBTOOL

This patch allows a user to specify a their own libtool instead of auto-detecting one.

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

7 years ago[MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor...
Eugene Zelenko [Tue, 7 Feb 2017 23:02:00 +0000 (23:02 +0000)]
[MC] 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@294369 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PowerPC] Fix some Include What You Use warnings; other minor fixes (NFC).
Eugene Zelenko [Tue, 7 Feb 2017 22:59:46 +0000 (22:59 +0000)]
[PowerPC] Fix some Include What You Use warnings; other minor fixes (NFC).

This is preparation to reduce MC headers dependencies.

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

7 years ago[CMake] Fix USE_LLVM_SANITIZER configuration for out-of-tree builds.
Eric Fiselier [Tue, 7 Feb 2017 22:48:20 +0000 (22:48 +0000)]
[CMake] Fix USE_LLVM_SANITIZER configuration for out-of-tree builds.

Summary:
r291918 changed `HandleLLVMOptions.cmake` to add `-fsanitize-blacklist=<llvm-file>` when `LLVM_USE_SANITIZER=Undefined` is specified. This breaks out-of-tree users of `LLVM_USE_SANITIZER` since that file is not present.

This patch fixes the issue by checking if the file exists first.

Reviewers: mgorny, bogner, vitalybuka, krasin

Reviewed By: krasin

Subscribers: llvm-commits

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

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

7 years ago[libFuzzer] replace std::random_shuffle with std::shuffle as std::random_shuffle...
Kostya Serebryany [Tue, 7 Feb 2017 22:37:34 +0000 (22:37 +0000)]
[libFuzzer] replace std::random_shuffle with std::shuffle as std::random_shuffle is being deprecated in C++17. Also simplify fuzzer::Random. NFC

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

7 years ago[X86][SSE] Add SSE2 build vector insertion tests
Simon Pilgrim [Tue, 7 Feb 2017 22:23:12 +0000 (22:23 +0000)]
[X86][SSE] Add SSE2 build vector insertion tests

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

7 years agoPredicateInfo: Some compilers are unhappy with naming Use *'s Use. Change the name.
Daniel Berlin [Tue, 7 Feb 2017 22:11:43 +0000 (22:11 +0000)]
PredicateInfo: Some compilers are unhappy with naming Use *'s Use. Change the name.

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

7 years ago[X86][SSE] Add additional v4i32/v8i16/v16i8 build vector insertion tests
Simon Pilgrim [Tue, 7 Feb 2017 22:03:37 +0000 (22:03 +0000)]
[X86][SSE] Add additional v4i32/v8i16/v16i8 build vector insertion tests

With particular interest in cases where we don't make use of implicit zeroing or fail to break register dependencies

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

7 years agoFix some missing negations in the traits checking from r294349
David Blaikie [Tue, 7 Feb 2017 21:31:03 +0000 (21:31 +0000)]
Fix some missing negations in the traits checking from r294349

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

7 years agoDebugInfo: Track spilled variables in LiveDebugValues
Wolfgang Pieb [Tue, 7 Feb 2017 21:23:15 +0000 (21:23 +0000)]
DebugInfo: Track spilled variables in LiveDebugValues

When variables are spilled to the stack by the register allocator, keep track of their
debug locations in LiveDebugValues and insert DBG_VALUE instructions at the appropriate
place. Ensure that the locations are propagated down the dominator tree via the existing
mechanisms.

Reviewer: aprantl

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

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

7 years agoFix a typo in an error message for a check of invalid Mach-O files where
Kevin Enderby [Tue, 7 Feb 2017 21:20:44 +0000 (21:20 +0000)]
Fix a typo in an error message for a check of invalid Mach-O files where
it was printing the field name fileoff instead of filesize.  The original check
was added in r278557.

This was found in tracking down the problem that lead to the fix in
r293842 - [dsymutil] Fix __LINKEDIT vmsize in dsymutil upgrade path

rdar://30386075

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

7 years agoAdd PredicateInfo utility and printing pass
Daniel Berlin [Tue, 7 Feb 2017 21:10:46 +0000 (21:10 +0000)]
Add PredicateInfo utility and printing pass

Summary:
This patch adds a utility to build extended SSA (see "ABCD: eliminating
array bounds checks on demand"), and an intrinsic to support it. This
is then used to get functionality equivalent to propagateEquality in
GVN, in NewGVN (without having to replace instructions as we go). It
would work similarly in SCCP or other passes. This has been talked
about a few times, so i built a real implementation and tried to
productionize it.

Copies are inserted for operands used in assumes and conditional
branches that are based on comparisons (see below for more)

Every use affected by the predicate is renamed to the appropriate
intrinsic result.

E.g.
%cmp = icmp eq i32 %x, 50
br i1 %cmp, label %true, label %false
true:
ret i32 %x
false:
ret i32 1

will become

%cmp = icmp eq i32, %x, 50
br i1 %cmp, label %true, label %false
true:
; Has predicate info
; branch predicate info { TrueEdge: 1 Comparison: %cmp = icmp eq i32 %x, 50 }
%x.0 = call @llvm.ssa_copy.i32(i32 %x)
ret i32 %x.0
false:
ret i23 1

(you can use -print-predicateinfo to get an annotated-with-predicateinfo dump)

This enables us to easily determine what operations are affected by a
given predicate, and how operations affected by a chain of
predicates.

Reviewers: davide, sanjoy

Subscribers: mgorny, llvm-commits, Prazek

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

Update for review comments

Fix a bug Nuno noticed where we are giving information about and/or on edges where the info is not useful and easy to use wrong

Update for review comments

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

7 years agoADT: Add explicit conversions for reverse ilist iterators
Duncan P. N. Exon Smith [Tue, 7 Feb 2017 21:03:50 +0000 (21:03 +0000)]
ADT: Add explicit conversions for reverse ilist iterators

Add explicit conversions between forward and reverse ilist iterators.
These follow the conversion conventions of std::reverse_iterator, which
are off-by-one: the newly-constructed "reverse" iterator dereferences to
the previous node of the one sent in.  This has the benefit of
converting reverse ranges in place:
  - If [I, E) is a valid range,
  - then [reverse(E), reverse(I)) gives the same range in reverse order.

ilist_iterator::getReverse() is unchanged: it returns a reverse iterator
to the *same* node.

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

7 years ago[X86] Disable conditional tail calls (PR31257)
Hans Wennborg [Tue, 7 Feb 2017 20:37:45 +0000 (20:37 +0000)]
[X86] Disable conditional tail calls (PR31257)

They are currently modelled incorrectly (as calls, which clobber
registers, confusing e.g. Machine Copy Propagation).

Reverting until we figure out the proper solution.

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

7 years agoFix the docs build
Sanjoy Das [Tue, 7 Feb 2017 20:36:03 +0000 (20:36 +0000)]
Fix the docs build

(and add a bit of formatting.)

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

7 years agoGlobalISel: translate @llvm.va_end intrinsic.
Tim Northover [Tue, 7 Feb 2017 20:08:59 +0000 (20:08 +0000)]
GlobalISel: translate @llvm.va_end intrinsic.

Turns out no-one actually cares about this one (at least) in tree so we can
just drop it entirely.

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

7 years ago[x86] improve comments for SHRUNKBLEND node creation; NFC
Sanjay Patel [Tue, 7 Feb 2017 19:54:16 +0000 (19:54 +0000)]
[x86] improve comments for SHRUNKBLEND node creation; NFC

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

7 years ago[LV] Add new ARM/AArch64 interleaved access cost model tests (NFC)
Matthew Simpson [Tue, 7 Feb 2017 19:34:24 +0000 (19:34 +0000)]
[LV] Add new ARM/AArch64 interleaved access cost model tests (NFC)

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

7 years agoThis patch adds a ssa_copy intrinsic, as part of splitting up D29316.
Daniel Berlin [Tue, 7 Feb 2017 19:29:25 +0000 (19:29 +0000)]
This patch adds a ssa_copy intrinsic, as part of splitting up D29316.

Summary:
The intrinsic, marked as returning it's first argument, has no code
generation effect (though currently not every optimization pass knows
that intrinsics with the returned attribute can be looked through).

It is about to be used to by the PredicateInfo pass to attach
predicate information to existing operands, and be able to tell what
the predicate information affects.

We deliberately do not attach any info through a second operand so
that the intrinsics do not need to dominate the comparisons/etc (since
in the case of assume, we may want to push them up the post-dominator
tree).

Reviewers: davide, sanjoy

Subscribers: llvm-commits

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

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

7 years agoReplace custom written DFS walk with depth first iterator
Daniel Berlin [Tue, 7 Feb 2017 19:24:26 +0000 (19:24 +0000)]
Replace custom written DFS walk with depth first iterator

Summary:
GenericDomTreeConstruction had its own written DFS walk.
It is basically identical to the DFS walk df_* is doing in the iterators.
the one difference is that df_iterator uses an internal visited set.
The GenericDomTreeConstruction one reused a field in an existing densemap lookup.

Time-wise, this way is actually more cache-friendly (the previous way has a random store
into a successor's info, the new way does that store at the same time and in the same place
as other stores to the same info)

It costs some very small amount of memory to do this, and one we pay in some other part of
dom tree construction *anyway*, so we aren't really increasing dom tree constructions's
peak memory usage.

It could still be changed to use the old field with a little work on df_ext_* if we care
(and if someone find performance regressions)

Reviewers: chandlerc

Reviewed By: chandlerc

Subscribers: Eugene.Zelenko, llvm-commits

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

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

7 years ago[ImplicitNullCheck] Extend Implicit Null Check scope by using stores
Sanjoy Das [Tue, 7 Feb 2017 19:19:49 +0000 (19:19 +0000)]
[ImplicitNullCheck] Extend Implicit Null Check scope by using stores

Summary:
This change allows usage of store instruction for implicit null check.

Memory Aliasing Analisys is not used and change conservatively supposes
that any store and load may access the same memory. As a result
re-ordering of store-store, store-load and load-store is prohibited.

Patch by Serguei Katkov!

Reviewers: reames, sanjoy

Reviewed By: sanjoy

Subscribers: atrick, llvm-commits

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

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

7 years ago[x86] use range-for loops; NFCI
Sanjay Patel [Tue, 7 Feb 2017 19:18:25 +0000 (19:18 +0000)]
[x86] use range-for loops; NFCI

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

7 years ago[LV] Simplify ARM/AArch64 interleaved access cost model tests (NFC)
Matthew Simpson [Tue, 7 Feb 2017 19:17:44 +0000 (19:17 +0000)]
[LV] Simplify ARM/AArch64 interleaved access cost model tests (NFC)

This patch removes unneeded instructions from the existing ARM/AArch64
interleaved access cost model tests. I'll be adding a similar set of tests in a
follow-on patch to increase coverage.

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

7 years ago[CMake] Move ninja job pool options to HandleLLVMOptions
Chris Bieneman [Tue, 7 Feb 2017 19:06:22 +0000 (19:06 +0000)]
[CMake] Move ninja job pool options to HandleLLVMOptions

Moving the Ninja job pool configuration settings into the HandleLLVMOptions module will allow standalone builds of LLVM sub-projects to use the LLVM options without needing to re-implement them.

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

7 years ago[x86] use getSignBit() for clarity; NFCI
Sanjay Patel [Tue, 7 Feb 2017 19:01:35 +0000 (19:01 +0000)]
[x86] use getSignBit() for clarity; NFCI

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

7 years agoFix the -Werror build for some sign-comparisons
David Blaikie [Tue, 7 Feb 2017 18:58:17 +0000 (18:58 +0000)]
Fix the -Werror build for some sign-comparisons

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

7 years ago[PowerPC][Altivec] Add vnot extended mnemonic
Nemanja Ivanovic [Tue, 7 Feb 2017 18:57:29 +0000 (18:57 +0000)]
[PowerPC][Altivec] Add vnot extended mnemonic

Adds the vnot extended mnemonic for the vnor instruction.

Committing on behalf of brunoalr (Bruno Rosa).

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

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

7 years ago[SDAGISel] Simplify some SDAGISel code, NFC
Reid Kleckner [Tue, 7 Feb 2017 18:42:53 +0000 (18:42 +0000)]
[SDAGISel] Simplify some SDAGISel code, NFC

Hoist entry block code for arguments and swift error values out of the
basic block instruction selection loop. Lowering arguments once up front
seems much more readable than doing it conditionally inside the loop. It
also makes it clear that argument lowering can update StaticAllocaMap
because no instructions have been selected yet.

Also use range-based for loops where possible.

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

7 years agoAttempt to fix MSVC build broken by r294326
Pavel Labath [Tue, 7 Feb 2017 18:35:36 +0000 (18:35 +0000)]
Attempt to fix MSVC build broken by r294326

MSVC does not think that `char []` can be constexpr. Switch to regular const.

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

7 years ago[Support] Add FormatVariadic support for chrono types
Pavel Labath [Tue, 7 Feb 2017 18:11:33 +0000 (18:11 +0000)]
[Support] Add FormatVariadic support for chrono types

Summary:
The formatter has three knobs:
- the user can choose which time unit to use for formatting (default: whatever is the unit of the input)
- he can choose whether the unit gets displayed (default: yes)
- he can affect the way the number itself is formatted via standard number formatting options (default:default)

Reviewers: zturner, inglorion

Subscribers: llvm-commits

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

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

7 years ago[TargetLowering] fix formatting and comments for ShrinkDemandedConstant; NFC
Sanjay Patel [Tue, 7 Feb 2017 18:04:26 +0000 (18:04 +0000)]
[TargetLowering] fix formatting and comments for ShrinkDemandedConstant; NFC

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

7 years ago[AMDGPU] Fix for SIMachineScheduler crash. SI Scheduler should track
Alexander Timofeev [Tue, 7 Feb 2017 17:57:48 +0000 (17:57 +0000)]
[AMDGPU] Fix for SIMachineScheduler crash. SI Scheduler should track
         lane masks.

 Differential revision: https://reviews.llvm.org/D29442

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

7 years ago[InstCombine] Make max size array combine a tunable.
Davide Italiano [Tue, 7 Feb 2017 17:56:50 +0000 (17:56 +0000)]
[InstCombine] Make max size array combine a tunable.

Requested by Sanjoy/Hal a while ago, and forgotten by me
(r283612).

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

7 years ago[Hexagon] Update instruction types
Krzysztof Parzyszek [Tue, 7 Feb 2017 17:47:37 +0000 (17:47 +0000)]
[Hexagon] Update instruction types

Remove TypeXTYPE, TypeALU32, TypeSYSTEM, TypeJR, and instead use their
architecture counterparts.

Patch by Colin LeMahieu.

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

7 years ago[Hexagon] Remove encoding bits from mapped instructions
Krzysztof Parzyszek [Tue, 7 Feb 2017 17:42:11 +0000 (17:42 +0000)]
[Hexagon] Remove encoding bits from mapped instructions

- Map A2_zxtb to A2_andir.
- Map PS_call_nr J2_call.
- Map A2_tfr[t|f][new] to A2_padd[t|f][new].

Patch by Colin LeMahieu.

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

7 years agoFix my GVNHoist test case from r294317
Reid Kleckner [Tue, 7 Feb 2017 17:35:53 +0000 (17:35 +0000)]
Fix my GVNHoist test case from r294317

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

7 years agoFix the bitcode upgrade for DIGlobalVariable in a DIImportedEntity context.
Adrian Prantl [Tue, 7 Feb 2017 17:35:41 +0000 (17:35 +0000)]
Fix the bitcode upgrade for DIGlobalVariable in a DIImportedEntity context.

The bitcode upgrade for DIGlobalVariable unconditionally wrapped
DIGlobalVariables in a DIGlobalVariableExpression. When a
DIGlobalVariable is referenced by a DIImportedEntity, however, this is
wrong. This patch fixes the bitcode upgrade by deferring the creation
of DIGlobalVariableExpressions until we know the context of the
DIGlobalVariable.

<rdar://problem/30134279>

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

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

7 years agoRevert "[GVNHoist] Merge DebugLoc metadata on hoisted instructions"
Reid Kleckner [Tue, 7 Feb 2017 17:31:13 +0000 (17:31 +0000)]
Revert "[GVNHoist] Merge DebugLoc metadata on hoisted instructions"

This reverts commit r294250. It caused PR31891.

Add a test case that shows that inlinable calls retain location
information with an accurate scope.

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

7 years agoMemorySSA: Remove unnecessary classof functions
Daniel Berlin [Tue, 7 Feb 2017 16:58:22 +0000 (16:58 +0000)]
MemorySSA: Remove unnecessary classof functions

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

7 years ago[X86][SSE] Ensure that vector shift-by-immediate inputs are correctly bitcast to...
Simon Pilgrim [Tue, 7 Feb 2017 14:22:25 +0000 (14:22 +0000)]
[X86][SSE] Ensure that vector shift-by-immediate inputs are correctly bitcast to the result type

vXi8/vXi64 vector shifts are often shifted as vYi16/vYi32 types but we weren't always remembering to bitcast the input.

Tested with a new assert as we don't currently manipulate these shifts enough for test cases to catch them.

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

7 years agoAdd DAGCombiner load combine tests for {a|s}ext, {a|z|s}ext load nodes
Artur Pilipenko [Tue, 7 Feb 2017 14:09:37 +0000 (14:09 +0000)]
Add DAGCombiner load combine tests for {a|s}ext, {a|z|s}ext load nodes

Currently we don't support these nodes, so the tests check the current codegen without load combine. This change makes the review of the change to support these nodes more clear.

Separated from https://reviews.llvm.org/D29591 review.

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

7 years ago[CodeGenPrepare] Hoist all getSubtargetImpl calls to the beginning of the pass
Igor Laevsky [Tue, 7 Feb 2017 13:27:20 +0000 (13:27 +0000)]
[CodeGenPrepare] Hoist all getSubtargetImpl calls to the beginning of the pass

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

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

7 years ago[X86][SSE] Generalized integer absolute tests to test canonical pattern as well as...
Simon Pilgrim [Tue, 7 Feb 2017 13:15:09 +0000 (13:15 +0000)]
[X86][SSE] Generalized integer absolute tests to test canonical pattern as well as intrinsics

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

7 years ago[ARM] Make RWPI use movw/movt when available
Christof Douma [Tue, 7 Feb 2017 13:07:12 +0000 (13:07 +0000)]
[ARM] Make RWPI use movw/movt when available

When constructing global address literals while targeting the RWPI
relocation model. LLVM currently only uses literal pools. If MOVW/MOVT
instructions are available we can use these instead. Beside being more
efficient it allows -arm-execute-only to work with
-relocation-model=RWPI as well.

When we generate MOVW/MOVT for global addresses when targeting the RWPI
relocation model, we need to use base relative relocations. This patch
does the needed plumbing in MC to generate these for MOVW/MOVT.

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

Change-Id: I446786e43a6f5aa9b6a5bb2cd216d60d41c7755d

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

7 years ago[X86][SSE] Added 256-bit vector tests cases
Simon Pilgrim [Tue, 7 Feb 2017 12:01:36 +0000 (12:01 +0000)]
[X86][SSE] Added 256-bit vector tests cases

Exposes some poor codegen with identity shuffle due to bad interaction with insert_subvector(extract_subvector) / concat_subvectors

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

7 years ago[APInt] Fix rotl/rotr when the shift amount is greater than the total bit width.
Joey Gouly [Tue, 7 Feb 2017 11:58:22 +0000 (11:58 +0000)]
[APInt] Fix rotl/rotr when the shift amount is greater than the total bit width.

Review: https://reviews.llvm.org/D27749

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

7 years agoRevert "[DAGCombiner] (add X, (adde Y, 0, Carry)) -> (adde X, Y, Carry)"
Daniel Jasper [Tue, 7 Feb 2017 08:57:50 +0000 (08:57 +0000)]
Revert "[DAGCombiner] (add X, (adde Y, 0, Carry)) -> (adde X, Y, Carry)"

This reverts commit r294186.

On an internal test, this triggers an out-of-memory error on PPC,
presumably because there is another dagcombine that does the exact
opposite triggering and endless loop consuming more and more memory.

Chandler has started at creating a reduced test case and we'll attach it
as soon as possible.

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

7 years ago[AVX-512] Add masked and unmasked shift by immediate instructions to load folding...
Craig Topper [Tue, 7 Feb 2017 07:31:00 +0000 (07:31 +0000)]
[AVX-512] Add masked and unmasked shift by immediate instructions to load folding tables.

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

7 years ago[AVX-512] Add masked shift instructions to load folding tables.
Craig Topper [Tue, 7 Feb 2017 07:30:57 +0000 (07:30 +0000)]
[AVX-512] Add masked shift instructions to load folding tables.

This adds the masked versions of everything, but the shift by immediate instructions.

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

7 years ago[AVX-512] Add some of the shift instructions to the load folding tables.
Craig Topper [Tue, 7 Feb 2017 07:30:54 +0000 (07:30 +0000)]
[AVX-512] Add some of the shift instructions to the load folding tables.

This includes unmasked forms of variable shift and shifting by the lower element of a register.

Still need to do shift by immediate which was not foldable prior to avx512 and all the masked forms.

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

7 years agoAMDGPU: Fix missing static
Matt Arsenault [Tue, 7 Feb 2017 04:37:59 +0000 (04:37 +0000)]
AMDGPU: Fix missing static

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

7 years ago[X86] Change the Defs list for VZEROALL/VZEROUPPER back to not including YMM16-31.
Craig Topper [Tue, 7 Feb 2017 04:10:57 +0000 (04:10 +0000)]
[X86] Change the Defs list for VZEROALL/VZEROUPPER back to not including YMM16-31.

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

7 years ago[AVX-512] Put the integer stack folding tests in alphabetical order.
Craig Topper [Tue, 7 Feb 2017 04:10:54 +0000 (04:10 +0000)]
[AVX-512] Put the integer stack folding tests in alphabetical order.

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

7 years ago[PM] Defend against getting slightly wrong template arguments passed
Chandler Carruth [Tue, 7 Feb 2017 03:34:08 +0000 (03:34 +0000)]
[PM] Defend against getting slightly wrong template arguments passed
into CRTP base classes.

This can sometimes happen and not cause an immediate failure when the
derived class is, itself, a template. You can end up essentially calling
methods on the wrong derived type but a type where many things will
appear to "work".

To fail fast and with a clear error message we can use a static_assert,
but we have to stash that static_assert inside a method body or nested
type that won't need to be completed while building the base class. I've
tried to pick a reasonably small number of places that seemed like they
would definitely get triggered on use.

This is the last of the patch series defending against this that I have
planned, so far no bugs other than the original were found.

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

7 years agoLowerTypeTests: Simplify. NFC.
Peter Collingbourne [Tue, 7 Feb 2017 03:20:58 +0000 (03:20 +0000)]
LowerTypeTests: Simplify. NFC.

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

7 years ago[IR/Analysis] Defend against getting slightly wrong template arguments
Chandler Carruth [Tue, 7 Feb 2017 03:17:30 +0000 (03:17 +0000)]
[IR/Analysis] Defend against getting slightly wrong template arguments
passed into CRTP base classes.

This can sometimes happen and not cause an immediate failure when the
derived class is, itself, a template. You can end up essentially calling
methods on the wrong derived type but a type where many things will
appear to "work".

To fail fast and with a clear error message we can use a static_assert,
but we have to stash that static_assert inside a method body or nested
type that won't need to be completed while building the base class. I've
tried to pick a reasonably small number of places that seemed like
reliably places for this to be instantiated.

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

7 years ago[ADT] Defend against getting slightly wrong template arguments passed
Chandler Carruth [Tue, 7 Feb 2017 03:15:12 +0000 (03:15 +0000)]
[ADT] Defend against getting slightly wrong template arguments passed
into CRTP base classes.

This can sometimes happen and not cause an immediate failure when the
derived class is, itself, a template. You can end up essentially calling
methods on the wrong derived type but a type where many things will
appear to "work".

To fail fast and with a clear error message we can use a static_assert,
but we have to stash that static_assert inside a method body or nested
type that won't need to be completed while building the base class. I've
tried to pick a reasonably small number of places that seemed like
reliably places for this to be instantiated.

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

7 years ago[Hexagon] Address ASAN and UBSAN failures after r294226
Krzysztof Parzyszek [Tue, 7 Feb 2017 02:31:53 +0000 (02:31 +0000)]
[Hexagon] Address ASAN and UBSAN failures after r294226

Reinstate r294256 with a fix.

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