OSDN Git Service

android-x86/external-llvm.git
7 years ago[X86][SSE] Use getTargetConstantBitsFromNode to find zeroable shuffle elements.
Simon Pilgrim [Sun, 19 Feb 2017 19:40:31 +0000 (19:40 +0000)]
[X86][SSE] Use getTargetConstantBitsFromNode to find zeroable shuffle elements.

Replaces existing approach that could only search BUILD_VECTOR nodes.

Requires getTargetConstantBitsFromNode to discriminate cases with all/partial UNDEF bits in each element - this should also be useful when we get around to supporting getTargetShuffleMaskIndices with UNDEF elements.

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

7 years ago[AVX-512] Add patterns to recognize masked vpternlog when the passthrough operand...
Craig Topper [Sun, 19 Feb 2017 19:36:58 +0000 (19:36 +0000)]
[AVX-512] Add patterns to recognize masked vpternlog when the passthrough operand is not operand 0.

This uses a SDNodeXForm to swizzle the appropriate immediate bits to allow this to be matched.

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

7 years ago[AVX-512] Add test cases that show failure to select masked VPTERNLOG when a select...
Craig Topper [Sun, 19 Feb 2017 19:36:54 +0000 (19:36 +0000)]
[AVX-512] Add test cases that show failure to select masked VPTERNLOG when a select is used to force the passthru operand to be not operand 0.

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

7 years ago[X86][SSE] Enable initial support for domain crossing at high shuffle combine depths.
Simon Pilgrim [Sun, 19 Feb 2017 17:19:38 +0000 (17:19 +0000)]
[X86][SSE] Enable initial support for domain crossing at high shuffle combine depths.

As discussed on D27692, this permits another domain to be used to combine a shuffle at high depths.

We currently set the required depth at 4 or more combined shuffles, this is probably too high for most targets but is a good starting point and already helps avoid a number of costly variable shuffles.

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

7 years agoRemove redundant call to GluedNodes.back() [NFC]
Artyom Skrobov [Sun, 19 Feb 2017 16:56:18 +0000 (16:56 +0000)]
Remove redundant call to GluedNodes.back() [NFC]

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

7 years ago[X86][SSE] Generalize INSERTPS/SHUFPS/SHUFPD combines across domains.
Simon Pilgrim [Sun, 19 Feb 2017 15:15:40 +0000 (15:15 +0000)]
[X86][SSE] Generalize INSERTPS/SHUFPS/SHUFPD combines across domains.

Relax the INSERTPS/SHUFPS/SHUFPD combines to support integer inputs if permitted.

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

7 years ago[llvm-cov] Respect Windows line endings when parsing demangled symbols.
Igor Kudrin [Sun, 19 Feb 2017 14:26:52 +0000 (14:26 +0000)]
[llvm-cov] Respect Windows line endings when parsing demangled symbols.

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

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

7 years ago[X86][SSE] Add domain crossing support for target shuffle combines.
Simon Pilgrim [Sun, 19 Feb 2017 14:12:25 +0000 (14:12 +0000)]
[X86][SSE] Add domain crossing support for target shuffle combines.

Add the infrastructure to flag whether float and/or int domains are permitable.

A future patch will enable domain crossing based off shuffle depth and the value types of the source vectors.

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

7 years agoRemoved extra ';'
Simon Pilgrim [Sun, 19 Feb 2017 12:32:44 +0000 (12:32 +0000)]
Removed extra ';'

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

7 years ago[AVX-512] Add broadcast VPTERNLOG instructions to special case commuting switch.
Craig Topper [Sun, 19 Feb 2017 08:03:26 +0000 (08:03 +0000)]
[AVX-512] Add broadcast VPTERNLOG instructions to special case commuting switch.

The instructions are marked commutable, but without special handling we don't get the immediate correct.

While here also remove the masked memory forms that aren't commutable.

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

7 years ago[AVX-512] Add patterns to show missed opportunities for folding vpternlog with broadc...
Craig Topper [Sun, 19 Feb 2017 08:03:23 +0000 (08:03 +0000)]
[AVX-512] Add patterns to show missed opportunities for folding vpternlog with broadcast loads. Also demonstrates a bug in the commuting of broadcast vpternlog instructions when we are able to select them.

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

7 years agoUntabify.
NAKAMURA Takumi [Sun, 19 Feb 2017 06:51:46 +0000 (06:51 +0000)]
Untabify.

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

