OSDN Git Service
Aaron Ballman [Sat, 4 Nov 2017 19:59:14 +0000 (19:59 +0000)]
Move the srpm, ocaml_make_directory, llvm_vcsrevision_h, and llvm-headers projects into the Misc folder on IDEs like Visual Studio rather than leave them in the root directory. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317416
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Sat, 4 Nov 2017 19:48:17 +0000 (19:48 +0000)]
Move the LLVMCFIVerify project into the Libraries folder on IDEs like Visual Studio rather than leave it in the root directory. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317415
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Sat, 4 Nov 2017 19:39:14 +0000 (19:39 +0000)]
Move these CMake projects into the Tests folder on IDEs like Visual Studio rather than leave it in the root directory. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317414
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 4 Nov 2017 18:26:41 +0000 (18:26 +0000)]
[X86] Don't use RCP14 and RSQRT14 for reciprocal estimations or for legacy SSE rcp/rsqrt intrinsics when AVX512 features are enabled.
Summary:
AVX512 added RCP14 and RSQRT instructions which improve accuracy over the legacy RCP and RSQRT instruction, but not enough accuracy to remove the need for a Newton Raphson refinement.
Currently we use these new instructions for the legacy packed SSE instrinics, but not the scalar instrinsics. And we use it for fast math optimization of division and reciprocal sqrt.
I think switching the legacy instrinsics maybe surprising to the user since it changes the answer based on which processor you're using regardless of any fastmath settings. It's also weird that we did something different between scalar and packed.
As far at the reciprocal estimation, I think it creates unnecessary deltas in our output behavior (and prevents EVEX->VEX). A little playing around with gcc and icc and godbolt suggest they don't change which instructions they use here.
This patch adds new X86ISD nodes for the RCP14/RSQRT14 and uses those for the new intrinsics. Leaving the old intrinsics to use the old instructions.
Going forward I think our focus should be on
-Supporting 512-bit vectors, which will have to use the RCP14/RSQRT14.
-Using RSQRT28/RCP28 to remove the Newton Raphson step on processors with AVX512ER
-Supporting double precision.
Reviewers: zvi, DavidKreitzer, RKSimon
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D39583
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317413
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 4 Nov 2017 18:26:39 +0000 (18:26 +0000)]
[X86] Regenerate a couple more tests that I missed in r317410.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317412
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 4 Nov 2017 18:10:03 +0000 (18:10 +0000)]
[X86] Teach EVEX->VEX pass to turn SHUFI32X4/SHUFF32X4/SHUFI64X/SHUFF64X2 into VPERM2F128/VPERM2I128.
This recovers some of the tests that were changed by r317403.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317410
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaxun Liu [Sat, 4 Nov 2017 17:37:43 +0000 (17:37 +0000)]
[AMDGPU] Remove hardcoded address space value from AMDGPULibFunc
AMDGPULibFunc hardcodes address space values of the old address space mapping,
which causes invalid addrspacecast instructions and undefined functions in
APPSDK sample MonteCarloAsianDP.
This patch fixes that.
Differential Revision: https://reviews.llvm.org/D39616
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317409
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Fertile [Sat, 4 Nov 2017 17:04:39 +0000 (17:04 +0000)]
[LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local.
Now that we have a way to mark GlobalValues as local we can use the symbol
resolutions that the linker plugin provides as part of lto/thinlto link
step to refine the compilers view on what symbols will end up being local.
Originally commited as r317374, but reverted in r317395 to update some missed
tests.
Differential Revision: https://reviews.llvm.org/D35702
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317408
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 4 Nov 2017 06:55:55 +0000 (06:55 +0000)]
llvm/test/lit.cfg.py: Don't set the feature "llvm-64-bits" if -m32 is specified.
FIXME: LLVM_BUILD_32_BITS should modify host_triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317404
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 4 Nov 2017 06:44:47 +0000 (06:44 +0000)]
[X86] Teach shuffle lowering to use 256-bit SHUF128 when possible.
This allows masked operations to be used and allows the register allocator to use YMM16-31 if necessary.
As a follow up I'll look into teaching EVEX->VEX how to turn this back into PERM2X128 if any of the additional features don't work out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317403
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 4 Nov 2017 06:03:29 +0000 (06:03 +0000)]
CMake: Let LLVM_BUILD_32_BITS aware of large file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317402
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 4 Nov 2017 06:00:11 +0000 (06:00 +0000)]
llvm/test/Object/archive-SYM64-write.test: Delete large temp files. They are 8GiB total.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317401
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Fertile [Sat, 4 Nov 2017 01:54:20 +0000 (01:54 +0000)]
Revert "[LTO][ThinLTO] Use the linker resolutions to mark global values ..."
Changes more tests then expected on one of the build bots.
reverting to investigate.
This reverts https://llvm.org/svn/llvm-project/llvm/trunk@317374
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317395
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 4 Nov 2017 00:44:01 +0000 (00:44 +0000)]
[CallSiteSplitting] clang-format my last commit. NFCI.
Thanks to Rui for pointing out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317393
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 3 Nov 2017 23:03:38 +0000 (23:03 +0000)]
[CallSiteSplitting] Silence GCC's -Wparentheses. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317385
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 22:48:13 +0000 (22:48 +0000)]
[X86] Give unary PERMI priority over SHUF128 in lowerV8I64VectorShuffle to make it possible to fold a load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317382
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 3 Nov 2017 22:32:11 +0000 (22:32 +0000)]
Move TargetFrameLowering.h to CodeGen where it's implemented
This header already includes a CodeGen header and is implemented in
lib/CodeGen, so move the header there to match.
This fixes a link error with modular codegeneration builds - where a
header and its implementation are circularly dependent and so need to be
in the same library, not split between two like this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317379
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 3 Nov 2017 21:55:03 +0000 (21:55 +0000)]
Invoke salvageDebugInfo from CodeGenPrepare's SinkCast()
This preserves the debug info for the cast operation in the original location.
rdar://problem/
33460652
Reapplied r317340 with the test moved into an ARM-specific directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317375
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Fertile [Fri, 3 Nov 2017 21:45:55 +0000 (21:45 +0000)]
[LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local.
Now that we have a way to mark GlobalValues as local we can use the symbol
resolutions that the linker plugin provides as part of lto/thinlto link
step to refine the compilers view on what symbols will end up being local.
Differential Revision: https://reviews.llvm.org/D35702
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317374
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 3 Nov 2017 21:32:44 +0000 (21:32 +0000)]
Fix a crash in llvm-objdump when printing a bad x86_64 relocation in a Mach-O
file with a bad section number.
rdar://
35207539
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317373
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Fri, 3 Nov 2017 21:30:06 +0000 (21:30 +0000)]
Revert r317046, "Object: Move some code from ELF.h into ELF.cpp."
This change resulted in a measured 1.5-2% perf regression linking
chrome.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317371
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 21:08:13 +0000 (21:08 +0000)]
[SimplifyCFG] When merging conditional stores, don't count the store we're merging against the PHINodeFoldingThreshold
Merging conditional stores tries to check to see if the code is if convertible after the store is moved. But the store hasn't been moved yet so its being counted against the threshold.
The patch adds 1 to the threshold comparison to make sure we don't count the store. I've adjusted a test to use a lower threshold to ensure we still do that conversion with the lower threshold.
Differential Revision: https://reviews.llvm.org/D39570
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317368
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 3 Nov 2017 20:57:10 +0000 (20:57 +0000)]
GCOV: Move GCOV from IR & Support into ProfileData to fix layering
This class was split between libIR and libSupport, which breaks under
modular code generation. Move it into the one library that uses it,
ProfileData, to resolve this issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317366
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 3 Nov 2017 20:57:09 +0000 (20:57 +0000)]
llvm-objdump: Fix unused-lambda-capture warning by removing unused lambda capture
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317365
91177308-0d34-0410-b5e6-
96231b3b80d8
Mitch Phillips [Fri, 3 Nov 2017 20:54:26 +0000 (20:54 +0000)]
[cfi-verify] Add blacklist parsing for result filtering.
Adds blacklist parsing behaviour for filtering results into four categories:
- Expected Protected: Things that are not in the blacklist and are protected.
- Unexpected Protected: Things that are in the blacklist and are protected.
- Expected Unprotected: Things that are in the blacklist and are unprotected.
- Unexpected Unprotected: Things that are not in the blacklist and are unprotected.
now can optionally be invoked with a second command line argument, which specifies the blacklist file that the binary was built with.
Current statistics for chromium:
Reviewers: vlad.tsyrklevich
Subscribers: mgorny, llvm-commits, pcc, kcc
Differential Revision: https://reviews.llvm.org/D39525
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317364
91177308-0d34-0410-b5e6-
96231b3b80d8
Jun Bum Lim [Fri, 3 Nov 2017 20:41:16 +0000 (20:41 +0000)]
Recommit r317351 : Add CallSiteSplitting pass
This recommit r317351 after fixing a buildbot failure.
Original commit message:
Summary:
This change add a pass which tries to split a call-site to pass
more constrained arguments if its argument is predicated in the control flow
so that we can expose better context to the later passes (e.g, inliner, jump
threading, or IPA-CP based function cloning, etc.).
As of now we support two cases :
1) If a call site is dominated by an OR condition and if any of its arguments
are predicated on this OR condition, try to split the condition with more
constrained arguments. For example, in the code below, we try to split the
call site since we can predicate the argument (ptr) based on the OR condition.
Split from :
if (!ptr || c)
callee(ptr);
to :
if (!ptr)
callee(null ptr) // set the known constant value
else if (c)
callee(nonnull ptr) // set non-null attribute in the argument
2) We can also split a call-site based on constant incoming values of a PHI
For example,
from :
BB0:
%c = icmp eq i32 %i1, %i2
br i1 %c, label %BB2, label %BB1
BB1:
br label %BB2
BB2:
%p = phi i32 [ 0, %BB0 ], [ 1, %BB1 ]
call void @bar(i32 %p)
to
BB0:
%c = icmp eq i32 %i1, %i2
br i1 %c, label %BB2-split0, label %BB1
BB1:
br label %BB2-split1
BB2-split0:
call void @bar(i32 0)
br label %BB2
BB2-split1:
call void @bar(i32 1)
br label %BB2
BB2:
%p = phi i32 [ 0, %BB2-split0 ], [ 1, %BB2-split1 ]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317362
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 3 Nov 2017 20:24:19 +0000 (20:24 +0000)]
Modularize: Include some required headers
DenseMaps require the definition of a type to be available when using a
pointer to that type as a key to know how many bits are available for
tombstone/etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317360
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Fri, 3 Nov 2017 20:09:10 +0000 (20:09 +0000)]
[llvm-ar] Support an options string that start with a dash
Some projects call $AR like "$AR -crs output input1 input2".
Differential Revision: https://reviews.llvm.org/D39538
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317358
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Fri, 3 Nov 2017 20:05:51 +0000 (20:05 +0000)]
Correcting some CRLFs that snuck in with my previous commit; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317357
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Fri, 3 Nov 2017 20:01:25 +0000 (20:01 +0000)]
Add llvm::for_each as a range-based extensions to <algorithm> and make use of it in some cases where it is a more clear alternative to std::for_each.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317356
91177308-0d34-0410-b5e6-
96231b3b80d8
Mitch Phillips [Fri, 3 Nov 2017 20:00:05 +0000 (20:00 +0000)]
[cfi-verify] Add an interesting unit test where undef search length changes result.
Add an interesting unit test, found by changing --search-length-undef from the default. Program handles it correctly but good for ensuring correctness on further changes :)
Reviewers: pcc
Subscribers: mgorny, llvm-commits, kcc, vlad.tsyrklevich
Differential Revision: https://reviews.llvm.org/D38658
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317355
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 19:37:41 +0000 (19:37 +0000)]
[X86] Promote athlon, athlon-xp, k8, and k8-sse3 to types instead of subtypes in getHostCPUName. NFCI
This removes the athlon type and simplifies the string decoding. We only really need these type/subtype breaks where we need to match libgcc/compiler-rt and these CPUs aren't part of that.
I'm looking into moving some of this information to a .def file to share with clang's __builtin_cpu_is handling. And while these CPUs aren't part of that the less lines I have to deal with in the .def file the better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317354
91177308-0d34-0410-b5e6-
96231b3b80d8
Jun Bum Lim [Fri, 3 Nov 2017 19:17:11 +0000 (19:17 +0000)]
Revert "Add CallSiteSplitting pass"
Revert due to Buildbot failure.
This reverts commit r317351.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317353
91177308-0d34-0410-b5e6-
96231b3b80d8
Jake Ehrlich [Fri, 3 Nov 2017 19:15:06 +0000 (19:15 +0000)]
Reland "Add support for writing 64-bit symbol tables for archives when offsets become too large for 32-bit"
Tests were failing because some bots were running out of address
space and memory. Additionally the test was very slow. These issues
were solved by changing the test to take advantage of sparse filse and
restricting the test to run only on 64-bit systems.
This should fix https://bugs.llvm.org//show_bug.cgi?id=34189
This change makes it so that if writing a K_GNU style archive, you need
to output a > 32-bit offset it should output in K_GNU64 style instead.
Differential Revision: https://reviews.llvm.org/D36812
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317352
91177308-0d34-0410-b5e6-
96231b3b80d8
Jun Bum Lim [Fri, 3 Nov 2017 19:01:57 +0000 (19:01 +0000)]
Add CallSiteSplitting pass
Summary:
This change add a pass which tries to split a call-site to pass
more constrained arguments if its argument is predicated in the control flow
so that we can expose better context to the later passes (e.g, inliner, jump
threading, or IPA-CP based function cloning, etc.).
As of now we support two cases :
1) If a call site is dominated by an OR condition and if any of its arguments
are predicated on this OR condition, try to split the condition with more
constrained arguments. For example, in the code below, we try to split the
call site since we can predicate the argument (ptr) based on the OR condition.
Split from :
if (!ptr || c)
callee(ptr);
to :
if (!ptr)
callee(null ptr) // set the known constant value
else if (c)
callee(nonnull ptr) // set non-null attribute in the argument
2) We can also split a call-site based on constant incoming values of a PHI
For example,
from :
BB0:
%c = icmp eq i32 %i1, %i2
br i1 %c, label %BB2, label %BB1
BB1:
br label %BB2
BB2:
%p = phi i32 [ 0, %BB0 ], [ 1, %BB1 ]
call void @bar(i32 %p)
to
BB0:
%c = icmp eq i32 %i1, %i2
br i1 %c, label %BB2-split0, label %BB1
BB1:
br label %BB2-split1
BB2-split0:
call void @bar(i32 0)
br label %BB2
BB2-split1:
call void @bar(i32 1)
br label %BB2
BB2:
%p = phi i32 [ 0, %BB2-split0 ], [ 1, %BB2-split1 ]
Reviewers: davidxl, huntergr, chandlerc, mcrosier, eraman, davide
Reviewed By: davidxl
Subscribers: sdesmalen, ashutosh.nema, fhahn, mssimpso, aemerson, mgorny, mehdi_amini, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D39137
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317351
91177308-0d34-0410-b5e6-
96231b3b80d8
Jake Ehrlich [Fri, 3 Nov 2017 18:58:41 +0000 (18:58 +0000)]
[llvm-objcopy] Add support for dwarf fission
This change adds support for dwarf fission.
Differential Revision: https://reviews.llvm.org/D39207
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317350
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Fri, 3 Nov 2017 18:56:36 +0000 (18:56 +0000)]
[AArch64] Fix the number of iterations for the Newton series
The number of iterations was incorrectly determined for DP FP vector types
and the tests were insufficient to flag this issue.
Differential revision: https://reviews.llvm.org/D39507
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317349
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeny Stupachenko [Fri, 3 Nov 2017 18:50:03 +0000 (18:50 +0000)]
The patch fixes PR35131
Summary:
Fix a misprint which led to false CTLZ recognition.
Reviewers: craig.topper
Differential Revision: https://reviews.llvm.org/D39585
From: Evgeny Stupachenko <evstupac@gmail.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317348
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 3 Nov 2017 18:26:36 +0000 (18:26 +0000)]
Revert "Invoke salvageDebugInfo from CodeGenPrepare's SinkCast()"
This reverts commit 317342 while investigating bot breakage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317345
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 18:02:46 +0000 (18:02 +0000)]
[CodeGen] Remove unnecessary semicolons to fix a warning. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317342
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 18:02:44 +0000 (18:02 +0000)]
[X86] Initialize Type and Subtype in getHostCPUName to 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317341
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Fri, 3 Nov 2017 18:00:02 +0000 (18:00 +0000)]
Invoke salvageDebugInfo from CodeGenPrepare's SinkCast()
This preserves the debug info for the cast operation in the original location.
rdar://problem/
33460652
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317340
91177308-0d34-0410-b5e6-
96231b3b80d8
Jun Bum Lim [Fri, 3 Nov 2017 16:24:53 +0000 (16:24 +0000)]
[LICM] sink through non-trivially replicable PHI
Summary:
The current LICM allows sinking an instruction only when it is exposed to exit
blocks through a trivially replacable PHI of which all incoming values are the
same instruction. This change enhance LICM to sink a sinkable instruction
through non-trivially replacable PHIs by spliting predecessors of loop
exits.
Reviewers: hfinkel, majnemer, davidxl, bmakam, mcrosier, danielcdh, efriedma, jtony
Reviewed By: efriedma
Subscribers: nemanjai, dberlin, llvm-commits
Differential Revision: https://reviews.llvm.org/D37163
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317335
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Fri, 3 Nov 2017 16:17:13 +0000 (16:17 +0000)]
[SLP] Test for PR23510, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317334
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Fri, 3 Nov 2017 15:35:13 +0000 (15:35 +0000)]
[mips] Match 'ins' and its' variants with C++ code
Change the ISel matching of 'ins', 'dins[mu]' from tablegen code to
C++ code. This resolves an issue where ISel would select 'dins' instead
of 'dinsm' when the instructions size and position were individually in
range but their sum was out of range according to the ISA specification.
Reviewers: atanasyan
Differential Revision: https://reviews.llvm.org/D39117
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317331
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew V. Tischenko [Fri, 3 Nov 2017 15:25:13 +0000 (15:25 +0000)]
Fix for Bug 34475 - LOCK/REP/REPNE prefixes emitted as instruction on their own.
Differential Revision: https://reviews.llvm.org/D39546
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317330
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Fri, 3 Nov 2017 14:25:39 +0000 (14:25 +0000)]
[LoopPredication] NFC: Refactored code to separate out functions being reused
Summary:
Refactored the code to separate out common functions that are being
reused.
This is to reduce the changes for changes coming up wrt loop
predication with reverse loops.
This refactoring is what we have in our downstream code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317324
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikael Holmen [Fri, 3 Nov 2017 14:15:08 +0000 (14:15 +0000)]
[ADCE] Use MapVector for BlockInfo to make iteration order deterministic
Summary:
Also added a reserve() method to MapVector since we want to use that from
ADCE.
DenseMap does not provide deterministic iteration order so with that
we will handle the members of BlockInfo in random order, eventually
leading to random order of the blocks in the predecessor lists.
Without this change, I get the same predecessor order in about 90% of the
time when I compile a certain reproducer and in 10% I get a different one.
No idea how to make a proper test case for this.
Reviewers: kuhar, david2050
Reviewed By: kuhar
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D39593
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317323
91177308-0d34-0410-b5e6-
96231b3b80d8
Clement Courbet [Fri, 3 Nov 2017 12:12:27 +0000 (12:12 +0000)]
re-land [ExpandMemCmp] Split ExpandMemCmp from CodeGen into its own pass."
Fix undefined references: ExpandMemCmp belongs to CodeGen/, not Scalar/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317318
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 3 Nov 2017 11:33:48 +0000 (11:33 +0000)]
[X86][SSE] Add PACKUS support to combineVectorTruncation
Similar to the existing code to lower to PACKSS, we can use PACKUS if the input vector's leading zero bits extend all the way to the packed/truncated value.
We have to account for pre-SSE41 targets not supporting PACKUSDW
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317315
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Fri, 3 Nov 2017 11:29:00 +0000 (11:29 +0000)]
[PartialInliner] Skip call sites where inlining fails.
Summary:
InlineFunction can fail, for example when trying to inline vararg
fuctions. In those cases, we do not want to bump partial inlining
counters or set AnyInlined to true, because this could leave an unused
function hanging around.
Reviewers: davidxl, davide, gyiu
Reviewed By: davide
Subscribers: llvm-commits, eraman
Differential Revision: https://reviews.llvm.org/D39581
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317314
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Fri, 3 Nov 2017 10:30:19 +0000 (10:30 +0000)]
[globalisel][tablegen] Skip src child predicates
The GlobalISel TableGen backend didn't check for predicates on the
source children. This caused it to generate code for ARM patterns such
as SMLABB or similar, but without properly checking for the sext_16_node
part of the operands. This in turn meant that we would select SMLABB
instead of MLA for simple sequences such as s32 + s32 * s32, which is
wrong (we want a MLA on the full operands, not just their bottom 16
bits).
This patch forces TableGen to skip patterns with predicates on the src
children, so it doesn't generate code for SMLABB and other similar ARM
instructions at all anymore. AArch64 and X86 are not affected.
Differential Revision: https://reviews.llvm.org/D39554
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317313
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Fri, 3 Nov 2017 10:30:12 +0000 (10:30 +0000)]
[ARM GlobalISel] Move the check for Thumb higher up
We're currently bailing out for Thumb targets while lowering formal
parameters, but there used to be some other checks before it, which
could've caused some functions (e.g. those without formal parameters) to
sneak through unnoticed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317312
91177308-0d34-0410-b5e6-
96231b3b80d8
Ivan A. Kosarev [Fri, 3 Nov 2017 10:26:25 +0000 (10:26 +0000)]
[Analysis] Refine matching and merging of TBAA tags
This patch combines the code that matches and merges TBAA access
tags. The aim is to simplify future changes and making sure that
these operations produce consistent results.
Differential Revision: https://reviews.llvm.org/D39463
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317311
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Fri, 3 Nov 2017 09:46:36 +0000 (09:46 +0000)]
[PEI] Simplify handling of targets with no phys regs. NFC
Make doSpillCalleeSavedRegs a member function, instead of passing most of the
members of PEI as arguments.
Differential Review: https://reviews.llvm.org/D35642
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317309
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Fri, 3 Nov 2017 07:33:20 +0000 (07:33 +0000)]
[AArch64] Use dwarf exception handling on MinGW
Ideally we should probably produce WinEH here as well, but until
then, we can use dwarf exceptions, without any further changes
required in clang, libunwind or libcxxabi.
Differential Revision: https://reviews.llvm.org/D39535
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317304
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Fri, 3 Nov 2017 07:30:45 +0000 (07:30 +0000)]
[NFC] Get rid of hard-coded value ID in test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317303
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Fri, 3 Nov 2017 07:18:21 +0000 (07:18 +0000)]
[llvm-nm] Don't error out on multiple occurrances of the -g/--external-only flag
GNU binutils nm doesn't error out on this, and some projects' build
systems can end up doing that in some cases. Allowing that seems like
a better target than trying to avoid user projects passing multiple
-g parameters to $NM.
Differential Revision: https://reviews.llvm.org/D39539
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317301
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Fri, 3 Nov 2017 07:18:14 +0000 (07:18 +0000)]
[llvm-nm] Print 'I' for import table data in COFF
The character gets uppercased into 'I' when it's a global symbol.
In GNU binutils, nm prints 'I' for symbols classified by
bfd_is_ind_section - which probably isn't exactly/only import
tables.
When building for win32, (some incarnations of?) libtool has got
rules that try to inspect linked libraries, and in order to
be sure that it is linking to a DLL import library as opposed to
a static library, it expects to find the string " I " in the output
of $NM when run on such an import library.
GNU binutils nm also flags all of the .idata$X chunks as 'i' (while
this patch only makes it set on .idata$2 and .idata$6) and also
flags __imp__function as 'I'.
Differential Revision: https://reviews.llvm.org/D39540
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317300
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 06:48:02 +0000 (06:48 +0000)]
[X86] Remove PALIGNR/VALIGN handling from combineBitcastForMaskedOp and move to isel patterns instead. Prefer 128-bit VALIGND/VALIGNQ over PALIGNR during lowering when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317299
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 3 Nov 2017 05:19:34 +0000 (05:19 +0000)]
[TableGen] Add an extra blank line to DAGISel output file to separate functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317298
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 3 Nov 2017 01:01:28 +0000 (01:01 +0000)]
[LSR] Clarify a comment. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317295
91177308-0d34-0410-b5e6-
96231b3b80d8
Sriraman Tallam [Fri, 3 Nov 2017 00:10:19 +0000 (00:10 +0000)]
Avoid PLT for external calls when attribute nonlazybind is used.
Differential Revision: https://reviews.llvm.org/D39065
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317292
91177308-0d34-0410-b5e6-
96231b3b80d8
Jake Ehrlich [Thu, 2 Nov 2017 23:45:51 +0000 (23:45 +0000)]
Reland "Add feature to determine if host architecture is 64-bit in llvm-lit"
A member of config was removed in this patch which resulted in errors I
didn't expect. Removing config.host_arch will take more work some I'm
readding that field.
Differential Revision: https://reviews.llvm.org/D39465
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317289
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Thu, 2 Nov 2017 23:44:20 +0000 (23:44 +0000)]
[Verifier] Remove the -verify-debug-info cl::opt
This cl::opt has been dead for a while. It's no longer possible to run
the verifier without also verifying debug info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317288
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Thu, 2 Nov 2017 23:38:19 +0000 (23:38 +0000)]
[AArch64][RegisterBankInfo] Add mapping for G_FPEXT.
This fixes http://llvm.org/PR32560. We were missing a description for
half floating point type and as a result were using the FPR 32 mapping.
Because of the size mismatch the generic code was complaining that the
default mapping is not appropriate. Fix the mapping description so that
the default mapping can be properly applied.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317287
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Thu, 2 Nov 2017 23:38:13 +0000 (23:38 +0000)]
[AArch64][RegisterBankInfo] Add FPR16 support in value mapping.
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317286
91177308-0d34-0410-b5e6-
96231b3b80d8
Puyan Lotfi [Thu, 2 Nov 2017 23:37:32 +0000 (23:37 +0000)]
mir-canon: First commit.
mir-canon (MIRCanonicalizerPass) is a pass designed to reorder instructions and
rename operands so that two similar programs will diff more cleanly after being
run through mir-canon than they would otherwise. This project is still a work
in progress and there are ideas still being discussed for improving diff
quality.
M include/llvm/InitializePasses.h
M lib/CodeGen/CMakeLists.txt
M lib/CodeGen/CodeGen.cpp
A lib/CodeGen/MIRCanonicalizerPass.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317285
91177308-0d34-0410-b5e6-
96231b3b80d8
Jake Ehrlich [Thu, 2 Nov 2017 23:24:04 +0000 (23:24 +0000)]
[llvm-objcopy] Fix bug in how segment alignment was being handled
Just aligning segment offsets to segment alignment is incorrect and also
wastes more space than is needed. The requirement is that p_offset ==
p_addr modulo p_align *not* that p_offset == 0 modulo p_align. Generally
speaking we've been using p_addr == 0 modulo p_align. In fact yaml2obj
can't even produce a valid situation which causes llvm-objcopy to
produce incorrect results because alignment and offset were both
inherited from the sections the program header covers. This change fixes
this bad behavior in llvm-objcopy.
Differential Revision: https://reviews.llvm.org/D39132
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317284
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 2 Nov 2017 23:23:37 +0000 (23:23 +0000)]
[X86] Give AVX512VL instructions priority over their AVX equivalents.
I thought we had gotten all these priority bugs worked out, but I guess not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317283
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 2 Nov 2017 23:17:06 +0000 (23:17 +0000)]
IndVarSimplify: preserve debug information attached to widened PHI nodes.
This fixes PR35015.
https://bugs.llvm.org/show_bug.cgi?id=35015
Differential Revision: https://reviews.llvm.org/D39345
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317282
91177308-0d34-0410-b5e6-
96231b3b80d8
Jake Ehrlich [Thu, 2 Nov 2017 23:14:55 +0000 (23:14 +0000)]
Add feature to determine if host architecture is 64-bit in llvm-lit
I have a test that I'd like to add to llvm that demands using more than
32-bits worth of address space. This test can't be run on 32-bit systems
because they don't have enough address space. The host triple should be
used to determine this instead of config.host_arch because on Debian
systems config.host_arch is not correct. This change adds the
"host-arch-is-64bit" feature to allow tests to restrict themselves to
the 64-bit case.
Differential Revision: https://reviews.llvm.org/D39465
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317281
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Thu, 2 Nov 2017 22:35:22 +0000 (22:35 +0000)]
AMDGPU: Fix warning discovered by r317266 [-Wunused-private-field]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317280
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Yamauchi [Thu, 2 Nov 2017 22:26:51 +0000 (22:26 +0000)]
Irreducible loop metadata for more accurate block frequency under PGO.
Summary:
Currently the block frequency analysis is an approximation for irreducible
loops.
The new irreducible loop metadata is used to annotate the irreducible loop
headers with their header weights based on the PGO profile (currently this is
approximated to be evenly weighted) and to help improve the accuracy of the
block frequency analysis for irreducible loops.
This patch is a basic support for this.
Reviewers: davidxl
Reviewed By: davidxl
Subscribers: mehdi_amini, llvm-commits, eraman
Differential Revision: https://reviews.llvm.org/D39028
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317278
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Thu, 2 Nov 2017 21:56:59 +0000 (21:56 +0000)]
[Hexagon] Prefer L2_loadrub_io over L4_loadrub_rr
If the offset is an immediate, avoid putting it in a register
to get Rs+Rt<<#0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317275
91177308-0d34-0410-b5e6-
96231b3b80d8
Shoaib Meenai [Thu, 2 Nov 2017 21:43:32 +0000 (21:43 +0000)]
[tools] Add option to install binutils symlinks
The LLVM tools can be used as a replacement for binutils, in which case
it's convenient to create symlinks with the binutils names. Add support
for these symlinks in the build system. As with any other llvm tool
symlinks, the user can limit the installed symlinks by only adding the
desired ones to `LLVM_TOOLCHAIN_TOOLS`.
Differential Revision: https://reviews.llvm.org/D39530
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317272
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 2 Nov 2017 21:35:37 +0000 (21:35 +0000)]
Clean up comments in include/llvm-c/DebugInfo.h
Patch by Harlan Haskins!
Differential Revision: https://reviews.llvm.org/D39568
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317271
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Thu, 2 Nov 2017 21:21:02 +0000 (21:21 +0000)]
[LoopPredication] Enable predication when latchCheckIV is wider than rangeCheck
Summary:
This patch allows us to predicate range checks that have a type narrower than
the latch check type. We leverage SCEV analysis to identify a truncate for the
latchLimit and latchStart.
There is also safety checks in place which requires the start and limit to be
known at compile time. We require this to make sure that the SCEV truncate expr
for the IV corresponding to the latch does not cause us to lose information
about the IV range.
Added tests show the loop predication over range checks that are of various
types and are narrower than the latch type.
This enhancement has been in our downstream tree for a while.
Reviewers: apilipenko, sanjoy, mkazantsev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D39500
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317269
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Thu, 2 Nov 2017 20:58:58 +0000 (20:58 +0000)]
Add missing header guards.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317267
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Thu, 2 Nov 2017 20:48:06 +0000 (20:48 +0000)]
AMDGPU: Remove outdated fixme (it was already fixed)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317266
91177308-0d34-0410-b5e6-
96231b3b80d8
Shoaib Meenai [Thu, 2 Nov 2017 20:33:36 +0000 (20:33 +0000)]
[cmake] Remove policy conditionals
LLVM now requires a minimum of cmake 3.4.3, and all the policies
currently being set are present in that cmake version, so the
conditionals will always be true and are therefore unnecessary. The
movation is that the conditionals can give the false impression that the
policy settings are optional, whereas for example it's necessary to set
CMP0056 in order for `check_linker_flags` to operate correctly after
r316972. Inline the project version and language setting in the process.
Differential Revision: https://reviews.llvm.org/D39442
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317264
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 2 Nov 2017 20:22:03 +0000 (20:22 +0000)]
Fix llvm-dsymutil test in -DLLVM_ENABLE_THREADS=OFF mode
After r316999, tools/dsymutil/X86/alias.test started failing in builds
that have threading disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317263
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Thu, 2 Nov 2017 20:05:20 +0000 (20:05 +0000)]
[test] Move llvm-lib tests into tools/llvm-lib. NFC.
Similarly to SVN r317189 for llvm-dlltool, these are probably
easier to find in a tools subdirectory with a name identical to
the tool, than in a toplevel directory with a different name.
This matches the move of LibDriver itself in SVN r302995.
Differential Revision: https://reviews.llvm.org/D39531
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317262
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 2 Nov 2017 19:13:34 +0000 (19:13 +0000)]
[X86] Simplify the pentium4 code in getHostCPUName to be based on feature flags. Don't use 'x86-64' ever.
'x86-64' has started to reflect a sort of generic tuning flag for more modern 64-bit CPUs. We probably shouldn't be using it as the name of an unidentifiable pentium4. So use nocona for all 64-bit pentium4s instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317230
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 2 Nov 2017 19:13:32 +0000 (19:13 +0000)]
[X86] Change getHostCPUName fallback code to not select 'x86-64' for unknown CPUs in family 6 that has 64-bit support but not any newer SSE features. Use 'core2' instead
We know that's the earliest CPU with 64-bit support. x86-64 has taken on a role of representing a more modern 64-bit CPU so we probably shouldn't be using that when we can't identify things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317229
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Devlieghere [Thu, 2 Nov 2017 18:44:54 +0000 (18:44 +0000)]
[dsymutil][doc] Improve wording in manpage and rename file.
- Improve wording
- Rename llvm-dsymutil to dsymutil
- Name -arch=<arch> argument
Differential revision: https://reviews.llvm.org/D39561
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317226
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Thu, 2 Nov 2017 18:24:04 +0000 (18:24 +0000)]
Strip off invariant.start because memory locations arent invariant
The original change was reverted in rL317217 because of the failure in
the RS4GC testcase. I couldn't reproduce the failure on my local machine
(macbook) but could reproduce it on a linux box.
The failure was around removing the uses of invariant.start. The fix
here is to just RAUW undef (which was the first implementation in D39388).
This is perfectly valid IR as discussed in the review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317225
91177308-0d34-0410-b5e6-
96231b3b80d8
Mitch Phillips [Thu, 2 Nov 2017 18:04:44 +0000 (18:04 +0000)]
Fixed line length style issue.
Reviewers: zturner
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D39395
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317223
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Thu, 2 Nov 2017 17:52:27 +0000 (17:52 +0000)]
[TargetParser][AArch64] Reorder enum to preserve 5.0.0 libLLVM ABI.
This is required for backporting r311659 to the 5.0.1 release.
PR35060
Differential Revision: https://reviews.llvm.org/D39558
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317222
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Devlieghere [Thu, 2 Nov 2017 17:12:34 +0000 (17:12 +0000)]
[dsymutil] Add a manpage for dsymutil
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317221
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Thu, 2 Nov 2017 16:45:51 +0000 (16:45 +0000)]
Revert "[RS4GC] Strip off invariant.start because memory locations arent invariant"
This reverts commit r317215, investigating the test failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317217
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Thu, 2 Nov 2017 16:23:31 +0000 (16:23 +0000)]
[RS4GC] Strip off invariant.start because memory locations arent invariant
Summary:
Invariant.start on memory locations has the property that the memory
location is unchanging. However, this is not true in the face of
rewriting statepoints for GC.
Teach RS4GC about removing invariant.start so that optimizations after
RS4GC does not incorrect sink a load from the memory location past a
statepoint.
Added test showcasing the issue.
Reviewers: reames, apilipenko, dneilson
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D39388
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317215
91177308-0d34-0410-b5e6-
96231b3b80d8
Clement Courbet [Thu, 2 Nov 2017 15:53:10 +0000 (15:53 +0000)]
Revert "[ExpandMemCmp] Split ExpandMemCmp from CodeGen into its own pass."
undefined reference to `llvm::TargetPassConfig::ID' on
clang-ppc64le-linux-multistage
This reverts commit
eea333c33fa73ad225ef28607795984829f65688.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317213
91177308-0d34-0410-b5e6-
96231b3b80d8
Clement Courbet [Thu, 2 Nov 2017 15:02:51 +0000 (15:02 +0000)]
[ExpandMemCmp] Split ExpandMemCmp from CodeGen into its own pass.
Summary:
This is mostly a noop (most of the test diffs are renamed blocks).
There are a few temporary register renames (eax<->ecx) and a few blocks are
shuffled around.
See the discussion in PR33325 for more details.
Reviewers: spatel
Subscribers: mgorny
Differential Revision: https://reviews.llvm.org/D39456
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317211
91177308-0d34-0410-b5e6-
96231b3b80d8
Ayman Musa [Thu, 2 Nov 2017 13:07:06 +0000 (13:07 +0000)]
[X86] Fix bug in legalize vector types - Split large loads
When splitting a large load to smaller legally-typed loads, the last load should be padded to reach the size of the previous one so a CONCAT_VECTORS node could reunite them again.
The code currently pads the last load to reach the size of the first load (instead of the previous).
Differential Revision: https://reviews.llvm.org/D38495
Change-Id: Ib60b55ed26ce901fabf68108daf52683fbd5013f
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317206
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Thu, 2 Nov 2017 12:47:22 +0000 (12:47 +0000)]
[mips] Use register scavenging with MSA.
MSA stores and loads to the stack are more likely to require an
emergency GPR spill slot due to the smaller offsets available
with those instructions.
Handle this by overestimating the size of the stack by determining
the largest offset presuming that all callee save registers are
spilled and accounting of incoming arguments when determining
whether an emergency spill slot is required.
Reviewers: atanasyan
Differential Revision: https://reviews.llvm.org/D39056
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317204
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam McCall [Thu, 2 Nov 2017 12:29:47 +0000 (12:29 +0000)]
Temporary workaround for msan false positive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317203
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Thu, 2 Nov 2017 12:19:36 +0000 (12:19 +0000)]
Adding test for extraxt sub vector load and store avx512
Change-Id: Iefcb0ec6b6aa1b530ce5358081f02e6e522a8e50
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317202
91177308-0d34-0410-b5e6-
96231b3b80d8
Yichao Yu [Thu, 2 Nov 2017 12:18:33 +0000 (12:18 +0000)]
Allow inaccessiblememonly and inaccessiblemem_or_argmemonly to be overwriten on call site with operand bundle
Summary:
Similar to argmemonly, readonly and readnone.
Fix PR35128
Reviewers: andrew.w.kaylor, chandlerc, hfinkel
Reviewed By: hfinkel
Subscribers: hfinkel, llvm-commits
Differential Revision: https://reviews.llvm.org/D39434
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317201
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Thu, 2 Nov 2017 12:00:58 +0000 (12:00 +0000)]
[AsmPrinterDwarf] Add support for .cfi_restore directive
As of today we only use .cfi_offset to specify the offset of a CSR, but
we never use .cfi_restore when the CSR is restored.
If we want to perform a more advanced type of shrink-wrapping, we need
to use .cfi_restore in order to switch the CFI state between blocks.
This patch only aims at adding support for the directive.
Differential Revision: https://reviews.llvm.org/D36114
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317199
91177308-0d34-0410-b5e6-
96231b3b80d8