OSDN Git Service
Simon Pilgrim [Sun, 2 Jul 2017 14:16:25 +0000 (14:16 +0000)]
[X86][SSE] Attempt to combine 64-bit and 32-bit shuffles to unary shuffles before bit shifts
We are combining shuffles to bit shifts before unary permutes, which means we can't fold loads plus the destination register is destructive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306978
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 13:19:10 +0000 (13:19 +0000)]
[X86][SSE] Attempt to combine 64-bit and 16-bit shuffles to unary shuffles before bit shifts
We are combining shuffles to bit shifts before unary permutes, which means we can't fold loads plus the destination register is destructive
The 32-bit shuffles are a bit tricky and will be dealt with in a later patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306977
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 2 Jul 2017 12:56:10 +0000 (12:56 +0000)]
[X86][SSE] Add test showing missed opportunity to combine to pshuflw
We are combining shuffles to bit shifts before unary permutes, which means we can't fold loads plus the destination register is destructive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306976
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Sun, 2 Jul 2017 12:44:27 +0000 (12:44 +0000)]
fix trivial typos in documents; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306975
91177308-0d34-0410-b5e6-
96231b3b80d8
Mohammed Agabaria [Sun, 2 Jul 2017 12:16:15 +0000 (12:16 +0000)]
[X86][CM] update add\sub costs of vectors of 64 in X86\SLM arch
this patch updates the cost of addq\subq (add\subtract of vectors of 64bits)
based on the performance numbers of SLM arch.
Differential Revision: https://reviews.llvm.org/D33983
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306974
91177308-0d34-0410-b5e6-
96231b3b80d8
Gadi Haber [Sun, 2 Jul 2017 12:01:33 +0000 (12:01 +0000)]
[X86] Rerun "update_llc_test_checks" tool on CodeGen tests. NFC.
This is NFC after rerunning the "update_llc_test_checks.py" tool on the CodeGen X86 tests in order to submit a patch.
Minor differences due to added "End of Function" lines.
Reviewers: zvi
Differential Revision: https://reviews.llvm.org/D34933
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306973
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 2 Jul 2017 08:58:29 +0000 (08:58 +0000)]
[GlobalISel][X86] Support G_GLOBAL_VALUE operation.
Summary: Support G_GLOBAL_VALUE operation. For now most of the PIC configurations not implemented yet.
Reviewers: zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D34738
Conflicts:
test/CodeGen/X86/GlobalISel/regbankselect-X86_64.mir
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306972
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 2 Jul 2017 08:15:49 +0000 (08:15 +0000)]
[GlobalISel][X86] Support vector type G_UNMERGE_VALUES selection.
Summary:
Support vector type G_UNMERGE_VALUES selection.
For now G_UNMERGE_VALUES marked as legal for any type, so nothing to do in legalizer.
Reviewers: t.p.northover, qcolombet, zvi, guyblank
Reviewed By: guyblank
Subscribers: rovka, kristof.beyls, guyblank, llvm-commits
Differential Revision: https://reviews.llvm.org/D33665
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306971
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Sun, 2 Jul 2017 03:24:54 +0000 (03:24 +0000)]
fix trivial typos; NFC
suport -> support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306968
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 2 Jul 2017 01:15:51 +0000 (01:15 +0000)]
[InstCombine] Fold (a | b) ^ (~a | ~b) --> ~(a ^ b) and (a & b) ^ (~a & ~b) --> ~(a ^ b)
Summary:
I came across this while thinking about what would happen if one of the operands in this xor pattern was itself a inverted (A & ~B) ^ (~A & B)-> (A^B).
The patterns here assume that the (~a | ~b) will be demorganed to ~(a & b) first. Though I wonder if there's a multiple use case that would prevent the demorgan.
Reviewers: spatel
Reviewed By: spatel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34870
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306967
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 2 Jul 2017 00:07:18 +0000 (00:07 +0000)]
[CodeExtractor] Remove unneded and commented out debugging stmts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306966
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:42:16 +0000 (16:42 +0000)]
[X86][RDSEED] Split off i64 intrinsic tests and test i16/i32 on 32-bit target as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306961
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:41:12 +0000 (16:41 +0000)]
[X86][RDRAND] Split off i64 intrinsic tests and test i16/i32 on 32-bit target as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306960
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:34:29 +0000 (16:34 +0000)]
[X86] Removed reference to update_test_checks.py
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306959
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 1 Jul 2017 16:32:02 +0000 (16:32 +0000)]
[X86][AVX] Remove duplicate autogeneration note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306958
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Sat, 1 Jul 2017 07:12:15 +0000 (07:12 +0000)]
fix trivial typos, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306952
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 1 Jul 2017 06:46:09 +0000 (06:46 +0000)]
[SelectionDAGBuilder] Use EVT::getVectorVT instead of MVT::getVectorVT to prevent a crash if the type isn't a simple VT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306950
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sat, 1 Jul 2017 05:23:13 +0000 (05:23 +0000)]
[AVR] Remove a bunch of now-obselete tests
The fixups in these instructions are now lowered into relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306947
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Sat, 1 Jul 2017 03:59:54 +0000 (03:59 +0000)]
Revert "Revert "Replace trivial use of external rc.exe by writing our own .res file.""
Summary:
This reverts commit
51931072a7c9a52540baf76fc30ef391d2529a2f.
This revert was originally done because the integrations of the new
WindowsResource library into LLD was causing error in chromium, due to
bugs in how resource sections were handled. These bugs were fixed,
meaning that the features may be reintegrated.
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D34922
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306941
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 1 Jul 2017 03:41:53 +0000 (03:41 +0000)]
Remove the default ARMSubtarget from the ARM TargetMachine.
This enables us to ensure better LTO and code generation in the face of module linking.
Remove a report_fatal_error from the TargetMachine and replace it with an assert in ARMSubtarget - and remove the test that depended on the error. The assertion will still fire in the case that we were reporting before, but error reporting needs to be in front end tools if possible for options parsing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306939
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 1 Jul 2017 03:29:33 +0000 (03:29 +0000)]
[Cloner] Re-map simplfied cloned instructions.
This commit pretty much rolls back the logic added in r306495
as in the testcase provided we simplify an `icmp` looking through
a PHI that hasn't been mapped yet.
I think instsimplify shouldn't do threading over select/phis or
just looking through phis in general, but this is what we have
now. Also, add a test to prevent this from happening in case somebody
wants to modify this code again.
Briefly discussed with Kyle Butt (thanks Kyle!).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306938
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:10 +0000 (03:24 +0000)]
Recommit "r306541 - Add zero-length check to memcpy/memset load store loop expansion""
With fix for use-after-free errors. We can't add the new branch and
remove the old one until we are done with the Builder constructed for
the block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306937
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:09 +0000 (03:24 +0000)]
Revert "r306473 - re-commit r306336: Enable vectorizer-maximize-bandwidth by default."
This still breaks PPC tests we have. I'll forward reproduction
instructions to dehao.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306936
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:08 +0000 (03:24 +0000)]
re-commit r306336: Enable vectorizer-maximize-bandwidth by default.
Differential Revision: https://reviews.llvm.org/D33341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306935
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:07 +0000 (03:24 +0000)]
revert r306336 for breaking ppc test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306934
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:06 +0000 (03:24 +0000)]
Enable vectorizer-maximize-bandwidth by default.
Summary:
vectorizer-maximize-bandwidth is generally useful in terms of performance. I've tested the impact of changing this to default on speccpu benchmarks on sandybridge machines. The result shows non-negative impact:
spec/2006/fp/C++/444.namd 26.84 -0.31%
spec/2006/fp/C++/447.dealII 46.19 +0.89%
spec/2006/fp/C++/450.soplex 42.92 -0.44%
spec/2006/fp/C++/453.povray 38.57 -2.25%
spec/2006/fp/C/433.milc 24.54 -0.76%
spec/2006/fp/C/470.lbm 41.08 +0.26%
spec/2006/fp/C/482.sphinx3 47.58 -0.99%
spec/2006/int/C++/471.omnetpp 22.06 +1.87%
spec/2006/int/C++/473.astar 22.65 -0.12%
spec/2006/int/C++/483.xalancbmk 33.69 +4.97%
spec/2006/int/C/400.perlbench 33.43 +1.70%
spec/2006/int/C/401.bzip2 23.02 -0.19%
spec/2006/int/C/403.gcc 32.57 -0.43%
spec/2006/int/C/429.mcf 40.35 +0.27%
spec/2006/int/C/445.gobmk 26.96 +0.06%
spec/2006/int/C/456.hmmer 24.4 +0.19%
spec/2006/int/C/458.sjeng 27.91 -0.08%
spec/2006/int/C/462.libquantum 57.47 -0.20%
spec/2006/int/C/464.h264ref 46.52 +1.35%
geometric mean +0.29%
The regression on 453.povray seems real, but is due to secondary effects as all hot functions are bit-identical with and without the flag.
I started this patch to consult upstream opinions on this. It will be greatly appreciated if the community can help test the performance impact of this change on other architectures so that we can decided if this should be target-dependent.
Reviewers: hfinkel, mkuper, davidxl, chandlerc
Reviewed By: chandlerc
Subscribers: rengolin, sanjoy, javed.absar, bjope, dorit, magabari, RKSimon, llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D33341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306933
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:06 +0000 (03:24 +0000)]
Another test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306932
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:05 +0000 (03:24 +0000)]
Still debugging
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306931
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:05 +0000 (03:24 +0000)]
Still test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306930
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 1 Jul 2017 03:24:00 +0000 (03:24 +0000)]
Another test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306929
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 1 Jul 2017 02:55:22 +0000 (02:55 +0000)]
Rewrite ARM execute only support to avoid the use of a command line flag and unqualified ARMSubtarget lookup.
Paired with a clang commit to use the new behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306927
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Sat, 1 Jul 2017 01:35:55 +0000 (01:35 +0000)]
[ObjectYAML] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306925
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sat, 1 Jul 2017 01:18:12 +0000 (01:18 +0000)]
[AVR] Update AVRASmBackend from API change in r306906
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306923
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Sat, 1 Jul 2017 00:45:50 +0000 (00:45 +0000)]
[X86] Move GISel accessor initialization from TargetMachine to Subtarget.
NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306921
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Sat, 1 Jul 2017 00:45:45 +0000 (00:45 +0000)]
[ARM] Move GISel accessor initialization from TargetMachine to Subtarget.
NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306920
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Sat, 1 Jul 2017 00:23:01 +0000 (00:23 +0000)]
[Dominators] Reapply r306892, r306893, r306893.
This reverts commit r306907 and reapplies the patches in the title.
The patches used to make one of the
CodeGen/ARM/2011-02-07-AntidepClobber.ll test to fail because of a
missing null check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306919
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 30 Jun 2017 23:49:53 +0000 (23:49 +0000)]
A little wordsmithing of dominator verification comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306916
91177308-0d34-0410-b5e6-
96231b3b80d8
Sameer AbuAsal [Fri, 30 Jun 2017 23:49:07 +0000 (23:49 +0000)]
[RegisterCoalescer] Account for instructions deleted by removePartialredunduncy and in WorkList
Summary:
removePartialRedundency optimization introduces a state in the
RegisterCoalescer where an instruction pointed to in the WorkList
is deleted from the MBB and then removed from the ErasedList.
This patch updates the ErasedList to be used globally by not erasing
erased Instructions from it to solve the problem.
The patch also accounts for the case where an Instruction was previously
deleted and the same memory was reused by BuildMI to create a new instruction.
Reviewers: kparzysz, qcolombet
Reviewed By: qcolombet
Subscribers: MatzeB, qcolombet, llvm-commits
Differential Revision: https://reviews.llvm.org/D34902
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306915
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 30 Jun 2017 23:46:58 +0000 (23:46 +0000)]
Add comments on sibling and parent properties in dominator trees
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306913
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gesiak [Fri, 30 Jun 2017 23:14:53 +0000 (23:14 +0000)]
[ORE] Add diagnostics hotness threshold
Summary:
Add an option to prevent diagnostics that do not meet a minimum hotness
threshold from being output. When generating optimization remarks for
large codebases with a ton of cold code paths, this option can be used
to limit the optimization remark output at a reasonable size. Discussion of
this change can be read here:
http://lists.llvm.org/pipermail/llvm-dev/2017-June/114377.html
Reviewers: anemet, davidxl, hfinkel
Reviewed By: anemet
Subscribers: qcolombet, javed.absar, fhahn, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D34867
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306912
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Fri, 30 Jun 2017 23:06:03 +0000 (23:06 +0000)]
[CodeView, PDB] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306911
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 22:56:28 +0000 (22:56 +0000)]
Revert "[Dominators] Teach IDF to use level information"
This reverts commit r306894.
Revert "[Dominators] Add NearestCommonDominator verification"
This reverts commit r306893.
Revert "[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries"
This reverts commit r306892.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306907
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 30 Jun 2017 22:47:27 +0000 (22:47 +0000)]
Rename and adjust processFixupValue.
It was not processing any value. All that it ever did was force
relocations, so name it shouldForceRelocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306906
91177308-0d34-0410-b5e6-
96231b3b80d8
David L. Jones [Fri, 30 Jun 2017 21:58:55 +0000 (21:58 +0000)]
[lit] Factor out listdir logic shared by different test formats.
Summary:
The lit test formats use largely the same logic for discovering tests. There are
some superficial differences in the logic, which seem reasonable enough to
handle in a single routine.
At a high level, the common goal is "look for files that end with one of these
suffixes, and skip anything starting with a dot." The balance of the logic
specific to ShTest and GoogleTest collapses quite a bit, so that
getTestsInDirectory is only a couple of lines around a call to the new function.
Reviewers: zturner, MatzeB, modocache
Subscribers: sanjoy, llvm-commits
Differential Revision: https://reviews.llvm.org/D34855
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306895
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 21:51:43 +0000 (21:51 +0000)]
[Dominators] Teach IDF to use level information
Summary: This patch teaches IteratedDominanceFrontier to use the level information stored in DomTreeNodes instead of calculating it manually.
Reviewers: dberlin, sanjoy, davide
Reviewed By: davide
Subscribers: davide, llvm-commits
Differential Revision: https://reviews.llvm.org/D34703
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306894
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 21:51:43 +0000 (21:51 +0000)]
[Dominators] Add NearestCommonDominator verification
Summary:
This patch adds another verification function for checking correctness of findNearestCommonDominator.
For every edge from U to V in the input graph, `NCD(U, V) == IDom(V) or V` -- the new function checks this condition.
Reviewers: dberlin, sanjoy, chandlerc
Reviewed By: dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34575
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306893
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 21:51:40 +0000 (21:51 +0000)]
[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries
Summary:
This patch makes DomTreeNodes keep their level (depth) in the DomTree. By having this information always available, it is possible to speedup and simplify findNearestCommonDominator and certain dominance queries.
In the future, level information will be also needed to perform incremental updates.
My testing doesn't show any noticeable performance differences after applying this patch. There may be some improvements when other passes are thought to use the level information.
Reviewers: dberlin, sanjoy, chandlerc, grosser
Reviewed By: dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34548
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306892
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 21:48:57 +0000 (21:48 +0000)]
Remove spurious semicolons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306891
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 21:35:00 +0000 (21:35 +0000)]
[llvm-pdbutil] Output the symbol offset when dumping.
Type records have a unique type index, but symbol records do
not. Instead, symbol records refer to other symbol records
by referencing their offset in the symbol stream. In a sense
this is the analogue of the TypeIndex, but we are not printing
it in the dumper. Printing it not only gives us more useful
information when manually investigating the contents of a PDB,
but also allows us to write better tests by enabling us to
verify that fields that reference other symbol records do
so correctly.
Differential Revision: https://reviews.llvm.org/D34906
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306890
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 30 Jun 2017 21:33:44 +0000 (21:33 +0000)]
[codeview] Use the first valid source location at the top of every MBB
If the instructions at the beginning of the block have no location,
we're better off using the location of the first instruction in the
current basic block. At the very least, that instruction post-dominates
this one, whereas if we don't emit a .cv_loc directive, we end up using
the potentially invalid location that falls through from the previous
block.
We could probably do better here by emitting some kind of ".cv_loc end"
directive that stops the line table entry of the previous .cv_loc
directive from bleeding out of its basic block. This would improve the
line table when an entire MBB has no valid location info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306889
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 30 Jun 2017 21:21:40 +0000 (21:21 +0000)]
[Hexagon] Implement frame pointer elimination with -fomit-frame-pointer
It applies to leaf functions that are otherwise not required to have
a frame pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306888
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinar Temirbulatov [Fri, 30 Jun 2017 21:16:26 +0000 (21:16 +0000)]
[SLPVectorizer] Add isOdd() helper function, NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306887
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 30 Jun 2017 21:09:34 +0000 (21:09 +0000)]
[InstCombine] Replace an unnecessary use of a matcher with just an isa and a cast. NFC
We aren't looking through any levels of IR here so I don't think we need the power of a matcher or the temporary variable it requires.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306885
91177308-0d34-0410-b5e6-
96231b3b80d8
Ayal Zaks [Fri, 30 Jun 2017 21:05:06 +0000 (21:05 +0000)]
[LV] Sink casts to unravel first order recurrence
Check if a single cast is preventing handling a first-order-recurrence Phi,
because the scheduling constraints it imposes on the first-order-recurrence
shuffle are infeasible; but they can be made feasible by moving the cast
downwards. Record such casts and move them when vectorizing the loop.
Differential Revision: https://reviews.llvm.org/D33058
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306884
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 30 Jun 2017 20:56:57 +0000 (20:56 +0000)]
Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
This is a short-term fix for PR33650 aimed to get the modules build bots green again.
Remove all the places where we use the LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
macros to try to locally specialize a global template for a global type. That's
not how C++ works.
Instead, we now centrally define how to format vectors of fundamental types and
of string (std::string and StringRef). We use flow formatting for the former
cases, since that's the obvious right thing to do; in the latter case, it's
less clear what the right choice is, but flow formatting is really bad for some
cases (due to very long strings), so we pick block formatting. (Many of the
cases that were using flow formatting for strings are improved by this change.)
Other than the flow -> block formatting change for some vectors of strings,
this should result in no functionality change.
Differential Revision: https://reviews.llvm.org/D34907
Corresponding updates to clang, clang-tools-extra, and lld to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306878
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:54:24 +0000 (20:54 +0000)]
[Hexagon] Guard the generation of lookup table
The llvm flag "-hexagon-emit-lookup-tables" guards the generation
of lookup table generated from a switch statement.
Differential Revision: https://reviews.llvm.org/D34819
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306877
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 30 Jun 2017 20:43:40 +0000 (20:43 +0000)]
[SystemZ] Add all remaining instructions
This adds all remaining instructions that were still missing, mostly
privileged and semi-privileged system-level instructions. These are
provided for use with the assembler and disassembler only.
This brings the LLVM assembler / disassembler to parity with the
GNU binutils tools.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306876
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 30 Jun 2017 20:27:36 +0000 (20:27 +0000)]
GlobalISel: add G_IMPLICIT_DEF instruction.
It looks like there are two target-independent but not GISel instructions that
need legalization, IMPLICIT_DEF and PHI. These are already anomalies since
their operands have important LLTs attached, so to make things more uniform it
seems like a good idea to add generic variants. Starting with G_IMPLICIT_DEF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306875
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:21:48 +0000 (20:21 +0000)]
[Hexagon] Emit jump tables in text section based on a flag
This patch adds a new LLVM flag -hexagon-emit-jt-text which is defaulted to
"false". The value "true" emits the switch generated jump tables in text section.
Differential Revision: https://reviews.llvm.org/D34820
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306872
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:20:00 +0000 (20:20 +0000)]
Revert "[Hexagon] Guard the generation of lookup table"
This reverts commit
ae521f4192c3ed0202c047fec993cb59133dd1a0.
Wrong commit message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306871
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:10:28 +0000 (20:10 +0000)]
[Hexagon] Guard the generation of lookup table
The llvm flag "-hexagon-emit-lookup-tables" guards the generation
of lookup table from a switch statement.
Differential Revision: https://reviews.llvm.org/D34819
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306869
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:00:01 +0000 (20:00 +0000)]
[SimplifyCFG] Update the name of switch generated lookup table.
This patch appends the name of the function to the switch generated lookup
table. This will ease the visual debugging in identifying the function the table
is generated from.
Differential Revision: https://reviews.llvm.org/D34817
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306867
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gesiak [Fri, 30 Jun 2017 19:56:55 +0000 (19:56 +0000)]
[ORE] Remove old "diagnostic hotness" spelling
Summary:
Depends on https://reviews.llvm.org/D34865.
With the Clang uses of the old spelling having been removed in
https://reviews.llvm.org/D34865, get rid of the old "diagnostic hotness"
spellings in favor of the new "diagnostics hotness".
Reviewers: anemet, davidxl
Reviewed By: anemet
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34866
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306866
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 30 Jun 2017 19:51:02 +0000 (19:51 +0000)]
ARM: fix big-endian 64-bit cmpxchg.
On big-endian machines the high and low parts of the value accessed by ldrexd
and strexd are swapped around. To account for this we swap inputs and outputs
in ISelLowering.
Patch by Bharathi Seshadri.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306865
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 30 Jun 2017 19:49:05 +0000 (19:49 +0000)]
Make 0 argument getSubtargetImpl functions for the X86, AArch64, and PPC targets deleted so that no one is tempted to use them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306864
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 30 Jun 2017 19:20:54 +0000 (19:20 +0000)]
[PowerPC] auto-generate check lines; NFC
The existing check lines were more flexible, but these are
small enough tests that there shouldn't be much question
about register allocation. I've been hand-modifying this
file as I change the CGP memcmp expansion, but that's
more error-prone and time-consuming than just running the
update script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306861
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 30 Jun 2017 18:58:29 +0000 (18:58 +0000)]
[InstCombine] Add m_BitReverse pattern match helper. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306860
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 30 Jun 2017 18:48:33 +0000 (18:48 +0000)]
Completely disable git/svn version checking if not needed.
Working with git on a branch I find it really annoying that committing
a change causes ninja to think that stuff needs to be rebuilt.
With this change at least nothing in llvm needs to be rebuild when
something is committed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306858
91177308-0d34-0410-b5e6-
96231b3b80d8
Erich Keane [Fri, 30 Jun 2017 18:44:33 +0000 (18:44 +0000)]
Fix opt --help ordering of available optimizations.
Introduced in -r283004, the PassNameParser sorts Optimization options in
reverse. This is because the commit replaced a compare function with "<"
(which would seemingly be proper based on the name of the comparison function).
The result is the 'true' result is converted to '1', which is inverted.
This patch fixes this by replacing the '<' operator call on StringRef with a
call to the StringRef compare function. It also renames the function to better
reflect its meaning.
Differential Revision: https://reviews.llvm.org/D34831
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306857
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 18:25:07 +0000 (18:25 +0000)]
Fix test broken by parameter mixup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306856
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 30 Jun 2017 18:22:51 +0000 (18:22 +0000)]
Drop the LLVM mangler escape when printing the IR name in assembly comments
I'm tired of seeing this:
.globl "?Test@@YAXXZ" # -- Begin function ^A?Test@@YAXXZ
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306855
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Fri, 30 Jun 2017 18:16:35 +0000 (18:16 +0000)]
Fix bug in symbol generation for resource COFF
Symbols in the resource COFF file should be for .rsrc$02, where the
actual resource data is, not .rsrc$01, which contains the directory
tree.
Differential Revision: https://reviews.llvm.org/D34832
Patch by Joe Ranieri.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306853
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 18:15:47 +0000 (18:15 +0000)]
[llvm-pdbutil] Add the ability to dump the dependency tree for a type
Previously we had the -type-index option which would dump the record of
a single, but we had no way to follow the dependency graph backwards and
also dump all dependent types.
Having this option makes test-writing better, because we can limit the
test to only those records that are of importance for the thing we're
trying to test, which allows us to use things like CHECK-NEXT to reduce
fragility.
Differential Revision: https://reviews.llvm.org/D34899
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306852
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gesiak [Fri, 30 Jun 2017 18:13:59 +0000 (18:13 +0000)]
[ORE] Unify spelling as "diagnostics hotness"
Summary:
To enable profile hotness information in diagnostics output, Clang takes
the option `-fdiagnostics-show-hotness` -- that's "diagnostics", with an
"s" at the end. Clang also defines `CodeGenOptions::DiagnosticsWithHotness`.
LLVM, on the other hand, defines
`LLVMContext::getDiagnosticHotnessRequested` -- that's "diagnostic", not
"diagnostics". It's a small difference, but it's confusing, typo-inducing, and
frustrating.
Add a new method with the spelling "diagnostics", and "deprecate" the
old spelling.
Reviewers: anemet, davidxl
Reviewed By: anemet
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D34864
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306848
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 30 Jun 2017 18:00:14 +0000 (18:00 +0000)]
[X86][SSE] Pulled common variables to top of matchUnaryPermuteVectorShuffle. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306847
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Fri, 30 Jun 2017 17:57:07 +0000 (17:57 +0000)]
[RuntimeUnrolling] Add logic for loops with multiple exit blocks
Summary:
Runtime unrolling is done for loops with a single exit block and a
single exiting block (and this exiting block should be the latch block).
This patch adds logic to support unrolling in the presence of multiple exit
blocks (which also means multiple exiting blocks).
Currently this is under an off-by-default option and is supported when
epilog code is generated. Support in presence of prolog code will be in
a future patch (we just need to add more tests, and update comments).
This patch is essentially an implementation patch. I have not added any
heuristic (in terms of branches added or code size) to decide when
this should be enabled.
Reviewers: mkuper, sanjoy, reames, evstupac
Reviewed by: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33001
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306846
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Fri, 30 Jun 2017 16:50:51 +0000 (16:50 +0000)]
[DWARF] Don't include TestingSupport in LLVM_LINK_COMPONENTS.
This fixes a cmake configuration issue when LLVM is configured with no targets.
Instead we need to add TestingSupport directly with target_link_libraries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306842
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Kuderski [Fri, 30 Jun 2017 16:33:04 +0000 (16:33 +0000)]
[Dominators] Do not perform expensive checks by default. Fix PR33656.
Summary:
Some transforms assume that DT.verifyDomInfo() is not expensive and call it even when ENABLE_EXPENSIVE_CHECKS is not set.
This patch disables expensive Dominator Tree verification (reachability, parent property, sibling property) to fix
[[ https://bugs.llvm.org/show_bug.cgi?id=33656 | PR33656 ]].
Note that this is only a temporary fix.
Reviewers: dberlin, chapuni, kparzysz, grosser
Reviewed By: dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306839
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 16:05:03 +0000 (16:05 +0000)]
Revert "[lit] Clean output directories before running tests."
This reverts commit
da6318a92fba793e4f2447ec478b001392d57d43.
This is causing failures on some build bots due to what appears
to be some kind of lit ordering dependency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306833
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 30 Jun 2017 16:01:30 +0000 (16:01 +0000)]
[lit] Clean output directories before running tests.
Presently lit leaks files in the tests' output directories.
Specifically, if a test creates output files, lit makes no
effort to remove them prior to the next test run. This is
problematic because it leads to false positives whenever a
test passes because stale files were present. In general
it is a source of flakiness that should be removed.
This patch addresses this by building the list of all test
directories that are part of the current run set, and then
deleting those directories and recreating them anew. This
gives each test a clean baseline to start from.
Differential Revision: https://reviews.llvm.org/D34732
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306832
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Fri, 30 Jun 2017 15:44:27 +0000 (15:44 +0000)]
[MIPS] Handle PIC load address macro instructions in N64.
In particular, use CALL16 (similar to O32) for address loads into T9 for certain
cases. Otherwise use a %got_disp relocation to load the address of a symbol.
Small offsets (small enough to fit in a 16-bit signed immediate) can be used and
are added to the symbol address after it is loaded from the GOT. Larger offsets
are currently unsupported and result in an error from the assembler.
Reviewers: sdardis
Reviewed By: sdardis
Patch by: John Baldwin
Subscribers: llvm-commits, seanbruno, arichardson, emaste, dim
Differential Revision: https://reviews.llvm.org/D33948
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306831
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Fri, 30 Jun 2017 14:37:32 +0000 (14:37 +0000)]
[SLP] A test for limiting vectorization of instructions, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306828
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Fri, 30 Jun 2017 14:03:24 +0000 (14:03 +0000)]
[LTO] Remove values from non-prevailing comdats
Summary:
When linking a regular LTO module, if it has any non-prevailing values
(dropped to available_externally) in comdats, we need to do more than
just remove those values from their comdat. We also remove all values
from that comdat, so as to avoid leaving an incomplete comdat.
This is necessary in case we are compiling in mixed regular and ThinLTO
mode, since the resulting regularLTO native object is always linked into
the final binary first. We need to prevent the linker from selecting an
incomplete comdat that was not the prevailing copy.
Fixes PR32980.
Reviewers: pcc, rafael
Subscribers: mehdi_amini, david2050, llvm-commits, inglorion
Differential Revision: https://reviews.llvm.org/D34803
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306826
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 30 Jun 2017 13:26:17 +0000 (13:26 +0000)]
Remove unnecessary commented out argument. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306824
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 30 Jun 2017 12:56:29 +0000 (12:56 +0000)]
[SystemZ] Add missing high-word facility instructions
There are a few instructions provided by the high-word facility (z196)
that we cannot easily exploit for code generation. This patch at least
adds those missing instructions for the assembler and disassembler.
This means that now all nonprivileged instructions up to z13 are
supported by the LLVM assembler / disassembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306821
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Fri, 30 Jun 2017 12:56:02 +0000 (12:56 +0000)]
Revert "[DAG] Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset"
This reverts commit r306819 which appears be exposing underlying
issues in a stage1 ppc64be build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306820
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Fri, 30 Jun 2017 12:23:41 +0000 (12:23 +0000)]
[DAG] Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset
As discussed in D34087, rewrite areNonVolatileConsecutiveLoads using
generic checks. Also, propagate missing local handling from there to
BaseIndexOffset checks.
Tests of note:
* test/CodeGen/X86/build-vector* - Improved.
* test/CodeGen/BPF/undef.ll - Improved store alignment allows an
additional store merge
* test/CodeGen/X86/clear_upper_vector_element_bits.ll - This is a
case we already do not handle well. Here, the DAG is improved, but
scheduling causes a code size degradation.
Reviewers: RKSimon, craig.topper, spatel, andreadb, filcab
Subscribers: nemanjai, llvm-commits
Differential Revision: https://reviews.llvm.org/D34472
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306819
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 30 Jun 2017 11:59:53 +0000 (11:59 +0000)]
CREDITS.TXT: Update myself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306818
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 30 Jun 2017 11:23:59 +0000 (11:23 +0000)]
[X86] Updated 32-bit memcmp tests to run with/without SSE2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306816
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikolai Bozhenov [Fri, 30 Jun 2017 10:39:09 +0000 (10:39 +0000)]
Revert of r306525: "Canonicalize clamp of float types to minmax"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306815
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Fri, 30 Jun 2017 10:31:03 +0000 (10:31 +0000)]
[YAML] - Teach yaml2obj/obj2yaml to work with numeric relocation values.
That may be useful if we want to produce or parse object containing
broken relocation values using yaml2obj/obj2yaml.
Previously that was impossible because only enum values were parsed
correctly, this patch allows to put any numeric value as a
relocation type.
Differential revision: https://reviews.llvm.org/D34758
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306814
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Fri, 30 Jun 2017 10:09:01 +0000 (10:09 +0000)]
[DWARF] - Simplify HandleExpectedError implementation in DWARFDebugInfoTest
Current implementation looks a bit confusing. It looks like it should
report/print something on error, but it does not do that.
It silently drops a error message when creating triple, though
this behavior is fine generally.
For example if LLVM configured with -DLLVM_TARGETS_TO_BUILD=ARM and
our host is windows, it is expected that we will be unable to
create "i386-pc-windows-msvc" target.
Patch introduces isConfigurationSupported() function that checks
if current configuration is supported for each test and returns early if not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306812
91177308-0d34-0410-b5e6-
96231b3b80d8
Ilya Biryukov [Fri, 30 Jun 2017 09:47:17 +0000 (09:47 +0000)]
Fixed misplaced table border in the docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306811
91177308-0d34-0410-b5e6-
96231b3b80d8
Ilya Biryukov [Fri, 30 Jun 2017 09:46:45 +0000 (09:46 +0000)]
Added Dockerfiles to build clang from sources.
Reviewers: klimek, chandlerc, mehdi_amini
Reviewed By: klimek, mehdi_amini
Subscribers: mehdi_amini, jlebar, llvm-commits
Differential Revision: https://reviews.llvm.org/D34197
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306810
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Fri, 30 Jun 2017 09:11:50 +0000 (09:11 +0000)]
fix trivial typos, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306808
91177308-0d34-0410-b5e6-
96231b3b80d8
Kristof Beyls [Fri, 30 Jun 2017 08:26:20 +0000 (08:26 +0000)]
[GlobalISel] Make multi-step legalization work.
In r301116, a custom lowering needed to be introduced to be able to
legalize 8 and 16-bit divisions on ARM targets without a division
instruction, since 2-step legalization (WidenScalar from 8 bit to 32
bit, then Libcall the 32-bit division) doesn't work.
This fixes this and makes this kind of multi-step legalization, where
first the size of the type needs to be changed and then some action is
needed that doesn't require changing the size of the type,
straighforward to specify.
Differential Revision: https://reviews.llvm.org/D32529
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306806
91177308-0d34-0410-b5e6-
96231b3b80d8
Ayal Zaks [Fri, 30 Jun 2017 08:02:35 +0000 (08:02 +0000)]
[LV] Optimize for size when vectorizing loops with tiny trip count
It may be detrimental to vectorize loops with very small trip count, as various
costs of the vectorized loop body as well as enclosing overheads including
runtime tests and scalar iterations may outweigh the gains of vectorizing. The
current cost model measures the cost of the vectorized loop body only, expecting
it will amortize other costs, and loops with known or expected very small trip
counts are not vectorized at all. This patch allows loops with very small trip
counts to be vectorized, but under OptForSize constraints, which ensure the cost
of the loop body is dominant, having no runtime guards nor scalar iterations.
Patch inspired by D32451.
Differential Revision: https://reviews.llvm.org/D34373
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306803
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 30 Jun 2017 07:37:42 +0000 (07:37 +0000)]
[InstCombine] Add test cases to demonstrate failure to fold (a | b) ^ (~a | ~b) --> ~(a ^ b) and its commuted variants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306801
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 30 Jun 2017 07:37:41 +0000 (07:37 +0000)]
[InstCombine] In foldXorToXor, move the commutable matcher from the LHS match to the RHS match. No meaningful change intended.
There are two conditions ORed here with similar checks and each contain two matches that must be true for the if to succeed. With the commutable match on the first half of the OR then both ifs basically have the same first part and only the second part distinguishs. With this change we move the commutable match to second half and make the first half unique.
This caused some tests to change because we now produce a commuted result, but this shouldn't matter in practice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306800
91177308-0d34-0410-b5e6-
96231b3b80d8
Hiroshi Inoue [Fri, 30 Jun 2017 07:17:53 +0000 (07:17 +0000)]
fix trivial typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306798
91177308-0d34-0410-b5e6-
96231b3b80d8