7 years agoRe-add debugcounter.ll with Requires: Asserts so that it only triggers when asserts...
Daniel Berlin [Sun, 19 Feb 2017 06:45:02 +0000 (06:45 +0000)]
Re-add debugcounter.ll with Requires: Asserts so that it only triggers when asserts are on

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

7 years agoWhich, in turn, causes build bots to fail that have it unexpectedly passing. So remov...
Daniel Berlin [Sun, 19 Feb 2017 04:56:07 +0000 (04:56 +0000)]
Which, in turn, causes build bots to fail that have it unexpectedly passing. So remove debugcounter.ll for now

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

7 years agoXFAIL this test until we figure out what to do here, since it will fail if NDEBUG...
Daniel Berlin [Sun, 19 Feb 2017 04:55:02 +0000 (04:55 +0000)]
XFAIL this test until we figure out what to do here, since it will fail if NDEBUG defined

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

7 years agoAdd two files lost in rebase, causing build break
Daniel Berlin [Sun, 19 Feb 2017 04:29:50 +0000 (04:29 +0000)]
Add two files lost in rebase, causing build break

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

7 years agoAdd a DebugCounter for PredicateInfo renaming, and an associated test
Daniel Berlin [Sun, 19 Feb 2017 04:29:01 +0000 (04:29 +0000)]
Add a DebugCounter for PredicateInfo renaming, and an associated test

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

7 years agoAdd initial support for debug counting
Daniel Berlin [Sun, 19 Feb 2017 04:28:56 +0000 (04:28 +0000)]
Add initial support for debug counting

Summary:

We have support for bisection, and bugpoint can reduce testcases
often to a single pass. But that doesn't help reduce it to a single
transform by a single pass.  Which debug counting lets us do.

Debug counting lets you instrument a pass so that it only executes a
certain thing (rwhatever you want) after skipping it a certain time of
times, and then only does a certain number of executions before saying
"skip" again.

To make it concrete, for predicateinfo, if i instrument use renaming,
i can make it so it skips renaming the first N uses, renames the next
N, and then skips the rest.

This lets you narrow down a miscompilation to, often, a single
transformation, and then also debug it (by using the same command line
parameters).

Reviewers: chandlerc, davide, mehdi_amini

Subscribers: mgorny, llvm-commits

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

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

7 years agollvm/test/CodeGen/AMDGPU/r600.alu-limits.ll should require +Asserts. This would run...
NAKAMURA Takumi [Sun, 19 Feb 2017 02:31:06 +0000 (02:31 +0000)]
llvm/test/CodeGen/AMDGPU/r600.alu-limits.ll should require +Asserts. This would run into infinite loop anyways with -Asserts.

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

7 years ago[X86] Remove patterns for MOVSD with v4i32 types. We don't appear to really need...
Craig Topper [Sun, 19 Feb 2017 02:08:48 +0000 (02:08 +0000)]
[X86] Remove patterns for MOVSD with v4i32 types. We don't appear to really need them and if we do we should just use a bitcast to a 64-bit element type.

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

7 years ago[X86] Tighten up some of the SDNode type constraints.
Craig Topper [Sun, 19 Feb 2017 01:54:47 +0000 (01:54 +0000)]
[X86] Tighten up some of the SDNode type constraints.

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

7 years agoFix unused variable warning when assertions are disabled.
Simon Pilgrim [Sun, 19 Feb 2017 00:33:37 +0000 (00:33 +0000)]
Fix unused variable warning when assertions are disabled.

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

7 years ago[X86] Fix enumeral/non-enumeral conditional expression warning.
Simon Pilgrim [Sun, 19 Feb 2017 00:04:30 +0000 (00:04 +0000)]
[X86] Fix enumeral/non-enumeral conditional expression warning.

gcc only allows you to mix enums / ints if they have the same signedness.

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

7 years agoFix 'variable set but not used' warning when assertions are disabled.
Simon Pilgrim [Sun, 19 Feb 2017 00:03:46 +0000 (00:03 +0000)]
Fix 'variable set but not used' warning when assertions are disabled.

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

7 years agoNewGVN: Start making use of predicateinfo pass.
Daniel Berlin [Sat, 18 Feb 2017 23:06:50 +0000 (23:06 +0000)]
NewGVN: Start making use of predicateinfo pass.

Summary: This begins using the predicateinfo pass in NewGVN.

Reviewers: davide

Subscribers: llvm-commits, Prazek

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

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

