OSDN Git Service
Alexander Shaposhnikov [Tue, 4 Jul 2017 06:16:53 +0000 (06:16 +0000)]
[tablegen] Avoid creating a temporary vector in getInstructionCase
Record::getValues returns ArrayRef which has a cast operator
to std::vector, as a result a temporary vector is created
if the type of the variable is const std::vector&
that is suboptimal in this case.
Differential revision: https://reviews.llvm.org/D34969
Test plan: make check-all
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307063
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 4 Jul 2017 05:46:11 +0000 (05:46 +0000)]
[X86] Add comment string for broadcast loads from the constant pool.
Summary:
When broadcasting from the constant pool its useful to print out the final vector similar to what we do for normal moves from the constant pool.
I changed only a couple tests that were broadcast focused. One of them had been previously hand tweaked after running the script so that it could check the constant pool declaration. But I think this patch makes that unnecessary now since we can check the comment instead.
Reviewers: spatel, RKSimon, zvi
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34923
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307062
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Shaposhnikov [Tue, 4 Jul 2017 05:37:37 +0000 (05:37 +0000)]
[llvm] Revert "[tablegen] Avoid creating a temporary vector in getInstructionCase"
Revert rL307059 because of the incorrect commit message & patch,
will recommit later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307061
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 4 Jul 2017 05:33:19 +0000 (05:33 +0000)]
[X86] Add RDRAND feature to GLM CPU
Summary: I believe this should be supported on GLM since RDSEED is.
Reviewers: m_zuckerman, zvi, RKSimon
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34828
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307060
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Shaposhnikov [Tue, 4 Jul 2017 05:11:30 +0000 (05:11 +0000)]
[tablegen] Avoid creating a temporary vector in getInstructionCase
Record::getValues returns ArrayRef which has a cast operator
to std::vector, as a result a temporary vector is created
if the type of the variable is const std::vector&
that was suboptimal in this case.
Differential revision: https://reviews.llvm.org/D34969
Test plan: make check-all
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307059
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 4 Jul 2017 04:42:30 +0000 (04:42 +0000)]
[Orc] Remove the memory manager argument to addModule, and de-templatize the
symbol resolver argument.
De-templatizing the symbol resolver is part of the ongoing simplification of
ORC layer API.
Removing the memory management argument (and delegating construction of memory
managers for RTDyldObjectLinkingLayer to a functor passed in to the constructor)
allows us to build JITs whose base object layers need not be compatible with
RTDyldObjectLinkingLayer's memory mangement scheme. For example, a 'remote
object layer' that sends fully relocatable objects directly to the remote does
not need a memory management scheme at all (that will be handled by the remote).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307058
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Tue, 4 Jul 2017 04:40:06 +0000 (04:40 +0000)]
[AVR] Fix bug which caused assertion errors for some FRMIDX instructions
Previously, if a basic block ended with a FRMIDX instruction, we would
end up doing something like this.
*std::next(MBB.end())
Which would hit an error:
"Assertion `!NodePtr->isKnownSentinel()' failed."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307057
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Tue, 4 Jul 2017 02:52:43 +0000 (02:52 +0000)]
[AVR] Add a missing clobber declaration to LPMW
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307056
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 4 Jul 2017 02:20:17 +0000 (02:20 +0000)]
[DAG] Fixed predicate for determining when two frame indices
addresses are comparable. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307055
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 4 Jul 2017 02:14:18 +0000 (02:14 +0000)]
Revert r307026, "[AMDGPU] Switch scalarize global loads ON by default"
It broke a testcase.
Failing Tests (1):
LLVM :: CodeGen/AMDGPU/alignbit-pat.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307054
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Yartsev [Tue, 4 Jul 2017 01:08:55 +0000 (01:08 +0000)]
[legalize-types] Clean up softening machinery.
The patch makes SoftenFloatResult/Operand logic just the same as all other legalization routines have: SoftenFloatResult() now fills the SoftenFloats map and SoftenFloatOperand() perform all needed replacements. This prevents softening mashinery from leaving stale entries in SoftenFloats map (that resulted in errors during the legalize type checking) and clarifies softening. The patch replaces https://reviews.llvm.org/D29265.
Differential Revision: https://reviews.llvm.org/D31946
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307053
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 3 Jul 2017 20:58:16 +0000 (20:58 +0000)]
[X86][SSE4A] Add support for combining from EXTRQI/INSERTQI shuffles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307048
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Mon, 3 Jul 2017 18:42:47 +0000 (18:42 +0000)]
MathExtras UnitTest: Assert that isPowerOf2(0) is false. NFC.
Summary:
This is a follow-up on D34077. Elena observed that the
correctness of the code relies on isPowerOf2(0) returning false.
Adding a test to cover this corner-case.
Reviewers: delena, davide, craig.topper
Reviewed By: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34939
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307046
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 3 Jul 2017 16:53:11 +0000 (16:53 +0000)]
[X86][SSE4A] Add SSE4A shuffle tests on pre-SSSE3 hardware
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307042
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 3 Jul 2017 15:55:54 +0000 (15:55 +0000)]
[X86][SSE4A] Test SSE4A shuffle combining on SSE42 capable target as well
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307038
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Mon, 3 Jul 2017 15:47:40 +0000 (15:47 +0000)]
DAGCombine: Combine BUILD_VECTOR to TRUNCATE
Summary:
Add a combine for creating a truncate to replace a build_vector composed of extracts with
indices that form a stride-2^N series.
Example:
v8i32 V = ...
v4i32 build_vector((extract_elt V, 0), (extract_elt V, 2), (extract_elt V, 4), (extract_elt V, 6))
-->
v4i32 truncate (bitcast V to v4i64)
Related discussion in llvm-dev about canonicalizing shuffles to
truncates in LLVM IR:
http://lists.llvm.org/pipermail/llvm-dev/2017-January/108936.html.
Reviewers: spatel, RKSimon, efriedma, igorb, craig.topper, wolfgangp, delena
Reviewed By: delena
Subscribers: guyblank, delena, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D34077
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307036
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Mon, 3 Jul 2017 15:32:00 +0000 (15:32 +0000)]
[LoopInterchange] Add more debug messages to currentLimitations().
Summary: This makes it easier to find out which limitation prevented this pass from doing its work.
Reviewers: karthikthecool, mzolotukhin, efriedma, mcrosier
Reviewed By: mcrosier
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D34940
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307035
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 3 Jul 2017 15:27:19 +0000 (15:27 +0000)]
[x86] auto-generate complete checks for tests; NFC
These all used 'CHECK-NOT' which isn't necessary if we have complete checks.
There were also over-specifications in the RUN params such as CPU model.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307033
91177308-0d34-0410-b5e6-
96231b3b80d8
Ilya Biryukov [Mon, 3 Jul 2017 15:16:27 +0000 (15:16 +0000)]
Fixed argument parsing in docker scripts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307031
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 3 Jul 2017 15:04:05 +0000 (15:04 +0000)]
[x86] auto-generate complete checks for tests; NFC
These all used 'CHECK-NOT' which isn't necessary if we have complete checks.
There were also several over-specifications in the RUN params such as CPU model or OS requirement
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307028
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 3 Jul 2017 15:01:07 +0000 (15:01 +0000)]
[X86][SSE4A] Add tests showing missed opportunities to combine EXTRQI/INSERTQI shuffles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307027
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Timofeev [Mon, 3 Jul 2017 14:54:11 +0000 (14:54 +0000)]
[AMDGPU] Switch scalarize global loads ON by default
Differential revision: https://reviews.llvm.org/D34407
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307026
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 3 Jul 2017 14:29:45 +0000 (14:29 +0000)]
[x86] auto-generate complete checks for tests; NFC
These all used 'CHECK-NOT' which isn't necessary if we have complete checks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307024
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 3 Jul 2017 14:07:40 +0000 (14:07 +0000)]
[InstCombine] move and improve tests for cmp-intrinsic; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307022
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 3 Jul 2017 12:23:10 +0000 (12:23 +0000)]
Revert "[GVN] Recommit the patch "Add phi-translate support in scalarpre"."
This reverts commit r306313. This breaks selfhost at -O3 and PR33652.
Let me know if you need additional information on reproducing the issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307021
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Mon, 3 Jul 2017 11:06:54 +0000 (11:06 +0000)]
[GlobalISel][X86] fix %ptr(p0) = G_CONSTANT selection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307019
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Mon, 3 Jul 2017 06:32:59 +0000 (06:32 +0000)]
fix trivial typos in comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307004
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:16 +0000 (05:54 +0000)]
[InstCombine] Add a TODO for a probable missing single use check. NFC
Will try to fix it soon, but in case I forget.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307003
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:15 +0000 (05:54 +0000)]
[InstCombine] Support BITWISE_OP( BSWAP(x), CONSTANT ) -> BSWAP( BITWISE_OP(x, BSWAP(CONSTANT) ) ) for splat vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307002
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:14 +0000 (05:54 +0000)]
[InstCombine] Add test cases for BITWISE_OP( BSWAP(x), CONSTANT ) -> BSWAP( BITWISE_OP(x, BSWAP(CONSTANT) ) ) with splat vectors. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307001
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:13 +0000 (05:54 +0000)]
[InstCombine] Remove support for BITWISE_OP(CONSTANT, BSWAP(x)) -> BSWAP(OP(BSWAP(CONSTANT), x)).
Constants were already canonicalized to the right hand side before we got here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307000
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:13 +0000 (05:54 +0000)]
[InstCombine] Support BITWISE_OP(BSWAP(A),BSWAP(B))->BSWAP(BITWISE_OP(A, B)) for vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306999
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:12 +0000 (05:54 +0000)]
[InstCombine] Add test cases showing missed opportunity to fold BITWISE_OP(BSWAP(A),BSWAP(B))->BSWAP(BITWISE_OP(A, B)) for vectors. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306998
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 3 Jul 2017 05:54:11 +0000 (05:54 +0000)]
[InstCombine] Remove an if that should have been guaranteed by the caller. Replace with an assert. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306997
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sun, 2 Jul 2017 23:21:48 +0000 (23:21 +0000)]
AMDGPU: Add operand target flags serialization
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306995
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 19:52:20 +0000 (19:52 +0000)]
[X86][AVX512] Test AVX512VPOPCNTDQ CTPOP with/without AVX512BW
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306991
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 19:32:37 +0000 (19:32 +0000)]
[X86][AVX512VPOPCNTDQ] Improve support for v16i8/v8i16/v16i16/ CTPOP
Zero extend to v16i32/v8i64, use VPOPCNTDQ instructions and truncate back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306990
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 18:51:48 +0000 (18:51 +0000)]
[X86][AVX512] Cleanup tzcnt tests triples and attributes
Avoid use of specific -mcpu
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306989
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 18:35:22 +0000 (18:35 +0000)]
[X86][AVX512] Cleanup popcnt tests triples and attributes
Avoid use of specific -mcpu
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306988
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 2 Jul 2017 17:08:44 +0000 (17:08 +0000)]
[IR] Remove unnecessary operator new from ConstantDataArray and ConstantDataVector. They inherit an identical version from ConstantData. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306987
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 16:31:16 +0000 (16:31 +0000)]
[InstCombine] Use m_BitReverse pattern match helper. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306986
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 2 Jul 2017 16:05:11 +0000 (16:05 +0000)]
[InstCombine] fix crash when folding cmp+bswap vector
We assumed the constant was a scalar when creating the replacement operand.
Also, improve tests for this fold and move the tests for this fold to their own file.
I'll move the related and missing tests to this file as a follow-up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306985
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 2 Jul 2017 15:24:08 +0000 (15:24 +0000)]
[x86] auto-generate complete checks for tests; NFC
These all used 'CHECK-NOT' which isn't necessary if we have complete checks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306984
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 2 Jul 2017 15:16:17 +0000 (15:16 +0000)]
[x86] remove unnecessary RUN for test after auto-generating checks; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306983
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 2 Jul 2017 15:15:18 +0000 (15:15 +0000)]
[x86] update test to use FileCheck and auto-generate checks; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306982
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 2 Jul 2017 14:50:35 +0000 (14:50 +0000)]
[x86] auto-generate complete checks for tests; NFC
These all used 'CHECK-NOT' which isn't necessary if we have complete checks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306981
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 2 Jul 2017 14:34:50 +0000 (14:34 +0000)]
[InstCombine] look through bswap/bitreverse for equality comparisons
I noticed this missed bswap optimization in the CGP memcmp() expansion,
and then I saw that we don't have the fold in InstCombine.
Differential Revision: https://reviews.llvm.org/D34763
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306980
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 2 Jul 2017 14:25:27 +0000 (14:25 +0000)]
llvm/test/Transforms/LoopVectorize/X86/slm-no-vectorize.ll: -debug is available in +Asserts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306979
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 14:16:25 +0000 (14:16 +0000)]
[X86][SSE] Attempt to combine 64-bit and 32-bit shuffles to unary shuffles before bit shifts
We are combining shuffles to bit shifts before unary permutes, which means we can't fold loads plus the destination register is destructive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306978
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 13:19:10 +0000 (13:19 +0000)]
[X86][SSE] Attempt to combine 64-bit and 16-bit shuffles to unary shuffles before bit shifts
We are combining shuffles to bit shifts before unary permutes, which means we can't fold loads plus the destination register is destructive
The 32-bit shuffles are a bit tricky and will be dealt with in a later patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306977
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 12:56:10 +0000 (12:56 +0000)]
[X86][SSE] Add test showing missed opportunity to combine to pshuflw
We are combining shuffles to bit shifts before unary permutes, which means we can't fold loads plus the destination register is destructive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306976
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Sun, 2 Jul 2017 12:44:27 +0000 (12:44 +0000)]
fix trivial typos in documents; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306975
91177308-0d34-0410-b5e6-
96231b3b80d8
Mohammed Agabaria [Sun, 2 Jul 2017 12:16:15 +0000 (12:16 +0000)]
[X86][CM] update add\sub costs of vectors of 64 in X86\SLM arch
this patch updates the cost of addq\subq (add\subtract of vectors of 64bits)
based on the performance numbers of SLM arch.
Differential Revision: https://reviews.llvm.org/D33983
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306974
91177308-0d34-0410-b5e6-
96231b3b80d8
Gadi Haber [Sun, 2 Jul 2017 12:01:33 +0000 (12:01 +0000)]
[X86] Rerun "update_llc_test_checks" tool on CodeGen tests. NFC.
This is NFC after rerunning the "update_llc_test_checks.py" tool on the CodeGen X86 tests in order to submit a patch.
Minor differences due to added "End of Function" lines.
Reviewers: zvi
Differential Revision: https://reviews.llvm.org/D34933
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306973
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 2 Jul 2017 08:58:29 +0000 (08:58 +0000)]
[GlobalISel][X86] Support G_GLOBAL_VALUE operation.
Summary: Support G_GLOBAL_VALUE operation. For now most of the PIC configurations not implemented yet.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D34738
Conflicts:
test/CodeGen/X86/GlobalISel/regbankselect-X86_64.mir
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306972
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 2 Jul 2017 08:15:49 +0000 (08:15 +0000)]
[GlobalISel][X86] Support vector type G_UNMERGE_VALUES selection.
Summary:
Support vector type G_UNMERGE_VALUES selection.
For now G_UNMERGE_VALUES marked as legal for any type, so nothing to do in legalizer.
Reviewers: t.p.northover, qcolombet, zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, guyblank, llvm-commits
Differential Revision: https://reviews.llvm.org/D33665
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306971
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Sun, 2 Jul 2017 03:24:54 +0000 (03:24 +0000)]
fix trivial typos; NFC
suport -> support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306968
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 2 Jul 2017 01:15:51 +0000 (01:15 +0000)]
[InstCombine] Fold (a | b) ^ (~a | ~b) --> ~(a ^ b) and (a & b) ^ (~a & ~b) --> ~(a ^ b)
Summary:
I came across this while thinking about what would happen if one of the operands in this xor pattern was itself a inverted (A & ~B) ^ (~A & B)-> (A^B).
The patterns here assume that the (~a | ~b) will be demorganed to ~(a & b) first. Though I wonder if there's a multiple use case that would prevent the demorgan.
Reviewers: spatel
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34870
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306967
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 2 Jul 2017 00:07:18 +0000 (00:07 +0000)]
[CodeExtractor] Remove unneded and commented out debugging stmts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306966
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:42:16 +0000 (16:42 +0000)]
[X86][RDSEED] Split off i64 intrinsic tests and test i16/i32 on 32-bit target as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306961
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:41:12 +0000 (16:41 +0000)]
[X86][RDRAND] Split off i64 intrinsic tests and test i16/i32 on 32-bit target as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306960
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:34:29 +0000 (16:34 +0000)]
[X86] Removed reference to update_test_checks.py
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306959
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:32:02 +0000 (16:32 +0000)]
[X86][AVX] Remove duplicate autogeneration note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306958
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Sat, 1 Jul 2017 07:12:15 +0000 (07:12 +0000)]
fix trivial typos, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306952
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 1 Jul 2017 06:46:09 +0000 (06:46 +0000)]
[SelectionDAGBuilder] Use EVT::getVectorVT instead of MVT::getVectorVT to prevent a crash if the type isn't a simple VT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306950
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sat, 1 Jul 2017 05:23:13 +0000 (05:23 +0000)]
[AVR] Remove a bunch of now-obselete tests
The fixups in these instructions are now lowered into relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306947
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Sat, 1 Jul 2017 03:59:54 +0000 (03:59 +0000)]
Revert "Revert "Replace trivial use of external rc.exe by writing our own .res file.""
Summary:
This reverts commit
51931072a7c9a52540baf76fc30ef391d2529a2f.
This revert was originally done because the integrations of the new
WindowsResource library into LLD was causing error in chromium, due to
bugs in how resource sections were handled. These bugs were fixed,
meaning that the features may be reintegrated.
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D34922
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306941
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 1 Jul 2017 03:41:53 +0000 (03:41 +0000)]
Remove the default ARMSubtarget from the ARM TargetMachine.
This enables us to ensure better LTO and code generation in the face of module linking.
Remove a report_fatal_error from the TargetMachine and replace it with an assert in ARMSubtarget - and remove the test that depended on the error. The assertion will still fire in the case that we were reporting before, but error reporting needs to be in front end tools if possible for options parsing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306939
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 1 Jul 2017 03:29:33 +0000 (03:29 +0000)]
[Cloner] Re-map simplfied cloned instructions.
This commit pretty much rolls back the logic added in r306495
as in the testcase provided we simplify an `icmp` looking through
a PHI that hasn't been mapped yet.
I think instsimplify shouldn't do threading over select/phis or
just looking through phis in general, but this is what we have
now. Also, add a test to prevent this from happening in case somebody
wants to modify this code again.
Briefly discussed with Kyle Butt (thanks Kyle!).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306938
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:10 +0000 (03:24 +0000)]
Recommit "r306541 - Add zero-length check to memcpy/memset load store loop expansion""
With fix for use-after-free errors. We can't add the new branch and
remove the old one until we are done with the Builder constructed for
the block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306937
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:09 +0000 (03:24 +0000)]
Revert "r306473 - re-commit r306336: Enable vectorizer-maximize-bandwidth by default."
This still breaks PPC tests we have. I'll forward reproduction
instructions to dehao.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306936
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:08 +0000 (03:24 +0000)]
re-commit r306336: Enable vectorizer-maximize-bandwidth by default.
Differential Revision: https://reviews.llvm.org/D33341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306935
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:07 +0000 (03:24 +0000)]
revert r306336 for breaking ppc test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306934
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:06 +0000 (03:24 +0000)]
Enable vectorizer-maximize-bandwidth by default.
Summary:
vectorizer-maximize-bandwidth is generally useful in terms of performance. I've tested the impact of changing this to default on speccpu benchmarks on sandybridge machines. The result shows non-negative impact:
spec/2006/fp/C++/444.namd 26.84 -0.31%
spec/2006/fp/C++/447.dealII 46.19 +0.89%
spec/2006/fp/C++/450.soplex 42.92 -0.44%
spec/2006/fp/C++/453.povray 38.57 -2.25%
spec/2006/fp/C/433.milc 24.54 -0.76%
spec/2006/fp/C/470.lbm 41.08 +0.26%
spec/2006/fp/C/482.sphinx3 47.58 -0.99%
spec/2006/int/C++/471.omnetpp 22.06 +1.87%
spec/2006/int/C++/473.astar 22.65 -0.12%
spec/2006/int/C++/483.xalancbmk 33.69 +4.97%
spec/2006/int/C/400.perlbench 33.43 +1.70%
spec/2006/int/C/401.bzip2 23.02 -0.19%
spec/2006/int/C/403.gcc 32.57 -0.43%
spec/2006/int/C/429.mcf 40.35 +0.27%
spec/2006/int/C/445.gobmk 26.96 +0.06%
spec/2006/int/C/456.hmmer 24.4 +0.19%
spec/2006/int/C/458.sjeng 27.91 -0.08%
spec/2006/int/C/462.libquantum 57.47 -0.20%
spec/2006/int/C/464.h264ref 46.52 +1.35%
geometric mean +0.29%
The regression on 453.povray seems real, but is due to secondary effects as all hot functions are bit-identical with and without the flag.
I started this patch to consult upstream opinions on this. It will be greatly appreciated if the community can help test the performance impact of this change on other architectures so that we can decided if this should be target-dependent.
Reviewers: hfinkel, mkuper, davidxl, chandlerc
Reviewed By: chandlerc
Subscribers: rengolin, sanjoy, javed.absar, bjope, dorit, magabari, RKSimon, llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D33341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306933
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:06 +0000 (03:24 +0000)]
Another test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306932
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:05 +0000 (03:24 +0000)]
Still debugging
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306931
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:05 +0000 (03:24 +0000)]
Still test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306930
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:00 +0000 (03:24 +0000)]
Another test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306929
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 1 Jul 2017 02:55:22 +0000 (02:55 +0000)]
Rewrite ARM execute only support to avoid the use of a command line flag and unqualified ARMSubtarget lookup.
Paired with a clang commit to use the new behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306927
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Sat, 1 Jul 2017 01:35:55 +0000 (01:35 +0000)]
[ObjectYAML] 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@306925
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sat, 1 Jul 2017 01:18:12 +0000 (01:18 +0000)]
[AVR] Update AVRASmBackend from API change in r306906
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306923
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Sat, 1 Jul 2017 00:45:50 +0000 (00:45 +0000)]
[X86] Move GISel accessor initialization from TargetMachine to Subtarget.
NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306921
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Sat, 1 Jul 2017 00:45:45 +0000 (00:45 +0000)]
[ARM] Move GISel accessor initialization from TargetMachine to Subtarget.
NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306920
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Sat, 1 Jul 2017 00:23:01 +0000 (00:23 +0000)]
[Dominators] Reapply r306892, r306893, r306893.
This reverts commit r306907 and reapplies the patches in the title.
The patches used to make one of the
CodeGen/ARM/2011-02-07-AntidepClobber.ll test to fail because of a
missing null check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306919
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 30 Jun 2017 23:49:53 +0000 (23:49 +0000)]
A little wordsmithing of dominator verification comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306916
91177308-0d34-0410-b5e6-
96231b3b80d8
Sameer AbuAsal [Fri, 30 Jun 2017 23:49:07 +0000 (23:49 +0000)]
[RegisterCoalescer] Account for instructions deleted by removePartialredunduncy and in WorkList
Summary:
removePartialRedundency optimization introduces a state in the
RegisterCoalescer where an instruction pointed to in the WorkList
is deleted from the MBB and then removed from the ErasedList.
This patch updates the ErasedList to be used globally by not erasing
erased Instructions from it to solve the problem.
The patch also accounts for the case where an Instruction was previously
deleted and the same memory was reused by BuildMI to create a new instruction.
Reviewers: kparzysz, qcolombet
Reviewed By: qcolombet
Subscribers: MatzeB, qcolombet, llvm-commits
Differential Revision: https://reviews.llvm.org/D34902
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306915
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 30 Jun 2017 23:46:58 +0000 (23:46 +0000)]
Add comments on sibling and parent properties in dominator trees
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306913
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gesiak [Fri, 30 Jun 2017 23:14:53 +0000 (23:14 +0000)]
[ORE] Add diagnostics hotness threshold
Summary:
Add an option to prevent diagnostics that do not meet a minimum hotness
threshold from being output. When generating optimization remarks for
large codebases with a ton of cold code paths, this option can be used
to limit the optimization remark output at a reasonable size. Discussion of
this change can be read here:
http://lists.llvm.org/pipermail/llvm-dev/2017-June/114377.html
Reviewers: anemet, davidxl, hfinkel
Reviewed By: anemet
Subscribers: qcolombet, javed.absar, fhahn, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D34867
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306912
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Fri, 30 Jun 2017 23:06:03 +0000 (23:06 +0000)]
[CodeView, PDB] 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@306911
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 22:56:28 +0000 (22:56 +0000)]
Revert "[Dominators] Teach IDF to use level information"
This reverts commit r306894.
Revert "[Dominators] Add NearestCommonDominator verification"
This reverts commit r306893.
Revert "[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries"
This reverts commit r306892.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306907
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 30 Jun 2017 22:47:27 +0000 (22:47 +0000)]
Rename and adjust processFixupValue.
It was not processing any value. All that it ever did was force
relocations, so name it shouldForceRelocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306906
91177308-0d34-0410-b5e6-
96231b3b80d8
David L. Jones [Fri, 30 Jun 2017 21:58:55 +0000 (21:58 +0000)]
[lit] Factor out listdir logic shared by different test formats.
Summary:
The lit test formats use largely the same logic for discovering tests. There are
some superficial differences in the logic, which seem reasonable enough to
handle in a single routine.
At a high level, the common goal is "look for files that end with one of these
suffixes, and skip anything starting with a dot." The balance of the logic
specific to ShTest and GoogleTest collapses quite a bit, so that
getTestsInDirectory is only a couple of lines around a call to the new function.
Reviewers: zturner, MatzeB, modocache
Subscribers: sanjoy, llvm-commits
Differential Revision: https://reviews.llvm.org/D34855
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306895
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 21:51:43 +0000 (21:51 +0000)]
[Dominators] Teach IDF to use level information
Summary: This patch teaches IteratedDominanceFrontier to use the level information stored in DomTreeNodes instead of calculating it manually.
Reviewers: dberlin, sanjoy, davide
Reviewed By: davide
Subscribers: davide, llvm-commits
Differential Revision: https://reviews.llvm.org/D34703
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306894
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 21:51:43 +0000 (21:51 +0000)]
[Dominators] Add NearestCommonDominator verification
Summary:
This patch adds another verification function for checking correctness of findNearestCommonDominator.
For every edge from U to V in the input graph, `NCD(U, V) == IDom(V) or V` -- the new function checks this condition.
Reviewers: dberlin, sanjoy, chandlerc
Reviewed By: dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34575
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306893
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 21:51:40 +0000 (21:51 +0000)]
[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries
Summary:
This patch makes DomTreeNodes keep their level (depth) in the DomTree. By having this information always available, it is possible to speedup and simplify findNearestCommonDominator and certain dominance queries.
In the future, level information will be also needed to perform incremental updates.
My testing doesn't show any noticeable performance differences after applying this patch. There may be some improvements when other passes are thought to use the level information.
Reviewers: dberlin, sanjoy, chandlerc, grosser
Reviewed By: dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34548
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306892
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 21:48:57 +0000 (21:48 +0000)]
Remove spurious semicolons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306891
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 21:35:00 +0000 (21:35 +0000)]
[llvm-pdbutil] Output the symbol offset when dumping.
Type records have a unique type index, but symbol records do
not. Instead, symbol records refer to other symbol records
by referencing their offset in the symbol stream. In a sense
this is the analogue of the TypeIndex, but we are not printing
it in the dumper. Printing it not only gives us more useful
information when manually investigating the contents of a PDB,
but also allows us to write better tests by enabling us to
verify that fields that reference other symbol records do
so correctly.
Differential Revision: https://reviews.llvm.org/D34906
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306890
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 30 Jun 2017 21:33:44 +0000 (21:33 +0000)]
[codeview] Use the first valid source location at the top of every MBB
If the instructions at the beginning of the block have no location,
we're better off using the location of the first instruction in the
current basic block. At the very least, that instruction post-dominates
this one, whereas if we don't emit a .cv_loc directive, we end up using
the potentially invalid location that falls through from the previous
block.
We could probably do better here by emitting some kind of ".cv_loc end"
directive that stops the line table entry of the previous .cv_loc
directive from bleeding out of its basic block. This would improve the
line table when an entire MBB has no valid location info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306889
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 30 Jun 2017 21:21:40 +0000 (21:21 +0000)]
[Hexagon] Implement frame pointer elimination with -fomit-frame-pointer
It applies to leaf functions that are otherwise not required to have
a frame pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306888
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinar Temirbulatov [Fri, 30 Jun 2017 21:16:26 +0000 (21:16 +0000)]
[SLPVectorizer] Add isOdd() helper function, NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306887
91177308-0d34-0410-b5e6-
96231b3b80d8