Craig Topper [Tue, 17 Sep 2019 18:19:02 +0000 (18:19 +0000)]
[SimplifyDemandedBits] Use APInt::intersects to instead of ANDing and comparing to 0 separately. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372158
91177308-0d34-0410-b5e6-
96231b3b80d8
Jinsong Ji [Tue, 17 Sep 2019 18:10:09 +0000 (18:10 +0000)]
[docs][Bugpoint]Add notes about multiple crashes
Summary:
When reducing case for a CodeGenCrash, bugpoint may generate a new
reduced
testcase that exposes/causes another crash or break something due to
limitation.
Bugpoint does not distiguish different crashes currently,
so when this happens, bugpoint will go on reducing for the new crash,
or just abort, we can't get the case reduced for the origial crash.
An advice is added into usage doc to connect to recommend checking error
message with scripts and `-compile-command`.
Reviewers: modocache, bogner, sebpop, reames, vsk, MatzeB
Reviewed By: vsk
Subscribers: mehdi_amini, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66832
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372157
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 18:02:56 +0000 (18:02 +0000)]
[X86] Simplify b2b KSHIFTL+KSHIFTR using demanded elts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372155
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 18:02:52 +0000 (18:02 +0000)]
[X86] Call SimplifyDemandedVectorElts on KSHIFTL/KSHIFTR nodes during DAG combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372154
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 18:02:46 +0000 (18:02 +0000)]
[X86] Simplify some code in LowerBUILD_VECTORvXi1. NFCI
The case were Immediate is 0 and HasConstElts is true should never
happen since that would mean the constant elts were all zero. But
we check for all zero build vector earlier. So just use HasConstElts
and blindly take Immediate without checking if its 0.
Move the code that bitcasts and extract the immediate into the
the HasConstElts case since the other code just creates an undef
with the right type. No casting needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372153
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Tue, 17 Sep 2019 17:56:13 +0000 (17:56 +0000)]
[AMDGPU] Added MI bit IsDOT
NFC, needed for future commit.
Differential Revision: https://reviews.llvm.org/D67669
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372151
91177308-0d34-0410-b5e6-
96231b3b80d8
GN Sync Bot [Tue, 17 Sep 2019 17:51:27 +0000 (17:51 +0000)]
gn build: Merge r372149
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372150
91177308-0d34-0410-b5e6-
96231b3b80d8
Greg Clayton [Tue, 17 Sep 2019 17:46:13 +0000 (17:46 +0000)]
GSYM: Add the llvm::gsym::Header header class with tests
This patch adds the llvm::gsym::Header class which appears at the start of a stand alone GSYM file, or in the first bytes of the GSYM data in a GSYM section within a file. Added encode and decode methods with full error handling and full tests.
Differential Revision: https://reviews.llvm.org/D67666
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372149
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 17:32:15 +0000 (17:32 +0000)]
[TableGen] CodeGenMapTable - Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372146
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 17:26:14 +0000 (17:26 +0000)]
[ARM][AsmParser] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372145
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 17:24:55 +0000 (17:24 +0000)]
Fix MSVC lambda capture warnings. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372144
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 17 Sep 2019 17:12:24 +0000 (17:12 +0000)]
Reland "[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372142
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Tue, 17 Sep 2019 16:45:20 +0000 (16:45 +0000)]
[PowerPC] Exploit single instruction load-and-splat for word and doubleword
We currently produce a load, followed by (possibly a move for integers and) a
splat as separate instructions. VSX has always had a splatting load for
doublewords, but as of Power9, we have it for words as well. This patch just
exploits these instructions.
Differential revision: https://reviews.llvm.org/D63624
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372139
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Tue, 17 Sep 2019 16:33:35 +0000 (16:33 +0000)]
[MemorySSA] Fix phi insertion when inserting a def.
Summary:
When inserting a Def, the current algorithm is walking edges backward
and inserting new Phis where needed. There may be additional Phis needed
in the IDF of the newly inserted Def and Phis.
Adding Phis in the IDF of the Def was added ina previous patch, but we
may also need other Phis in the IDF of the newly added Phis.
Reviewers: george.burgess.iv
Subscribers: Prazek, sanjoy.google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67637
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372138
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Tue, 17 Sep 2019 16:31:37 +0000 (16:31 +0000)]
[MemorySSA] Update MSSA for non-conventional AA.
Summary:
Regularly when moving an instruction that may not read or write memory,
the instruction is not modelled in MSSA, so not action is necessary.
For a non-conventional AA pipeline, MSSA needs to explicitly check when
creating accesses, so as to not model instructions that may not read and
write memory.
Reviewers: george.burgess.iv
Subscribers: Prazek, sanjoy.google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67562
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372137
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Tue, 17 Sep 2019 16:27:36 +0000 (16:27 +0000)]
Move DK_Misexpect for compatability with getNextAvailablePluginDiagnosticKind
First identified after D66324 landed.
Patch By: paulkirth
Differential Revision: https://reviews.llvm.org/D67648
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372136
91177308-0d34-0410-b5e6-
96231b3b80d8
Greg Clayton [Tue, 17 Sep 2019 16:15:49 +0000 (16:15 +0000)]
GSYM: add encoding and decoding to FunctionInfo
This patch adds encoding and decoding of the FunctionInfo objects along with full error handling and tests. Full details of the FunctionInfo encoding format appear in the FunctionInfo.h header file.
Differential Revision: https://reviews.llvm.org/D67506
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372135
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Tue, 17 Sep 2019 15:32:28 +0000 (15:32 +0000)]
[ARM] Add a SelectTAddrModeImm7 for MVE narrow loads and stores
We were previously using the SelectT2AddrModeImm7 for both normal and narrowing
MVE loads/stores. As the narrowing instructions do not accept sp as a register,
it makes little sense to optimise a FrameIndex into the load, only to have to
recover that later on. This adds a SelectTAddrModeImm7 which does not do that
folding, and uses it for narrowing load/store patterns.
Differential Revision: https://reviews.llvm.org/D67489
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372134
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Tue, 17 Sep 2019 15:25:24 +0000 (15:25 +0000)]
[ARM] Fixup pipeline test. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372133
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Tue, 17 Sep 2019 15:23:09 +0000 (15:23 +0000)]
[ARM] Reserve an emergency spill slot for fp16 addressing modes that need it
Similar to D67327, but this time for the FP16 VLDR and VSTR instructions that
use the AddrMode5FP16 addressing mode. We need to reserve an emergency spill
slot for instructions that will be out of range to use sp directly.
AddrMode5FP16 is 8 bits with a scale of 2.
Differential Revision: https://reviews.llvm.org/D67483
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372132
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 17 Sep 2019 14:27:31 +0000 (14:27 +0000)]
[RISCV] Unbreak the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372127
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 17 Sep 2019 14:21:36 +0000 (14:21 +0000)]
[ARM] Fix for buildbots
Remove setPreservesCFG from ARMConstantIslandPass and add a couple
of -verify-machine-dom-info instances into the existing codegen
tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372126
91177308-0d34-0410-b5e6-
96231b3b80d8
Krasimir Georgiev [Tue, 17 Sep 2019 14:15:23 +0000 (14:15 +0000)]
Revert "[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)"
Summary:
This reverts commit r372101.
Causes ASAN build bot failures:
http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/14176
From http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/14176/steps/64-bit%20check-asan/logs/stdio:
```
[ RUN ] AddressSanitizer.StrNCatOOBTest
/home/buildbots/ppc64be-sanitizer/sanitizer-ppc64be/build/llvm-project/compiler-rt/lib/asan/tests/asan_str_test.cpp:462: Failure
Death test: strncat(to - 1, from, 0)
Result: failed to die.
```
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67658
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372125
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Tue, 17 Sep 2019 14:06:05 +0000 (14:06 +0000)]
gn build: (manually) merge r372076
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372123
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 13:58:46 +0000 (13:58 +0000)]
[llvm-readobj/llvm-objdump] - Improve how tool locate the dynamic table and report warnings about that.
Before this patch we gave a priority to a dynamic table found
from the section header.
It was discussed (here: https://reviews.llvm.org/D67078?id=218356#inline-602082)
that probably preferring the table from PT_DYNAMIC is better,
because it is what runtime loader sees.
This patch makes the table from PT_DYNAMIC be chosen at first place if it is available.
But also it adds logic to fall back to SHT_DYNAMIC if the table from the dynamic segment is
broken or fall back to use no table if both are broken.
It adds a few more diagnostic warnings for the logic above.
Differential revision: https://reviews.llvm.org/D67547
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372122
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 17 Sep 2019 13:46:26 +0000 (13:46 +0000)]
[ARM] Fix for buildbots
Add --verifymachineinstrs and update the remaining low overhead loop
tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372121
91177308-0d34-0410-b5e6-
96231b3b80d8
Luis Marques [Tue, 17 Sep 2019 13:34:17 +0000 (13:34 +0000)]
[RISCV][NFC] Use NoRegister instead of 0 literal
Summary: Trivial cleanup.
Reviewers: asb, lenary
Reviewed By: lenary
Subscribers: hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67526
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372120
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 13:27:02 +0000 (13:27 +0000)]
[X86] X86DAGToDAGISel::tryFoldLoad - assert root/parent pointers are non-null. NFCI.
Silences a static analyzer warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372118
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 13:25:56 +0000 (13:25 +0000)]
InterleavedAccessInfo - Don't dereference a dyn_cast result. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372117
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 13:24:54 +0000 (13:24 +0000)]
[LoopVectorize] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results, we can use cast<> directly as we know that these cases should all be CastInst, which is why its working atm and anyway cast<> will assert if they aren't.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372116
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Tue, 17 Sep 2019 12:58:51 +0000 (12:58 +0000)]
[ARM] Fix for MVE load/store stack accesses
MVE loads and stores have a 7 bit immediate range, scaled by the length of the type. This needs to be taught to the stack estimation code to ensure that an emergency spill slot is reserved in case we run out of registers when materialising stack indices.
Also the narrowing loads/stores can be created with frame indices even though they do not accept SP as a register. We need in those cases to make sure we have an emergency register to use as the frame base, as SP can never be used.
Differential Revision: https://reviews.llvm.org/D67327
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372114
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 17 Sep 2019 12:56:29 +0000 (12:56 +0000)]
Hide implementation details in namespaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372113
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 17 Sep 2019 12:19:32 +0000 (12:19 +0000)]
[ARM][LowOverheadLoops] Add LR def safety check
Converting the *LoopStart pseudo instructions into DLS/WLS results in
LR being defined. These instructions were inserted on the assumption
that LR would already contain the loop counter because a mov is
introduced during ISel as the the consumers in the loop can only use
LR. That assumption proved wrong!
So perform a safety check, finding an appropriate place to insert the
DLS/WLS instructions or revert if this isn't possible.
Differential Revision: https://reviews.llvm.org/D67539
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372111
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 12:05:39 +0000 (12:05 +0000)]
[llvm-readobj] - Test PPC64 relocations properly.
We had a precompiled binary committed and not all of the relocations
supported were tested. This patch fixes this.
Differential revision: https://reviews.llvm.org/D67617
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372110
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 12:00:55 +0000 (12:00 +0000)]
[obj2yaml] - Support PPC64 relocation types.
We do not support them and fail with llvm_unreachable currently.
This is not the only target we do not support and also seems we are missing
the tests for those we have already. But I needed this one for another patch,
so posted it separatelly.
Relocation names are taken from llvm\include\llvm\BinaryFormat\ELFRelocs\PowerPC64.def
Differential revision: https://reviews.llvm.org/D67615
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372109
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 11:51:26 +0000 (11:51 +0000)]
[yaml2obj/obj2yaml] - Allow setting an arbitrary values for e_machine.
Currently we only allow using a known named constants
for `Machine` field in YAML documents.
This patch allows using any numbers (valid or "unknown")
and adds test cases for current and new functionality.
With this it is possible to write a test cases for really unknown
EM_* targets.
Differential revision: https://reviews.llvm.org/D67652
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372108
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Tue, 17 Sep 2019 11:43:42 +0000 (11:43 +0000)]
[docs] Make --version text more correct
Follow-up to r371983. Referring to "this program" in the description of
the --version option in the documentation isn't exactly correct, because
the docs are not part of the program, and so "this program" doesn't
really refer to anything. This patch brings the other users of this
terminology into line with the new updates to llvm-size and
llvm-strings.
Reviewed by: alexshap, MaskRay
Differential Revision: https://reviews.llvm.org/D67618
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372107
91177308-0d34-0410-b5e6-
96231b3b80d8
Luis Marques [Tue, 17 Sep 2019 11:15:35 +0000 (11:15 +0000)]
[RISCV] Switch to the Machine Scheduler
Most of the test changes are trivial instruction reorderings and differing
register allocations, without any obvious performance impact.
Differential Revision: https://reviews.llvm.org/D66973
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372106
91177308-0d34-0410-b5e6-
96231b3b80d8
Johannes Doerfert [Tue, 17 Sep 2019 10:52:41 +0000 (10:52 +0000)]
[Attributor][Fix] Initialize the cache prior to using it
Summary:
There were segfaults as we modified and iterated the instruction maps in
the cache at the same time. This was happening because we created new
instructions while we populated the cache. This fix changes the order
in which we perform these actions. First, the caches for the whole
module are created, then we start to create abstract attributes.
I don't have a unit test but the LLVM test suite exposes this problem.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67232
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372105
91177308-0d34-0410-b5e6-
96231b3b80d8
Luis Marques [Tue, 17 Sep 2019 10:52:09 +0000 (10:52 +0000)]
Revert Patch from Phabricator
This reverts r372092 (git commit
e38695a0255c9e7b53639f349f8101bae1ce5c04)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372104
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 17 Sep 2019 10:51:30 +0000 (10:51 +0000)]
[X86] Use APInt::getLowBitsSet helper. NFCI.
Also avoids a static analyzer warning about out of range shifts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372103
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 17 Sep 2019 10:25:38 +0000 (10:25 +0000)]
[SLC] Preserve attrs for strncpy(x, "", y) -> memset(align 1 x, '\0', y)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372101
91177308-0d34-0410-b5e6-
96231b3b80d8
Graham Hunter [Tue, 17 Sep 2019 10:19:23 +0000 (10:19 +0000)]
[SVE][MVT] Fixed-length vector MVT ranges
* Reordered MVT simple types to group scalable vector types
together.
* New range functions in MachineValueType.h to only iterate over
the fixed-length int/fp vector types.
* Stopped backends which don't support scalable vector types from
iterating over scalable types.
Reviewers: sdesmalen, greened
Reviewed By: greened
Differential Revision: https://reviews.llvm.org/D66339
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372099
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 17 Sep 2019 10:12:48 +0000 (10:12 +0000)]
[InstCombine] Annotate strdup with deref_or_null
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372098
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 17 Sep 2019 10:03:45 +0000 (10:03 +0000)]
[NFCI] Fixed buildbots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372097
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Tue, 17 Sep 2019 09:56:55 +0000 (09:56 +0000)]
[SimplifyLibCalls] Fix -Wunused-result after D53342/r372091
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372096
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 17 Sep 2019 09:45:52 +0000 (09:45 +0000)]
[NFC} Updated test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372093
91177308-0d34-0410-b5e6-
96231b3b80d8
Luis Marques [Tue, 17 Sep 2019 09:43:08 +0000 (09:43 +0000)]
Patch from Phabricator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372092
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 17 Sep 2019 09:32:52 +0000 (09:32 +0000)]
[SimplifyLibCalls] Mark known arguments with nonnull
Reviewers: efriedma, jdoerfert
Reviewed By: jdoerfert
Subscribers: ychen, rsmith, joerg, aaron.ballman, lebedev.ri, uenoku, jdoerfert, hfinkel, javed.absar, spatel, dmgreen, llvm-commits
Differential Revision: https://reviews.llvm.org/D53342
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372091
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 09:26:49 +0000 (09:26 +0000)]
[llvm-readobj] - Fix BB after r372087.
Seems I forgot to update the number of bytes checked.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372089
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Tue, 17 Sep 2019 09:25:52 +0000 (09:25 +0000)]
[llvm-ar] Parse 'h' and '-h': display help and exit
Support `llvm-ar h` and `llvm-ar -h` because they may be what users try
at first. Note, operation 'h' is undocumented in GNU ar.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D67560
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372088
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 09:12:10 +0000 (09:12 +0000)]
[llvm-readobj] - Fix a TODO in elf-reloc-zero-name-or-value.test.
The "TODO" mentioned was:
"Add test for symbol with no name but with a value once yaml2obj allows
referencing symbols with no name from relocations."
We can do it now.
Differential revision: https://reviews.llvm.org/D67609
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372087
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Timofeev [Tue, 17 Sep 2019 09:08:58 +0000 (09:08 +0000)]
[AMDGPU]: PHI Elimination hooks added for custom COPY insertion. Fixed
Defferential Revision: https://reviews.llvm.org/D67101
Reviewers: rampitec, vpykhtin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372086
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 17 Sep 2019 09:08:05 +0000 (09:08 +0000)]
[ARM] LE support in ConstantIslands
The low-overhead branch extension provides a loop-end 'LE' instruction
that performs no decrement nor compare, it just jumps backwards. This
patch modifies the constant islands pass to try to insert LE
instructions in place of a Thumb2 conditional branch, instead of
shrinking it. This only happens if a cmp can be converted to a cbn/z
and used to exit the loop.
Differential Revision: https://reviews.llvm.org/D67404
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372085
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Tue, 17 Sep 2019 09:02:48 +0000 (09:02 +0000)]
[LoopUnroll] Use LoopSize+1 as threshold, to allow unrolling loops matching LoopSize.
We use `< UP.Threshold` later on, so we should use LoopSize + 1, to
allow unrolling if the result won't exceed to loop size.
Fixes PR43305.
Reviewers: efriedma, dmgreen, paquette
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D67594
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372084
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 08:53:18 +0000 (08:53 +0000)]
[llvm-readobj] - Refactor the code.
It's a straightforward refactoring that allows to simplify and encapsulate the code.
Differential revision: https://reviews.llvm.org/D67624
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372083
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Tue, 17 Sep 2019 08:38:53 +0000 (08:38 +0000)]
[llvm-objcopy] - Remove python invocations from 2 test cases.
It is possible to use yaml2obj to create sections with overlapping sh_offset now.
This patch does that.
Differential revision: https://reviews.llvm.org/D67610
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372081
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Tue, 17 Sep 2019 08:14:09 +0000 (08:14 +0000)]
[bugpoint] Add support for -Oz and properly enable -Os.
This patch adds -Oz as option and also properly enables support for -Os.
Currently, the existing check for -Os is dead, because the enclosing if
only checks of O1, O2 and O3.
There is still a difference between the -Oz pipeline compared to opt,
but I have not been able to track that down yet.
Reviewers: bogner, sebpop, efriedma
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D67593
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372079
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 17 Sep 2019 07:43:04 +0000 (07:43 +0000)]
[ARM][MVE] Add invalidForTailPredication to TSFlags
Set this bit for the MVE reduction instructions to prevent a loop from
becoming tail predicated in their presence.
Differential Revision: https://reviews.llvm.org/D67444
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372076
91177308-0d34-0410-b5e6-
96231b3b80d8
Hideto Ueno [Tue, 17 Sep 2019 06:53:27 +0000 (06:53 +0000)]
[Attributor] Use Alias Analysis in noalias callsite argument deduction
Summary: This patch adds a check of alias analysis in `noalias` callsite argument deduction.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67604
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372075
91177308-0d34-0410-b5e6-
96231b3b80d8
Hideto Ueno [Tue, 17 Sep 2019 05:45:18 +0000 (05:45 +0000)]
[Attributor] Create helper struct for handling analysis getters
Summary: This patch introduces a helper struct `AnalysisGetter` to put together analysis getters. In this patch, a getter for `AAResult` is also added for `noalias`.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67603
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372072
91177308-0d34-0410-b5e6-
96231b3b80d8
David Zarzycki [Tue, 17 Sep 2019 04:44:13 +0000 (04:44 +0000)]
[git-llvm] Do not reinvent `@{upstream}` (take 2)
This makes git-llvm more of a thin wrapper around git while temporarily
maintaining backwards compatibility with past git-llvm behavior.
Using @{upstream} makes git-llvm more robust when used with a nontrivial
local repository.
https://reviews.llvm.org/D67389
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372070
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 04:41:14 +0000 (04:41 +0000)]
[X86] Split oversized vXi1 vector arguments and return values into scalars on avx512 targets.
Previously we tried to split them into narrower v64i1 or v16i1
pieces that each got promoted to vXi8 and then passed in a zmm
or xmm register. But this crashes when you need to pass more
pieces than available registers reserved for argument passing.
The scalarizing done here generates much longer and slower code,
but is consistent with the behavior of avx2 and earlier targets
for these types.
Fixes PR43323.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372069
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 04:41:10 +0000 (04:41 +0000)]
[X86] Allow masked VBROADCAST instructions to be turned into BLENDM with a broadcast load to avoid a copy.
The BLENDM instructions allow an 2 sources and an independent
destination while masked VBROADCAST has the destination tied
to the source.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372068
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 04:41:05 +0000 (04:41 +0000)]
[X86] Add support for commuting EVEX VCMP instructons with any immediate value.
Previously we limited to the EQ/NE/TRUE/FALSE/ORD/UNORD immediates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372067
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 04:41:01 +0000 (04:41 +0000)]
[X86] Add test case for missed opportunity to commute a VCMP instruction after unfolding one load in order to fold another load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372066
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 17 Sep 2019 04:40:58 +0000 (04:40 +0000)]
[X86] Enable commuting of EVEX VCMP for all immediate values during isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372065
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 16 Sep 2019 23:56:26 +0000 (23:56 +0000)]
llvm-reduce: Clean out previous test temp/output dir, since it was a dir and now it's used as just a single file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372054
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 16 Sep 2019 23:54:57 +0000 (23:54 +0000)]
llvm-reduce: Remove some string copies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372053
91177308-0d34-0410-b5e6-
96231b3b80d8
Joel E. Denny [Mon, 16 Sep 2019 23:47:46 +0000 (23:47 +0000)]
Revert r372035: "[lit] Make internal diff work in pipelines"
This breaks a Windows bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372051
91177308-0d34-0410-b5e6-
96231b3b80d8
Amara Emerson [Mon, 16 Sep 2019 23:46:03 +0000 (23:46 +0000)]
[GlobalISel] Partially revert r371901.
r371901 was overeager and widenScalarDst() and the like in the legalizer
attempt to increment the insert point given in order to add new instructions
after the currently legalizing inst. In cases where the insertion point is not
exactly the current instruction, then callers need to de-compensate for the
behaviour by decrementing the insertion iterator before calling them. It's not
a nice state of affairs, for now just undo the problematic parts of the change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372050
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 16 Sep 2019 23:41:19 +0000 (23:41 +0000)]
llvm-reduce: Make tests shell-independent by passing the interpreter on the command line rather than using #! in the test file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372049
91177308-0d34-0410-b5e6-
96231b3b80d8
David L. Jones [Mon, 16 Sep 2019 23:36:35 +0000 (23:36 +0000)]
Add libc to path mappings in git-llvm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372048
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Mon, 16 Sep 2019 22:54:52 +0000 (22:54 +0000)]
[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32
Add the missing piece of r372029.
Somehow when the patch for review D61961 was committed, only the test case
went in and the code didn't. This of course caused all kinds of build bot
breaks.
This patch just adds the code for that patch.
Author: Lei Huang
Differential revision: https://reviews.llvm.org/D61961
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372043
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Mon, 16 Sep 2019 22:45:17 +0000 (22:45 +0000)]
[Remarks] Allow remarks::Format::YAML to take a string table
It should be allowed to take a string table in case all the strings in
the remarks point there, but it shouldn't use it during serialization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372042
91177308-0d34-0410-b5e6-
96231b3b80d8
Joel E. Denny [Mon, 16 Sep 2019 21:22:29 +0000 (21:22 +0000)]
[lit] Make internal diff work in pipelines
When using lit's internal shell, RUN lines like the following
accidentally execute an external `diff` instead of lit's internal
`diff`:
```
# RUN: program | diff file -
# RUN: not diff file1 file2 | FileCheck %s
```
Such cases exist now, in `clang/test/Analysis` for example. We are
preparing patches to ensure lit's internal `diff` is called in such
cases, which will then fail because lit's internal `diff` cannot
currently be used in pipelines and doesn't recognize `-` as a
command-line option.
To enable pipelines, this patch moves lit's `diff` implementation into
an out-of-process script, similar to lit's `cat` implementation. A
follow-up patch will implement `-` to mean stdin.
Reviewed By: probinson, stella.stamenova
Differential Revision: https://reviews.llvm.org/D66574
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372035
91177308-0d34-0410-b5e6-
96231b3b80d8
Bardia Mahjour [Mon, 16 Sep 2019 20:44:15 +0000 (20:44 +0000)]
[NFC] Test commit access
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372033
91177308-0d34-0410-b5e6-
96231b3b80d8
DeForest Richards [Mon, 16 Sep 2019 20:29:56 +0000 (20:29 +0000)]
[Docs] Bug fix for docs homepage
Removes reference to non-existent Reference Documentation page.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372032
91177308-0d34-0410-b5e6-
96231b3b80d8
DeForest Richards [Mon, 16 Sep 2019 20:19:32 +0000 (20:19 +0000)]
[Docs] Adds Getting Started/Tutorials, Reference to LLVM docs homepage
Adds a section for Getting Started/Tutorials and Reference topics to the LLVM docs homepage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372031
91177308-0d34-0410-b5e6-
96231b3b80d8
Lei Huang [Mon, 16 Sep 2019 20:04:15 +0000 (20:04 +0000)]
[PowerPC] Cust lower fpext v2f32 to v2f64 from extract_subvector v4f32
This is a follow up patch from https://reviews.llvm.org/D57857 to handle
extract_subvector v4f32. For cases where we fpext of v2f32 to v2f64 from
extract_subvector we currently generate on P9 the following:
lxv 0, 0(3)
xxsldwi 1, 0, 0, 1
xscvspdpn 2, 0
xxsldwi 3, 0, 0, 3
xxswapd 0, 0
xscvspdpn 1, 1
xscvspdpn 3, 3
xscvspdpn 0, 0
xxmrghd 0, 0, 3
xxmrghd 1, 2, 1
stxv 0, 0(4)
stxv 1, 0(5)
This patch custom lower it to the following sequence:
lxv 0, 0(3) # load the v4f32 <w0, w1, w2, w3>
xxmrghw 2, 0, 0 # Produce the following vector <w0, w0, w1, w1>
xxmrglw 3, 0, 0 # Produce the following vector <w2, w2, w3, w3>
xvcvspdp 2, 2 # FP-extend to <d0, d1>
xvcvspdp 3, 3 # FP-extend to <d2, d3>
stxv 2, 0(5) # Store <d0, d1> (%vecinit11)
stxv 3, 0(4) # Store <d2, d3> (%vecinit4)
Differential Revision: https://reviews.llvm.org/D61961
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372029
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 16 Sep 2019 19:08:44 +0000 (19:08 +0000)]
[Coverage] Speed up file-based queries for coverage info, NFC
Speed up queries for coverage info in a file by reducing the amount of
time spent determining whether a function record corresponds to a file.
This gives a 36% speedup when generating a coverage report for `llc`.
The reduction is entirely in user time.
rdar://
54758110
Differential Revision: https://reviews.llvm.org/D67575
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372025
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 16 Sep 2019 19:08:41 +0000 (19:08 +0000)]
[Coverage] Assert that filenames in a TU are unique, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372024
91177308-0d34-0410-b5e6-
96231b3b80d8
Steven Wu [Mon, 16 Sep 2019 18:49:54 +0000 (18:49 +0000)]
[LTO][Legacy] Add new C inferface to query libcall functions
Summary:
This is needed to implemented the same approach as lld (implemented in r338434)
for how to handling symbols that can be generated by LTO code generator
but not present in the symbol table for linker that uses legacy C APIs.
libLTO is in charge of providing the list of symbols. Linker is in
charge of implementing the eager loading from static libraries using
the list of symbols.
rdar://problem/
52853974
Reviewers: tejohnson, bd1976llvm, deadalnix, espindola
Reviewed By: tejohnson
Subscribers: emaste, arichardson, hiraditya, MaskRay, dang, kledzik, mehdi_amini, inglorion, jkorous, dexonsmith, ributzka, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67568
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372021
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 16 Sep 2019 18:49:09 +0000 (18:49 +0000)]
[PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups
This fixes relocations against __profd_ symbols in discarded sections,
which is PR41380.
In general, instrumentation happens very early, and optimization and
inlining happens afterwards. The counters for a function are calculated
early, and after inlining, counters for an inlined function may be
widely referenced by other functions.
For C++ inline functions of all kinds (linkonce_odr &
available_externally mainly), instr profiling wants to deduplicate these
__profc_ and __profd_ globals. Otherwise the binary would be quite
large.
I made __profd_ and __profc_ comdat in r355044, but I chose to make
__profd_ internal. At the time, I was only dealing with coverage, and in
that case, none of the instrumentation needs to reference __profd_.
However, if you use PGO, then instrumentation passes add calls to
__llvm_profile_instrument_range which reference __profd_ globals. The
solution is to make these globals externally visible by using
linkonce_odr linkage for data as was done for counters.
This is safe because PGO adds a CFG hash to the names of the data and
counter globals, so if different TUs have different globals, they will
get different data and counter arrays.
Reviewers: xur, hans
Differential Revision: https://reviews.llvm.org/D67579
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372020
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Mon, 16 Sep 2019 18:28:22 +0000 (18:28 +0000)]
[ARM][Codegen] Autogenerate arm-cgp-casts.ll test.
Apparently it got broken by r372009 while i thought it was r372012.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372019
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 16 Sep 2019 17:30:33 +0000 (17:30 +0000)]
[X86][AVX] matchShuffleWithSHUFPD - add support for zeroable operands
Determine if all of the uses of LHS/RHS operands can be replaced with a zero vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372013
91177308-0d34-0410-b5e6-
96231b3b80d8
David Green [Mon, 16 Sep 2019 17:29:07 +0000 (17:29 +0000)]
[ARM] A predicate cast of a predicate cast is a predicate cast
The adds some very basic folding of PREDICATE_CASTS, removing cases when they
are chained together. These would already be removed eventually, as these are
lowered to copies. This just allows it to happen earlier, which can help other
simplifications.
Differential Revision: https://reviews.llvm.org/D67591
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372012
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Mon, 16 Sep 2019 16:18:24 +0000 (16:18 +0000)]
[SimplifyCFG] FoldTwoEntryPHINode(): consider *total* speculation cost, not per-BB cost
Summary:
Previously, if the threshold was 2, we were willing to speculatively
execute 2 cheap instructions in both basic blocks (thus we were willing
to speculatively execute cost = 4), but weren't willing to speculate
when one BB had 3 instructions and other one had no instructions,
even thought that would have total cost of 3.
This looks inconsistent to me.
I don't think `cmov`-like instructions will start executing
until both of it's inputs are available: https://godbolt.org/z/zgHePf
So i don't see why the existing behavior is the correct one.
Also, let's add it's own `cl::opt` for this threshold,
with default=4, so it is not stricter than the previous threshold:
will allow to fold when there are 2 BB's each with cost=2.
And since the logic has changed, it will also allow to fold when
one BB has cost=3 and other cost=1, or there is only one BB with cost=4.
This is an alternative solution to D65148:
This fix is mainly motivated by `signbit-like-value-extension.ll` test.
That pattern comes up in JPEG decoding, see e.g.
`Figure F.12 – Extending the sign bit of a decoded value in V`
of `ITU T.81` (JPEG specification).
That branch is not predictable, and it is within the innermost loop,
so the fact that that pattern ends up being stuck with a branch
instead of `select` (i.e. `CMOV` for x86) is unlikely to be beneficial.
This has great results on the final assembly (vanilla test-suite + RawSpeed): (metric pass - D67240)
| metric | old | new | delta | % |
| x86-mi-counting.NumMachineFunctions | 37720 | 37721 | 1 | 0.00% |
| x86-mi-counting.NumMachineBasicBlocks | 773545 | 771181 | -2364 | -0.31% |
| x86-mi-counting.NumMachineInstructions |
7488843 |
7486442 | -2401 | -0.03% |
| x86-mi-counting.NumUncondBR | 135770 | 135543 | -227 | -0.17% |
| x86-mi-counting.NumCondBR | 423753 | 422187 | -1566 | -0.37% |
| x86-mi-counting.NumCMOV | 24815 | 25731 | 916 | 3.69% |
| x86-mi-counting.NumVecBlend | 17 | 17 | 0 | 0.00% |
We significantly decrease basic block count, notably decrease instruction count,
significantly decrease branch count and very significantly increase `cmov` count.
Performance-wise, unsurprisingly, this has great effect on
target RawSpeed benchmark. I'm seeing 5 **major** improvements:
```
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_mean -0.3064 -0.3064 226.9913 157.4452 226.9800 157.4384
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_median -0.3057 -0.3057 226.8407 157.4926 226.8282 157.4828
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_stddev -0.4985 -0.4954 0.3051 0.1530 0.3040 0.1534
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_mean -0.1747 -0.1747 80.4787 66.4227 80.4771 66.4146
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_median -0.1742 -0.1743 80.4686 66.4542 80.4690 66.4436
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_stddev +0.6089 +0.5797 0.0670 0.1078 0.0673 0.1062
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_mean -0.1598 -0.1598 171.6996 144.2575 171.6915 144.2538
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_median -0.1598 -0.1597 171.7109 144.2755 171.7018 144.2766
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_stddev +0.4024 +0.3850 0.0847 0.1187 0.0848 0.1175
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_mean -0.0550 -0.0551 280.3046 264.8800 280.3017 264.8559
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_median -0.0554 -0.0554 280.2628 264.7360 280.2574 264.7297
Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_stddev +0.7005 +0.7041 0.2779 0.4725 0.2775 0.4729
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 49 vs 49
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_mean -0.0354 -0.0355 316.7396 305.5208 316.7342 305.4890
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_median -0.0354 -0.0356 316.6969 305.4798 316.6917 305.4324
Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_stddev +0.0493 +0.0330 0.3562 0.3737 0.3563 0.3681
```
That being said, it's always best-effort, so there will likely
be cases where this worsens things.
Reviewers: efriedma, craig.topper, dmgreen, jmolloy, fhahn, Carrot, hfinkel, chandlerc
Reviewed By: jmolloy
Subscribers: xbolva00, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67318
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372009
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 16 Sep 2019 16:15:25 +0000 (16:15 +0000)]
[InstCombine] remove unneeded one-use checks for icmp fold
Related folds were added in:
rL125734
...the code comment about register pressure is discussed in
more detail in:
https://bugs.llvm.org/show_bug.cgi?id=2698
But 10 years later, perf testing bzip2 with this change now
shows a slight (0.2% average) improvement on Haswell although
that's probably within test noise.
Given that this is IR canonicalization, we shouldn't be worried
about register pressure though; the backend should be able to
adjust for that as needed.
This is part of solving PR43310 the theoretically right way:
https://bugs.llvm.org/show_bug.cgi?id=43310
...ie, if we don't cripple basic transforms, then we won't
need to add special-case code to detect larger patterns.
rL371940 and rL371981 are related patches in this series.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372007
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 16 Sep 2019 15:33:40 +0000 (15:33 +0000)]
[InstCombine] move tests for icmp+add; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372004
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Cruickshank [Mon, 16 Sep 2019 15:20:10 +0000 (15:20 +0000)]
[ARM] Add patterns for BSWAP intrinsic on MVE
BSWAP can use the VREV instruction on MVE to produce better results than
expanding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372002
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Cruickshank [Mon, 16 Sep 2019 15:20:03 +0000 (15:20 +0000)]
[ARM] Add patterns for bitreverse intrinsic on MVE
BITREVERSE can use the VBRSR which will reverse and right shift.
Shifting right by 0 will just reverse the bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372001
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Cruickshank [Mon, 16 Sep 2019 15:19:56 +0000 (15:19 +0000)]
[ARM] Lower CTTZ on MVE
Lower CTTZ on MVE using VBRSR and VCLS which will reverse the bits and
count the leading zeros, equivalent to a count trailing zeros (CTTZ).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372000
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Cruickshank [Mon, 16 Sep 2019 15:19:49 +0000 (15:19 +0000)]
[ARM] Add patterns for CTLZ on MVE
CTLZ intrinsic can use the VCLS instruction on MVE, which produces
better results than expanding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371999
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 16 Sep 2019 15:19:11 +0000 (15:19 +0000)]
[ExecutionEngine] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of dyn_cast<> results - in these cases we can safely use cast<> directly as we know that these cases should all be the correct type, which is why its working atm and anyway cast<> will assert if they aren't.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371998
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Mon, 16 Sep 2019 14:56:26 +0000 (14:56 +0000)]
[LV] Add ARM MVE tail-folding tests
Now that the vectorizer can do tail-folding (rL367592), and the ARM backend
understands MVE masked loads/stores (rL371932), it's time to add the MVE
tail-folding equivalent of the X86 tests that I added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371996
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Mon, 16 Sep 2019 14:49:36 +0000 (14:49 +0000)]
[SystemZ] Call erase() on the right MBB in SystemZTargetLowering::emitSelect()
Since MBB was split *before* MI, the MI(s) will reside in JoinMBB (MBB) at
the point of erasing them, so calling StartMBB->erase() is actually wrong,
although it is "working" by all appearances.
Review: Ulrich Weigand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371995
91177308-0d34-0410-b5e6-
96231b3b80d8
Guillaume Chatelet [Mon, 16 Sep 2019 14:48:58 +0000 (14:48 +0000)]
[NFC] remove unused functions
Reviewers: courbet
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67616
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371994
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 16 Sep 2019 14:26:14 +0000 (14:26 +0000)]
AMDGPU/GlobalISel: Fail select of G_INSERT non-32-bit source
This was producing an illegal copy which would hit an assert
later. Error on selection for now until this is implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371993
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 16 Sep 2019 14:14:40 +0000 (14:14 +0000)]
AMDGPU/GlobalISel: Fix some broken run lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371992
91177308-0d34-0410-b5e6-
96231b3b80d8