7 years agoNewGVN: Make ranking prefer undef to constants. Fix direction of
Daniel Berlin [Sat, 18 Feb 2017 23:06:47 +0000 (23:06 +0000)]
NewGVN: Make ranking prefer undef to constants. Fix direction of
shouldSwapOperands to be correct.

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

7 years agoPredicateInfo: Clean up predicate info a little, using insertion
Daniel Berlin [Sat, 18 Feb 2017 23:06:38 +0000 (23:06 +0000)]
PredicateInfo: Clean up predicate info a little, using insertion
helpers, and fixing support for the renaming the comparison.

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

7 years agoFix signed/unsigned comparison warning.
Simon Pilgrim [Sat, 18 Feb 2017 22:56:17 +0000 (22:56 +0000)]
Fix signed/unsigned comparison warning.

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

7 years ago[X86][XOP] Reduce the size of a multiclass by moving more stuff to parameters instead...
Craig Topper [Sat, 18 Feb 2017 22:53:43 +0000 (22:53 +0000)]
[X86][XOP] Reduce the size of a multiclass by moving more stuff to parameters instead of doing 128-bit and 256-bit simultaneously.

This requires some instructions to be renamed to move the Y earlier in the instruction name. The new names are more consistent with other instructions.

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

7 years ago[TableGen] Make sure EnforceSameSize populates the type sets if necessary.
Craig Topper [Sat, 18 Feb 2017 22:53:38 +0000 (22:53 +0000)]
[TableGen] Make sure EnforceSameSize populates the type sets if necessary.

This was found by another commit I'm working on.

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

7 years ago[AArch64] Fix enumeral/non-enumeral conditional expression warning.
Simon Pilgrim [Sat, 18 Feb 2017 22:50:28 +0000 (22:50 +0000)]
[AArch64] Fix enumeral/non-enumeral conditional expression warning.

gcc only allows you to mix enums / ints if they have the same signedness.

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

7 years ago[X86] Fix enumeral/non-enumeral comparison warning.
Simon Pilgrim [Sat, 18 Feb 2017 22:40:58 +0000 (22:40 +0000)]
[X86] Fix enumeral/non-enumeral comparison warning.

gcc only allows you to mix enums / ints if they have the same signedness.

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

7 years ago[X86][SSE] Avoid repeated calls to SDValue::getValueType.
Simon Pilgrim [Sat, 18 Feb 2017 22:25:27 +0000 (22:25 +0000)]
[X86][SSE] Avoid repeated calls to SDValue::getValueType.

Added assertion to check input type of X86ISD::VZEXT during target known bits calculation.

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

7 years ago[InstCombine] add nsw/nuw X, signbit --> or X, signbit
Sanjay Patel [Sat, 18 Feb 2017 22:20:09 +0000 (22:20 +0000)]
[InstCombine] add nsw/nuw X, signbit --> or X, signbit

Changing to 'or' (rather than 'xor' when no wrapping flags are set)
allows icmp simplifies to happen as expected.

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

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

7 years ago[InstSimplify] add nsw/nuw (xor X, signbit), signbit --> X
Sanjay Patel [Sat, 18 Feb 2017 21:59:09 +0000 (21:59 +0000)]
[InstSimplify] add nsw/nuw (xor X, signbit), signbit --> X

The change to InstCombine in:
https://reviews.llvm.org/D29729
...exposes this missing fold in InstSimplify, so adding this
first to avoid a regression.

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

7 years ago[InstSimplify] add tests for add nsw/nuw (xor X, signbit), signbit --> X; NFC
Sanjay Patel [Sat, 18 Feb 2017 21:51:14 +0000 (21:51 +0000)]
[InstSimplify] add tests for add nsw/nuw (xor X, signbit), signbit --> X; NFC

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

7 years agoRecommit "[X86] Remove XOP VPCMOV intrinsics and autoupgrade them to native IR."
Craig Topper [Sat, 18 Feb 2017 21:50:58 +0000 (21:50 +0000)]
Recommit "[X86] Remove XOP VPCMOV intrinsics and autoupgrade them to native IR."

Clang has now been fixed to not use these intrinsics.

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

7 years ago[x86] remove stale comments from tests; NFC
Sanjay Patel [Sat, 18 Feb 2017 21:07:37 +0000 (21:07 +0000)]
[x86] remove stale comments from tests; NFC

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

7 years ago[x86] fold sext (xor Bool, -1) --> sub (zext Bool), 1
Sanjay Patel [Sat, 18 Feb 2017 21:03:28 +0000 (21:03 +0000)]
[x86] fold sext (xor Bool, -1) --> sub (zext Bool), 1

This is the same transform that is current used for:
select Bool, 0, -1

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

7 years ago[MemorySSA] NFC small fixes
Piotr Padlewski [Sat, 18 Feb 2017 20:34:36 +0000 (20:34 +0000)]
[MemorySSA] NFC small fixes

Summary:
2 small fixes extracted from
https://reviews.llvm.org/D29064

Reviewers: kuhar, davide, dberlin, george.burgess.iv

Subscribers: llvm-commits

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

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

7 years agoRevert "[X86] Remove XOP VPCMOV intrinsics and autoupgrade them to native IR."
Craig Topper [Sat, 18 Feb 2017 20:14:20 +0000 (20:14 +0000)]
Revert "[X86] Remove XOP VPCMOV intrinsics and autoupgrade them to native IR."

This reverts r295564. I missed that clang was still using the intrinsics despite our half implemented autoupgrade support.

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

7 years ago[X86] Remove XOP VPCMOV intrinsics and autoupgrade them to native IR.
Craig Topper [Sat, 18 Feb 2017 19:51:25 +0000 (19:51 +0000)]
[X86] Remove XOP VPCMOV intrinsics and autoupgrade them to native IR.

It seems we were already upgrading 128-bit VPCMOV, but the intrinsic was still defined and being used in isel patterns. While I was here I also simplified the tablegen multiclasses.

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

7 years ago[X86][IR] Simplify the XOP vpcmov autoupgrade code. NFC
Craig Topper [Sat, 18 Feb 2017 19:51:19 +0000 (19:51 +0000)]
[X86][IR] Simplify the XOP vpcmov autoupgrade code. NFC

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

7 years ago[X86][IR] Merge together some very similar AutoUpgrade handling. NFC
Craig Topper [Sat, 18 Feb 2017 19:51:14 +0000 (19:51 +0000)]
[X86][IR] Merge together some very similar AutoUpgrade handling. NFC

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

7 years agoAMDGPU: Fix assembler subtarget predicate for gfx9
Matt Arsenault [Sat, 18 Feb 2017 19:12:26 +0000 (19:12 +0000)]
AMDGPU: Fix assembler subtarget predicate for gfx9

This was accepting GFX9 instructions on VI.

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

7 years agoAMDGPU: Fix disassembly of aperture registers
Matt Arsenault [Sat, 18 Feb 2017 18:41:41 +0000 (18:41 +0000)]
AMDGPU: Fix disassembly of aperture registers

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

7 years agoAMDGPU: Merge initial gfx9 support
Matt Arsenault [Sat, 18 Feb 2017 18:29:53 +0000 (18:29 +0000)]
AMDGPU: Merge initial gfx9 support

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

7 years ago[InstCombine] add tests for trunc(insertelement); NFC
Sanjay Patel [Sat, 18 Feb 2017 18:27:04 +0000 (18:27 +0000)]
[InstCombine] add tests for trunc(insertelement); NFC

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

7 years agoRefactor instruction simplification code in visitors. NFC.
Easwaran Raman [Sat, 18 Feb 2017 17:22:52 +0000 (17:22 +0000)]
Refactor instruction simplification code in visitors. NFC.

Several visitors check if operands to the instruction are constants,
either as it is or after looking up SimplifiedValues, check if the
result is a constant and update the SimplifiedValues map. This
refactoring splits it into a common function that does the checking of
whether the operands are constants and updating of the SimplifiedValues
table, and an instruction specific part that is implemented by each
instruction visitor as a lambda and passed to the common function.

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

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

7 years ago[InstCombine] update trunc(shuffle) tests to reflect IR reality; NFC
Sanjay Patel [Sat, 18 Feb 2017 15:24:31 +0000 (15:24 +0000)]
[InstCombine] update trunc(shuffle) tests to reflect IR reality; NFC

We're ok shrinking splats, but not shuffles in general.

See https://reviews.llvm.org/D30123 for discussion.

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

7 years agoopt-viewer: Fix syntax highlighting
Brian Cain [Sat, 18 Feb 2017 15:13:58 +0000 (15:13 +0000)]
opt-viewer: Fix syntax highlighting

Syntax highlighting has been done line-at-a-time. Done this way, the lexer
resets the context at each line, distorting the formatting.

This change will render the whole file at once and feed the highlighted text
line-at-a-time to be wrapped by the SourceFileRenderer.

Leading/trailing newlines were being ignored by Pygments but since each line
was rendered in its own row, it didn't matter. This bug was masked by the
line-at-a-time algorithm. So now we need to add "stripnl=False" to the
CppLexer to change its behavior to match the expectation.

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

7 years ago[AVX-512] Remove 128/256-bit masked fp max/min intrinsics. Upgrade them to legacy...
Craig Topper [Sat, 18 Feb 2017 07:07:50 +0000 (07:07 +0000)]
[AVX-512] Remove 128/256-bit masked fp max/min intrinsics. Upgrade them to legacy unmasked intrinsics and select instructions.

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

7 years agoAdd default OptLevel value for createSimpleLoopUnrollPass to fix the build break...
Dehao Chen [Sat, 18 Feb 2017 06:42:16 +0000 (06:42 +0000)]
Add default OptLevel value for createSimpleLoopUnrollPass to fix the build break introduced by r295538. (NFC)

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

7 years agoAMDGPU/R600: Assert on infinite loop in EmitClauseMarkers
Jan Vesely [Sat, 18 Feb 2017 04:24:10 +0000 (04:24 +0000)]
AMDGPU/R600: Assert on infinite loop in EmitClauseMarkers

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

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

7 years agoIncreases full-unroll threshold.
Dehao Chen [Sat, 18 Feb 2017 03:46:51 +0000 (03:46 +0000)]
Increases full-unroll threshold.

Summary:
The default threshold for fully unroll is too conservative. This patch doubles the full-unroll threshold

This change will affect the following speccpu2006 benchmarks (performance numbers were collected from Intel Sandybridge):

Performance:

403 0.11%
433 0.51%
445 0.48%
447 3.50%
453 1.49%
464 0.75%

Code size:

403 0.56%
433 0.96%
445 2.16%
447 2.96%
453 0.94%
464 8.02%

The compiler time overhead is similar with code size.

Reviewers: davidxl, mkuper, mzolotukhin, hfinkel, chandlerc

Reviewed By: hfinkel, chandlerc

Subscribers: mehdi_amini, zzheng, efriedma, haicheng, hfinkel, llvm-commits

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

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

7 years ago[IR/Verifier] Don't visit DISubprograms more than needed.
Davide Italiano [Sat, 18 Feb 2017 03:02:44 +0000 (03:02 +0000)]
[IR/Verifier] Don't visit DISubprograms more than needed.

Before this patch we happened to visit twice, one when scanning
MDNodes and the other one while visiting the function. Remove
the explicit call to visitDISubprogram there, so we don't emit
the same error twice in case the verifier fail and we save some
time when running it.
Thanks to Justin Bogner for the report and Adrian for the quick
review!

PR: 31995

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

7 years ago[AVR] Set UseIntegratedAssembler
Dylan McKay [Sat, 18 Feb 2017 02:26:11 +0000 (02:26 +0000)]
[AVR] Set UseIntegratedAssembler

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

7 years agoOptDiag: Allow constructing DiagnosticLocation from DISubprograms
Justin Bogner [Sat, 18 Feb 2017 02:00:27 +0000 (02:00 +0000)]
OptDiag: Allow constructing DiagnosticLocation from DISubprograms

This avoids creating a DILocation just to represent a line number,
since creating Metadata is expensive. Creating a DiagnosticLocation
directly is much cheaper.

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

7 years agoRemove the is_trivially_copyable check entirely.
Zachary Turner [Sat, 18 Feb 2017 01:51:00 +0000 (01:51 +0000)]
Remove the is_trivially_copyable check entirely.

This is still breaking builds because some compilers think
this type is not trivially copyable even when it should be.

Reverting this static_assert until I have time to investigate.

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

7 years agoUse llvm workaround for missing is_trivially_copyable.
Zachary Turner [Sat, 18 Feb 2017 01:46:01 +0000 (01:46 +0000)]
Use llvm workaround for missing is_trivially_copyable.

some versions of GCC don't have this, so LLVM provides a
workaround.

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

7 years agoDon't assume little endian in StreamReader / StreamWriter.
Zachary Turner [Sat, 18 Feb 2017 01:35:33 +0000 (01:35 +0000)]
Don't assume little endian in StreamReader / StreamWriter.

In an effort to generalize this so it can be used by more than
just PDB code, we shouldn't assume little endian.

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

7 years agomachine-region-info.mir: Slightly simplify test, -mtriple
Matthias Braun [Sat, 18 Feb 2017 00:48:43 +0000 (00:48 +0000)]
machine-region-info.mir: Slightly simplify test, -mtriple

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

7 years agoOptDiag: Decouple backend diagnostics from debug info metadata
Justin Bogner [Sat, 18 Feb 2017 00:42:23 +0000 (00:42 +0000)]
OptDiag: Decouple backend diagnostics from debug info metadata

This creates and uses a DiagnosticLocation type rather than using
DebugLoc for this purpose in the backend diagnostics. This is NFC for
now, but will allow us to create locations for diagnostics without
having to create new metadata nodes when we don't have a DILocation.

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

7 years agoMachineRegionInfo: Fix pass initialization
Matthias Braun [Sat, 18 Feb 2017 00:41:16 +0000 (00:41 +0000)]
MachineRegionInfo: Fix pass initialization

- Adapt MachineBasicBlock::getName() to have the same behavior as the IR
  BasicBlock (Value::getName()).
- Add it to lib/CodeGen/CodeGen.cpp::initializeCodeGen so that it is linked in
  the CodeGen library.
- MachineRegionInfoPass's name conflicts with RegionInfoPass's name ("region").
- MachineRegionInfo should depend on MachineDominatorTree,
  MachinePostDominatorTree and MachineDominanceFrontier instead of their
  respective IR versions.
- Since there were no tests for this, add a X86 MIR test.

Patch by Francis Visoiu Mistrih<fvisoiumistrih@apple.com>

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

7 years agoVerifier: Disallow a line number without a file in DISubprogram
Justin Bogner [Fri, 17 Feb 2017 23:57:42 +0000 (23:57 +0000)]
Verifier: Disallow a line number without a file in DISubprogram

A line number doesn't make much sense if you don't say where it's
from. Add a verifier check for this and update some tests that had
bogus debug info.

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

7 years ago[InstCombine] add tests for trunc(shuffle X, C, M); NFC
Sanjay Patel [Fri, 17 Feb 2017 23:16:54 +0000 (23:16 +0000)]
[InstCombine] add tests for trunc(shuffle X, C, M); NFC

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

7 years agoAArch64LoadStoreOptimizer: Correctly clear kill flags
Matthias Braun [Fri, 17 Feb 2017 23:15:03 +0000 (23:15 +0000)]
AArch64LoadStoreOptimizer: Correctly clear kill flags

When promoting the Load of a Store-Load pair to a COPY all kill flags
between the store and the load need to be cleared.

rdar://30402435

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

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

7 years ago[X86] Add MOVBE targets to load combine tests
Simon Pilgrim [Fri, 17 Feb 2017 23:00:21 +0000 (23:00 +0000)]
[X86] Add MOVBE targets to load combine tests

Test folded endian swap tests with MOVBE instructions.

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

7 years ago[PPC] Give unaligned memory access lower cost on processor that supports it
Guozhi Wei [Fri, 17 Feb 2017 22:29:39 +0000 (22:29 +0000)]
[PPC] Give unaligned memory access lower cost on processor that supports it

Newer ppc supports unaligned memory access, it reduces the cost of unaligned memory access significantly. This patch handles this case in PPCTTIImpl::getMemoryOpCost.

This patch fixes pr31492.

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

This is resubmit of r292680, which was reverted by r293092. The internal application failures were actually caused by a source code bug.

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

7 years ago[CodeGen] Revert changes in LowLevelType to pre-r295499 to fix broken buildbots.
Eugene Zelenko [Fri, 17 Feb 2017 22:23:34 +0000 (22:23 +0000)]
[CodeGen] Revert changes in LowLevelType to pre-r295499 to fix broken buildbots.

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

7 years ago[Hexagon] Start using regmasks on calls
Krzysztof Parzyszek [Fri, 17 Feb 2017 22:14:51 +0000 (22:14 +0000)]
[Hexagon] Start using regmasks on calls

Reapply r295371 with a fix for the Windows bot failures.

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

7 years ago[NewGVN] isOnlyReachableViaThisEdge() is dead now. NFCI.
Davide Italiano [Fri, 17 Feb 2017 22:12:30 +0000 (22:12 +0000)]
[NewGVN] isOnlyReachableViaThisEdge() is dead now. NFCI.

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

7 years ago[X86] Simplify by pulling out valuetype. NFCI.
Simon Pilgrim [Fri, 17 Feb 2017 22:10:10 +0000 (22:10 +0000)]
[X86] Simplify by pulling out valuetype. NFCI.

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

7 years ago[CodeGen] Attempt to fix buildbots broken in r295499.
Eugene Zelenko [Fri, 17 Feb 2017 22:07:26 +0000 (22:07 +0000)]
[CodeGen] Attempt to fix buildbots broken in r295499.

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

7 years ago[NewGVN] createVariableOrConstant is not required anymore. NFCI.
Davide Italiano [Fri, 17 Feb 2017 21:55:47 +0000 (21:55 +0000)]
[NewGVN] createVariableOrConstant is not required anymore. NFCI.

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

7 years ago[CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Fri, 17 Feb 2017 21:43:25 +0000 (21:43 +0000)]
[CodeGen] 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@295499 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Add subborrow stack folding tests
Simon Pilgrim [Fri, 17 Feb 2017 21:16:24 +0000 (21:16 +0000)]
[X86] Add subborrow stack folding tests

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

7 years ago[x86] add tests for sext (not bool); NFC
Sanjay Patel [Fri, 17 Feb 2017 21:10:40 +0000 (21:10 +0000)]
[x86] add tests for sext (not bool); NFC

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

7 years ago[LAA] Remove unused code (NFC)
Matthew Simpson [Fri, 17 Feb 2017 20:46:52 +0000 (20:46 +0000)]
[LAA] Remove unused code (NFC)

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

7 years ago[X86][SSE] Add (V)MOVD folding pattern with zextloadi64i32 load node.
Simon Pilgrim [Fri, 17 Feb 2017 20:43:32 +0000 (20:43 +0000)]
[X86][SSE] Add (V)MOVD folding pattern with zextloadi64i32 load node.

Fixes PRPR31309

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

7 years agoFix windows bots by locking down the target triple on this testcase.
Adrian Prantl [Fri, 17 Feb 2017 20:02:26 +0000 (20:02 +0000)]
Fix windows bots by locking down the target triple on this testcase.

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

7 years agoAMDGPU: Fix crashes on invalid icmp/fcmp intrinsics
Matt Arsenault [Fri, 17 Feb 2017 19:49:10 +0000 (19:49 +0000)]
AMDGPU: Fix crashes on invalid icmp/fcmp intrinsics

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

7 years agoWholeProgramDevirt: For VCP use a 32-bit ConstantInt for the byte offset.
Peter Collingbourne [Fri, 17 Feb 2017 19:43:45 +0000 (19:43 +0000)]
WholeProgramDevirt: For VCP use a 32-bit ConstantInt for the byte offset.

A future change will cause this byte offset to be inttoptr'd and then exported
via an absolute symbol. On the importing end we will expect the symbol to be
in range [0,2^32) so that it will fit into a 32-bit relocation. The problem
is that on 64-bit architectures if the offset is negative it will not be in
the correct range once we inttoptr it.

This change causes us to use a 32-bit integer so that it can be inttoptr'd
(which zero extends) into the correct range.

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

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

7 years agoDebug Info: Sort frame index expressions before emitting them.
Adrian Prantl [Fri, 17 Feb 2017 19:42:32 +0000 (19:42 +0000)]
Debug Info: Sort frame index expressions before emitting them.
This fixes PR31381, which caused an assertion and/or invalid debug info.

This affects debug variables that have multiple fragments in the MMI
side (i.e.: in the stack frame) table.
rdar://problem/30571676

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

7 years ago[CMake] Support externalizing debug info on non-Darwin platforms
Petr Hosek [Fri, 17 Feb 2017 19:29:12 +0000 (19:29 +0000)]
[CMake] Support externalizing debug info on non-Darwin platforms

On other platorms, we use objcopy to export the debug info.

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

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

7 years ago[X86][SHA] Add SHA stack folding tests
Simon Pilgrim [Fri, 17 Feb 2017 19:24:55 +0000 (19:24 +0000)]
[X86][SHA] Add SHA stack folding tests

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

7 years agoIn Thumb1 mode, the custom lowering for ARMISD::CMPZ could never emit tADDi3
Artyom Skrobov [Fri, 17 Feb 2017 18:59:16 +0000 (18:59 +0000)]
In Thumb1 mode, the custom lowering for ARMISD::CMPZ could never emit tADDi3

Reviewers: jmolloy, t.p.northover

Reviewed By: t.p.northover

Subscribers: t.p.northover, aemerson, rengolin, llvm-commits

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

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

7 years ago[X86][TBM] Add TBM stack folding tests
Simon Pilgrim [Fri, 17 Feb 2017 18:51:53 +0000 (18:51 +0000)]
[X86][TBM] Add TBM stack folding tests

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

7 years agoGlobalISel: verify that generic loads & stores have a mem operand.
Tim Northover [Fri, 17 Feb 2017 18:50:15 +0000 (18:50 +0000)]
GlobalISel: verify that generic loads & stores have a mem operand.

The mem operand is used by GlobalISel to convey atomic constraints so dropping
it is invalid.

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

7 years ago[AArch64] Add Cavium ThunderX support
Joel Jones [Fri, 17 Feb 2017 18:34:24 +0000 (18:34 +0000)]
[AArch64] Add Cavium ThunderX support

This set of patches adds support for Cavium ThunderX ARM64 processors:

  * ThunderX
  * ThunderX T81
  * ThunderX T83
  * ThunderX T88

Patch by Stefan Teleman
Differential Revision: https://reviews.llvm.org/D28891

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

7 years agoWholeProgramDevirt: Examine the function body when deciding whether functions are...
Peter Collingbourne [Fri, 17 Feb 2017 18:17:04 +0000 (18:17 +0000)]
WholeProgramDevirt: Examine the function body when deciding whether functions are readnone.

The goal is to get an analysis result even for de-refineable functions.

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

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

7 years ago[X86][BMI] Add BMI2 stack folding tests
Simon Pilgrim [Fri, 17 Feb 2017 18:00:43 +0000 (18:00 +0000)]
[X86][BMI] Add BMI2 stack folding tests

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

7 years agoopt: Rename -default-data-layout flag to -data-layout and make it always override...
Peter Collingbourne [Fri, 17 Feb 2017 17:36:52 +0000 (17:36 +0000)]
opt: Rename -default-data-layout flag to -data-layout and make it always override the layout.

There isn't much point in a flag that only works if the data layout is empty.

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

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

7 years agoOptDiag: Rename DiagnosticInfoWithDebugLoc to WithLocation. NFC
Justin Bogner [Fri, 17 Feb 2017 17:34:37 +0000 (17:34 +0000)]
OptDiag: Rename DiagnosticInfoWithDebugLoc to WithLocation. NFC

This generalizes the name in preparation for decoupling the concept
from DebugLoc.

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

7 years agoMC/COFF: Do not emit forward associative section referenceds.
Rui Ueyama [Fri, 17 Feb 2017 17:32:54 +0000 (17:32 +0000)]
MC/COFF: Do not emit forward associative section referenceds.

MSVC link.exe cannot handle associative sections that refer later
sections in the section header. Technically, such COFF object doesn't
violate the Microsoft COFF spec, as the spec doesn't say anything
about that, but still we should avoid doing that to make it compatible
with MS tools.

This patch assigns smaller section numbers to non-associative sections
and larger numbers to associative sections. This should resolve the
compatibility issue.

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

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

7 years ago[DAGCombiner] split i1 select-of-constants from non-i1 case; NFCI
Sanjay Patel [Fri, 17 Feb 2017 17:13:27 +0000 (17:13 +0000)]
[DAGCombiner] split i1 select-of-constants from non-i1 case; NFCI

I can't find any tests of the non-i1 code path, so it may be unnecessary at this point.

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

7 years ago[X86][BMI] Add BMI stack folding tests
Simon Pilgrim [Fri, 17 Feb 2017 17:11:00 +0000 (17:11 +0000)]
[X86][BMI] Add BMI stack folding tests

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

7 years ago[PowerPC] add tests for select-of-constants; NFC
Sanjay Patel [Fri, 17 Feb 2017 16:43:43 +0000 (16:43 +0000)]
[PowerPC] add tests for select-of-constants; NFC

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

7 years ago[ARM] add tests for select-of-constants; NFC
Sanjay Patel [Fri, 17 Feb 2017 16:34:13 +0000 (16:34 +0000)]
[ARM] add tests for select-of-constants; NFC

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

7 years ago[LV] Remove constant restriction for vector phi creation
Matthew Simpson [Fri, 17 Feb 2017 16:09:07 +0000 (16:09 +0000)]
[LV] Remove constant restriction for vector phi creation

We previously only created a vector phi node for an induction variable if its
step had a constant integer type. However, the step actually only needs to be
loop-invariant. We only handle inductions having loop-invariant steps, so this
patch should enable vector phi node creation for all integer induction
variables that will be vectorized.

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

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