OSDN Git Service
Davide Italiano [Mon, 8 Aug 2016 03:30:01 +0000 (03:30 +0000)]
[MC] Delete use of *structors_used.
Jim Grosbach and Kevin Enderby think those are not used anymore.
Originally submitted by: Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277973
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 8 Aug 2016 03:23:01 +0000 (03:23 +0000)]
[SimplifyLibCalls] Emit sqrt intrinsic instead of a libcall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277972
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 8 Aug 2016 01:30:53 +0000 (01:30 +0000)]
[SROA] Fix crash with lifetime intrinsic partially covering alloca.
Summary:
PromoteMemToReg looks specifically for the pattern
bitcast+lifetime.start (or a bitcast-equivalent GEP); any offset
will lead to an assertion failure.
Fixes https://llvm.org/bugs/show_bug.cgi?id=27999 .
Differential Revision: https://reviews.llvm.org/D22737
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277969
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 21:52:59 +0000 (21:52 +0000)]
[AVX-512] Improve lowering of inserting a single element into lowest element of a 512-bit vector of zeroes by using vmovq/vmovd/vmovss/vmovsd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277965
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 7 Aug 2016 20:27:03 +0000 (20:27 +0000)]
[SLC] Emit an intrinsic instead of a libcall for pow.
Differential Revision: https://reviews.llvm.org/D22104
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277963
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sun, 7 Aug 2016 20:18:04 +0000 (20:18 +0000)]
Revert r277905, it caused PR28894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277962
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 17:14:09 +0000 (17:14 +0000)]
[AVX-512] Add 512-bit logical operations to load folding tables. Add avx512f stack folding test and move some tests from the avx512vl test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277961
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 17:14:05 +0000 (17:14 +0000)]
[AVX-512] Add EVEX encoded floating point MAX/MIN instructions to the load folding tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277960
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Aug 2016 15:29:12 +0000 (15:29 +0000)]
[X86] lowerVectorShuffle - ensure that undefined mask elements only use SM_SentinelUndef
Help lowering and combining (which can specify SM_SentinelZero mask elements) share more shuffle matching code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277959
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 7 Aug 2016 13:05:58 +0000 (13:05 +0000)]
AVX-512: Changed lowering of BITCAST between i1 vectors and i8/i16/i32 integer values
Optimized lowering of BITCAST node. The BITCAST node can be replaced with COPY_TO_REG instead of KMOV.
It allows to suppress two opposite BITCAST operations and avoid redundant "movs".
Differential Revision: https://reviews.llvm.org/D23247
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277958
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Aug 2016 12:41:36 +0000 (12:41 +0000)]
[X86][AVX512BW] Add sext/zext AVX512BW 512-bit vector tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277957
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Aug 2016 12:10:46 +0000 (12:10 +0000)]
[X86][AVX512] Add sext/zext to 512-bit vector tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277956
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 7 Aug 2016 09:29:34 +0000 (09:29 +0000)]
AVX-512: Added a test for cmp intrinsics
This is a new test that should explore a current suboptimal sequence in passing values between cmp and kor intrinsics.
The code will be optimized in an upcoming patch.
Submitted bug here:
https://llvm.org/bugs/show_bug.cgi?id=28839
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277954
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 7 Aug 2016 07:58:12 +0000 (07:58 +0000)]
[InstSimplify] Fold gep (gep V, C), (sub 0, V) to C
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277952
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 7 Aug 2016 07:58:10 +0000 (07:58 +0000)]
[InstSimplify] Try hard to simplify pointer comparisons
Simplify ptrtoint comparisons involving operands with different source
types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277951
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 7 Aug 2016 07:58:00 +0000 (07:58 +0000)]
[InstCombine] Infer inbounds on geps of allocas
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277950
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 05:39:51 +0000 (05:39 +0000)]
[X86] Add commutable floating point max/min instructions to the load folding tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277949
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 05:39:48 +0000 (05:39 +0000)]
[AVX-512] Add andnps/andnpd to the avx512vl stack folding test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277948
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Aug 2016 05:39:46 +0000 (05:39 +0000)]
[X86] Simplify a shuffle mask copy. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277947
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Sun, 7 Aug 2016 01:56:54 +0000 (01:56 +0000)]
Revert "Revert "[LoopSimplify] Fix updating LCSSA after separating nested loops.""
This reverts commit r277901. Reaaply the commit as it looks like it has
nothing to do with the bots failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277946
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 7 Aug 2016 01:19:37 +0000 (01:19 +0000)]
[ExecutionEngine][RuntimeDyld] Move JITSymbol from ExecutionEngine to RuntimeDyld.
JITSymbol really belongs in RuntimeDyld. This should fix the llvm-rtdyld link
failures caused by r277943.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277945
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 7 Aug 2016 01:12:44 +0000 (01:12 +0000)]
[RuntimeDyld] Remove symbol that is unused as of r277943.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277944
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 7 Aug 2016 00:18:14 +0000 (00:18 +0000)]
[RuntimeDyld] Replace manual flag checks with JITSymbolFlags::fromObjectSymbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277943
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sat, 6 Aug 2016 22:36:26 +0000 (22:36 +0000)]
[ORC] Re-apply r277896, removing bogus triples and datalayouts that broke tests
on linux last time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277942
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 6 Aug 2016 21:28:56 +0000 (21:28 +0000)]
[libFuzzer] make libFuzzer work with a bit older clang versions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277941
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sat, 6 Aug 2016 21:23:29 +0000 (21:23 +0000)]
[libFuzzer] don't print bogus error message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277940
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Aug 2016 21:21:12 +0000 (21:21 +0000)]
[X86][AVX2] Improve sign/zero extension on AVX2 targets
Split extensions to large vectors into 256-bit chunks - the equivalent of what we do with pre-AVX2 into 128-bit chunks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277939
91177308-0d34-0410-b5e6-
96231b3b80d8
Gor Nishanov [Sat, 6 Aug 2016 21:11:10 +0000 (21:11 +0000)]
CoroSplit: Squash unused variable FnTrigger warning in NDEBUG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277938
91177308-0d34-0410-b5e6-
96231b3b80d8
Gor Nishanov [Sat, 6 Aug 2016 21:01:22 +0000 (21:01 +0000)]
[Coroutines] Passify the build bots. Remove restart-trigger.ll test for now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277937
91177308-0d34-0410-b5e6-
96231b3b80d8
Gor Nishanov [Sat, 6 Aug 2016 20:44:39 +0000 (20:44 +0000)]
[Coroutines] Part 5: Add CGSCC restart trigger
Summary:
CoroSplit pass processes the coroutine twice. First, it lets it go through
complete IPO optimization pipeline as a single function. It forces restart
of the pipeline by inserting an indirect call to an empty function "coro.devirt.trigger"
which is devirtualized by CoroElide pass that triggers a restart of the pipeline by CGPassManager.
(In later patches, when CoroSplit pass sees the same coroutine the second time, it splits it up,
adds coroutine subfunctions to the SCC to be processed by IPO pipeline.)
Documentation and overview is here: http://llvm.org/docs/Coroutines.html.
Upstreaming sequence (rough plan)
1.Add documentation. (https://reviews.llvm.org/D22603)
2.Add coroutine intrinsics. (https://reviews.llvm.org/D22659)
3.Add empty coroutine passes. (https://reviews.llvm.org/D22847)
4.Add coroutine devirtualization + tests.
ab) Lower coro.resume and coro.destroy (https://reviews.llvm.org/D22998)
c) Do devirtualization (https://reviews.llvm.org/D23229)
5.Add CGSCC restart trigger + tests. <= we are here
6.Add coroutine heap elision + tests.
7.Add the rest of the logic (split into more patches)
Reviewers: mehdi_amini, majnemer
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23234
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277936
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Aug 2016 19:31:52 +0000 (19:31 +0000)]
[AVX-512] Add SQRT/RCP14/RNDSCALE to hasUndefRegUpdate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277934
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Aug 2016 19:31:50 +0000 (19:31 +0000)]
[AVX-512] Add AVX-512 scalar CVT instructions to hasUndefRegUpdate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277933
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Aug 2016 19:31:47 +0000 (19:31 +0000)]
[AVX-512] Add AVX512 run line to a test and re-generate the checks. Future commits will refine some of the sequences.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277932
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Aug 2016 19:31:44 +0000 (19:31 +0000)]
[X86] Add VRCPSSr_Int, VRSQRTSSr_Int, VSQRTSSr_Int, and VSQRTSDr_Int to hasUndefRegUpdate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277931
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Aug 2016 18:40:28 +0000 (18:40 +0000)]
[X86][SSE] Enable commutation between MOVHLPS and UNPCKHPD
Assuming SSE2 is available then we can safely commute between these, removing some unnecessary register moves and improving memory folding opportunities.
VEX encoded versions don't benefit so I haven't added support to them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277930
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Sat, 6 Aug 2016 17:03:22 +0000 (17:03 +0000)]
[libfuzzer] do not warn about missing pcbuffer functions: they are new.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277927
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Aug 2016 13:46:09 +0000 (13:46 +0000)]
[X86][SSE] Regenerate SSE1 shuffle tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277925
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 6 Aug 2016 12:58:24 +0000 (12:58 +0000)]
[ARM] Don't copy MCInsts in loop. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277924
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 6 Aug 2016 12:33:46 +0000 (12:33 +0000)]
[Inliner] Use function_ref for functors which are never taken ownership of.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277922
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 6 Aug 2016 12:11:11 +0000 (12:11 +0000)]
[LoadCombine] Simplify code with a brace init. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277921
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Aug 2016 11:22:39 +0000 (11:22 +0000)]
[X86][SSE] Add 2 input shuffle support to matchBinaryVectorShuffle
Not actually used yet...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277919
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 6 Aug 2016 11:13:10 +0000 (11:13 +0000)]
Move helpers into anonymous namespaces. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277916
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 6 Aug 2016 08:37:12 +0000 (08:37 +0000)]
[CodeGen] Fix a -Wdocumentation warning
A parameter was documented with the wrong name.
No functionality change is intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277915
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 6 Aug 2016 08:16:00 +0000 (08:16 +0000)]
[ValueTracking] Teach computeKnownBits about [su]min/max
Reasoning about a select in terms of a min or max allows us to derive a
tigher bound on the result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277914
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 6 Aug 2016 06:21:02 +0000 (06:21 +0000)]
[CallGraphSCCPass] Use an ArrayRef instead of a pair of iterators
No functional change is intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277913
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sat, 6 Aug 2016 06:00:50 +0000 (06:00 +0000)]
[ADT] Make the triple test 1000x faster through more focused test cases.
The current approach isn't a long-term viable pattern. Given the set of
architectures A, vendors V, operating systems O, and environments E, it
does |A| * |V| * |O| * |E| * 4! tests. As LLVM grows, this test keeps
getting slower, despite my working very hard to make it get some
"optimizations" even in -O0 builds in order to lower the constant
factors. Fundamentally, we're doing an unreasonable amount of work.i
Looking at the specific thing being tested -- the goal seems very
clearly to be testing the *permutations*, not the *combinations*. The
combinations are driving up the complexity much more than anything else.
Instead, test every possible value for a given triple entry in every
permutation of *some* triple. This really seems to cover the core goal
of the test. Every single possible triple component is tested in every
position. But because we keep the rest of the triple constant, it does
so in a dramatically more scalable amount of time. With this model we do
(|A| + |V| + |O| + |E|) * 4! tests.
For me on a debug build, this goes from running for 19 seconds to 19
milliseconds, or a 1000x improvement. This makes a world of difference
for the critical path of 'ninja check-llvm' and other extremely common
workflows.
Thanks to Renato, Dean, and David for the helpful review comments and
helping me refine the explanation of the change.
Differential Revision: https://reviews.llvm.org/D23156
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277912
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sat, 6 Aug 2016 02:58:48 +0000 (02:58 +0000)]
[InstCombine] Don't coerce non-integral pointers to integers
Reviewers: majnemer
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D23231
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277910
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 6 Aug 2016 02:23:15 +0000 (02:23 +0000)]
Revert "(refs/bisect/bad) GVN-hoist: enable by default"
GVN-Hoist appears to miscompile llvm-testsuite
SingleSource/Benchmarks/Misc/fbench.c at the moment.
I filed http://llvm.org/PR28880
This reverts commit r277786.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277909
91177308-0d34-0410-b5e6-
96231b3b80d8
Gor Nishanov [Sat, 6 Aug 2016 02:16:35 +0000 (02:16 +0000)]
Part 4c: Coroutine Devirtualization: Devirtualize coro.resume and coro.destroy.
Summary:
This is the 4c patch of the coroutine series. CoroElide pass now checks if PostSplit coro.begin
is referenced by coro.subfn.addr intrinsics. If so replace coro.subfn.addrs with an appropriate coroutine
subfunction associated with that coro.begin.
Documentation and overview is here: http://llvm.org/docs/Coroutines.html.
Upstreaming sequence (rough plan)
1.Add documentation. (https://reviews.llvm.org/D22603)
2.Add coroutine intrinsics. (https://reviews.llvm.org/D22659)
3.Add empty coroutine passes. (https://reviews.llvm.org/D22847)
4.Add coroutine devirtualization + tests.
ab) Lower coro.resume and coro.destroy (https://reviews.llvm.org/D22998)
c) Do devirtualization <= we are here
5.Add CGSCC restart trigger + tests.
6.Add coroutine heap elision + tests.
7.Add the rest of the logic (split into more patches)
Reviewers: majnemer
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D23229
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277908
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sat, 6 Aug 2016 02:00:45 +0000 (02:00 +0000)]
Revert r277896.
It breaks ExecutionEngine/OrcLazy/weak-function.ll on most bots.
Script:
--
...
--
Exit Code: 1
Command Output (stderr):
--
Could not find main function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277907
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Sat, 6 Aug 2016 01:52:37 +0000 (01:52 +0000)]
CodeGen: If Convert blocks that would form a diamond when tail-merged.
The following function currently relies on tail-merging for if
conversion to succeed. The common tail of cond_true and cond_false is
extracted, and this then forms a diamond pattern that can be
successfully if converted.
If this block does not get extracted, either because tail-merging is
disabled or the threshold is higher, we should still recognize this
pattern and if-convert it.
define i32 @t2(i32 %a, i32 %b) nounwind {
entry:
%tmp1434 = icmp eq i32 %a, %b ; <i1> [#uses=1]
br i1 %tmp1434, label %bb17, label %bb.outer
bb.outer: ; preds = %cond_false, %entry
%b_addr.021.0.ph = phi i32 [ %b, %entry ], [ %tmp10, %cond_false ]
%a_addr.026.0.ph = phi i32 [ %a, %entry ], [ %a_addr.026.0, %cond_false ]
br label %bb
bb: ; preds = %cond_true, %bb.outer
%indvar = phi i32 [ 0, %bb.outer ], [ %indvar.next, %cond_true ]
%tmp. = sub i32 0, %b_addr.021.0.ph
%tmp.40 = mul i32 %indvar, %tmp.
%a_addr.026.0 = add i32 %tmp.40, %a_addr.026.0.ph
%tmp3 = icmp sgt i32 %a_addr.026.0, %b_addr.021.0.ph
br i1 %tmp3, label %cond_true, label %cond_false
cond_true: ; preds = %bb
%tmp7 = sub i32 %a_addr.026.0, %b_addr.021.0.ph
%tmp1437 = icmp eq i32 %tmp7, %b_addr.021.0.ph
%indvar.next = add i32 %indvar, 1
br i1 %tmp1437, label %bb17, label %bb
cond_false: ; preds = %bb
%tmp10 = sub i32 %b_addr.021.0.ph, %a_addr.026.0
%tmp14 = icmp eq i32 %a_addr.026.0, %tmp10
br i1 %tmp14, label %bb17, label %bb.outer
bb17: ; preds = %cond_false, %cond_true, %entry
%a_addr.026.1 = phi i32 [ %a, %entry ], [ %tmp7, %cond_true ], [ %a_addr.026.0, %cond_false ]
ret i32 %a_addr.026.1
}
Without tail-merging or diamond-tail if conversion:
LBB1_1: @ %bb
@ =>This Inner Loop Header: Depth=1
cmp r0, r1
ble LBB1_3
@ BB#2: @ %cond_true
@ in Loop: Header=BB1_1 Depth=1
subs r0, r0, r1
cmp r1, r0
it ne
cmpne r0, r1
bgt LBB1_4
LBB1_3: @ %cond_false
@ in Loop: Header=BB1_1 Depth=1
subs r1, r1, r0
cmp r1, r0
bne LBB1_1
LBB1_4: @ %bb17
bx lr
With diamond-tail if conversion, but without tail-merging:
@ BB#0: @ %entry
cmp r0, r1
it eq
bxeq lr
LBB1_1: @ %bb
@ =>This Inner Loop Header: Depth=1
cmp r0, r1
ite le
suble r1, r1, r0
subgt r0, r0, r1
cmp r1, r0
bne LBB1_1
@ BB#2: @ %bb17
bx lr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277905
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Sat, 6 Aug 2016 01:52:34 +0000 (01:52 +0000)]
IfConverter: Split ScanInstructions into 2 functions.
ScanInstructions is now 2 functions:
AnalyzeBranches and ScanInstructions. ScanInstructions also now takes a
pair of arguments delimiting the instructions to be scanned. This will
be used for forked diamond support to re-scan only a portion of the
block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277904
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Sat, 6 Aug 2016 01:52:33 +0000 (01:52 +0000)]
IfConversion: Document countDuplicatedInstructions. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277903
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Sat, 6 Aug 2016 01:52:31 +0000 (01:52 +0000)]
IfConversion: factor out 2 functions to skip debug instrs. NFC
Skipping debug instructions occurrs repeatedly, factor it out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277902
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Sat, 6 Aug 2016 01:48:51 +0000 (01:48 +0000)]
Revert "[LoopSimplify] Fix updating LCSSA after separating nested loops."
This reverts commit r277877.
Try to appease clang-x64-ninja-win7 buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277901
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sat, 6 Aug 2016 00:54:43 +0000 (00:54 +0000)]
[ORC] Add (partial) weak symbol support to the CompileOnDemand layer.
This adds partial support for weak functions to the CompileOnDemandLayer by
modifying the addLogicalModule method to check for existing stub definitions
before building a new stub for a weak function. This scheme is sufficient to
support ODR definitions, but fails for general weak definitions if strong
definition is encountered after the first weak definition. (A more extensive
refactor will be required to fully support weak symbols).
This patch does *not* add weak symbol support to RuntimeDyld: I hope to add
that in the near future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277896
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 6 Aug 2016 00:13:32 +0000 (00:13 +0000)]
Fix a -Wunused-const-variable due to a bug in clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277893
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sat, 6 Aug 2016 00:02:01 +0000 (00:02 +0000)]
[IRCE] Remove unused headers; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277892
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sat, 6 Aug 2016 00:01:56 +0000 (00:01 +0000)]
[IRCE] Preserve loop-simplify form
Fixes PR28764. Right now there is no way to test this, but (as
mentioned on the PR) with Michael Zolotukhin's yet to be checked in
LoopSimplify verfier, 8 of the llvm-lit tests for IRCE crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277891
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Aug 2016 23:12:31 +0000 (23:12 +0000)]
Resubmit "Make YAML support SmallVector"
This resubmits
a3770391c5fb64108d565e12f61dd77ce71b5b4f,
which was reverted due to breakages on non-Windows machines.
Due to differences in template instantiation rules on Microsoft
and non-Microsoft platforms, a member access restriction was
triggering on non-Microsoft compilers. Previously, a friend
declaration for std::vector<> had been introduced into the
DebugMap class to make the member access restriction pass,
but the introduction of support for SmallVector<> meant that
an additional friend declaration would need to be added.
This didn't really make a lot of sense since the user of the
macro is probably only using one type (SmallVector<>, vector<>,
etc) and we could in theory add support for even more types
to this macro in the future (e.g. std::deque), so rather than
add another friend declaration, I just made the type being
referenced a public nested typedef instead of a private nested
typedef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277888
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Aug 2016 22:42:46 +0000 (22:42 +0000)]
[InstCombine] refactor ctlz/cttz folds (NFCI)
Note that this fold really belongs in InstSimplify.
Refactoring here anyway as an intermediate step because
there's a planned addition to this function in D23134.
Differential Revision: https://reviews.llvm.org/D23223
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277883
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 5 Aug 2016 22:32:33 +0000 (22:32 +0000)]
Revert "Make YAML support SmallVector"
This breaks building dsymutil, causing my local build and many bots to
fail.
This reverts r277870.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277881
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 5 Aug 2016 22:09:14 +0000 (22:09 +0000)]
[MSSA] Use depth first iterator instead of custom version.
Summary:
Originally the plan was to use the custom worklist to do some block popping,
and because we don't actually need a visited set. The custom one we have
here is slightly broken, and it's not worth fixing vs using depth_first_iterator since we aren't going to go the route we originally
were.
Fixes PR28874
Reviewers: george.burgess.iv
Subscribers: llvm-commits, gberry
Differential Revision: https://reviews.llvm.org/D23187
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277880
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 5 Aug 2016 21:57:10 +0000 (21:57 +0000)]
CodeView: Remove an unused variable
It was breaking the -Werror build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277878
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Fri, 5 Aug 2016 21:52:58 +0000 (21:52 +0000)]
[LoopSimplify] Fix updating LCSSA after separating nested loops.
This fixes PR28825. The problem was that we only checked if a value from
a created inner loop is used in the outer loop, and fixed LCSSA for
them. But we missed to fixup LCSSA for values used in exits of the outer
loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277877
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Aug 2016 21:50:02 +0000 (21:50 +0000)]
Fix non portable include path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277876
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 5 Aug 2016 21:49:54 +0000 (21:49 +0000)]
PowerPC: Add a triple to this test
This is running opt without specifying a triple, which isn't correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277875
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 5 Aug 2016 21:47:20 +0000 (21:47 +0000)]
[MSSA] Match assert vs llvm_unreachable style in verification functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277873
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 5 Aug 2016 21:46:52 +0000 (21:46 +0000)]
Rewrite domination verifier to handle local domination as well.
Summary:
Rewrite domination verifier to handle local domination as well.
This catches a bug Geoff Berry noticed.
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23184
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277872
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Aug 2016 21:45:34 +0000 (21:45 +0000)]
[CodeView] Decouple record deserialization from visitor dispatch.
Until now, our use case for the visitor has been to take a stream of bytes
representing a type stream, deserialize the records in sequence, and do
something with them, where "something" is determined by how the user
implements a particular set of callbacks on an abstract class.
For actually writing PDBs, however, we want to do the reverse. We have
some kind of description of the list of records in their in-memory format,
and we want to process each one. Perhaps by serializing them to a byte
stream, or perhaps by converting them from one description format (Yaml)
to another (in-memory representation).
This was difficult in the current model because deserialization and
invoking the callbacks were tightly coupled.
With this patch we change this so that TypeDeserializer is itself an
implementation of the particular set of callbacks. This decouples
deserialization from the iteration over a list of records and invocation
of the callbacks. TypeDeserializer is initialized with another
implementation of the callback interface, so that upon deserialization it
can pass the deserialized record through to the next set of callbacks. In
a sense this is like an implementation of the Decorator design pattern,
where the Deserializer is a decorator.
This will be useful for writing Pdbs from yaml, where we have a
description of the type records in Yaml format. In this case, the visitor
implementation would have each visitation callback method implemented in
such a way as to extract the proper set of fields from the Yaml, and it
could maintain state that builds up a list of these records. Finally at
the end we can pass this information through to another set of callbacks
which serializes them into a byte stream.
Reviewed By: majnemer, ruiu, rnk
Differential Revision: https://reviews.llvm.org/D23177
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277871
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Aug 2016 21:45:19 +0000 (21:45 +0000)]
Make YAML support SmallVector
Currently YAML sequences require std::vectors. All of the methods that the
YAML parser accesses though are present in SmallVector, so there's no
reason we can't support SmallVector inherently. This patch does that.
Reviewed By: majnemer
Differential Revision: https://reviews.llvm.org/D23213
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277870
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Fri, 5 Aug 2016 21:23:29 +0000 (21:23 +0000)]
AMDGPU/SI: Increase SGPR limit to 96 on Tonga/Iceland
Summary:
This is the setting of the Vulkan closed source driver.
It decreases the max wave count from 10 to 8.
26010 shaders in 14650 tests
Totals:
VGPRS: 829593 -> 808440 (-2.55 %)
Spilled SGPRs: 81878 -> 42226 (-48.43 %)
Spilled VGPRs: 367 -> 358 (-2.45 %)
Scratch VGPRs: 1764 -> 1748 (-0.91 %) dwords per thread
Code Size:
36677864 ->
35923932 (-2.06 %) bytes
There is a massive decrease in SGPR spilling in general and -7.4% spilled
VGPRs for DiRT Showdown (= SGPRs spilled to scratch?)
Reviewers: arsenm, tstellarAMD, nhaehnle
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: https://reviews.llvm.org/D23034
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277867
91177308-0d34-0410-b5e6-
96231b3b80d8
Weiming Zhao [Fri, 5 Aug 2016 20:58:29 +0000 (20:58 +0000)]
[ARM] Constant Materialize: imms with specific value can be encoded into mov.w
Summary: Thumb2 supports encoding immediates with specific patterns into mov.w by splatting the low 8 bits into other bytes.
I'm resubmitting this patch. The test case in the original commit
r277610 does not specify triple, so builds with differnt default triple
will have different output.
This patch fixed trile as thumb-darwin-apple.
Reviewers: john.brawn, jmolloy, bruno
Subscribers: jmolloy, aemerson, rengolin, samparker, llvm-commits
Differential Revision: https://reviews.llvm.org/D23090
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277865
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 5 Aug 2016 20:53:35 +0000 (20:53 +0000)]
[FlattenCFG] Simplify + remove unused variable. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277864
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Fri, 5 Aug 2016 20:49:04 +0000 (20:49 +0000)]
Remove cold callsite heuristic that is not necessary because of cold callee heuristic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277863
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 5 Aug 2016 20:33:49 +0000 (20:33 +0000)]
[SCEV] Un-grep'ify tests; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277861
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Fri, 5 Aug 2016 20:28:41 +0000 (20:28 +0000)]
Replace hot-callsite based heuristic to use its own threshold parameter instead of share inline-hint parameter
Summary: Hot callsites should have higher threshold than inline hints. This patch uses separate threshold parameter for hot callsites.
Reviewers: davidxl, eraman
Subscribers: Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D22368
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277860
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Fri, 5 Aug 2016 20:09:53 +0000 (20:09 +0000)]
[sanitizers] trace buffer API to use user-allocated buffer.
Differential Revision: https://reviews.llvm.org/D23185
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277859
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 5 Aug 2016 19:51:00 +0000 (19:51 +0000)]
Update outdated comments in the new PM internals (NFC)
The analysis manager was made not optional and turned into a
reference instead of a pointer in r272978. Some comments were
still refering to the previous behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277857
91177308-0d34-0410-b5e6-
96231b3b80d8
Ivan Krasin [Fri, 5 Aug 2016 19:45:16 +0000 (19:45 +0000)]
WholeProgramDevirt: print remarks with devirtualized method names.
Summary:
Chrome on Linux uses WholeProgramDevirt for speed ups, and it's
important to detect regressions on both sides: the toolchain,
if fewer methods get devirtualized after an update, and Chrome,
if an innocently looking change caused many hot methods become
virtual again.
The need to track devirtualized methods is not Chrome-specific,
but it's probably the only user of the pass at this time.
Reviewers: kcc
Differential Revision: https://reviews.llvm.org/D23219
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277856
91177308-0d34-0410-b5e6-
96231b3b80d8
David Callahan [Fri, 5 Aug 2016 19:38:11 +0000 (19:38 +0000)]
[ADCE] Refactoring for new functionality (NFC)
Summary:
This is another refactoring to break up the one function into three logical components functions.
Another non-functional change before we start added in features.
Reviewers: nadav, mehdi_amini, majnemer
Subscribers: twoh, freik, llvm-commits
Differential Revision: https://reviews.llvm.org/D23102
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277855
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 5 Aug 2016 19:23:29 +0000 (19:23 +0000)]
[ConstantFolding] Don't create illegal (non-integral) inttoptrs
Reviewers: majnemer, arsenm
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D23182
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277854
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Aug 2016 19:09:25 +0000 (19:09 +0000)]
fix documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277853
91177308-0d34-0410-b5e6-
96231b3b80d8
David Callahan [Fri, 5 Aug 2016 18:38:19 +0000 (18:38 +0000)]
[AutoFDO] Fix handling of empty profiles
Summary:
If a profile has no samples for a function, then the function "entry count" is set to the value 0. Several places in the code test that if the Function::getEntryCount is defined at all. Here we change to treat a 0 entry count the same as undefined.
In particular, this fixes a problem in getLayoutSuccessorProbThreshold in MachineBlockPlacement.cpp where we use a different and inferior heuristic for laying out basic blocks.
Reviewers: danielcdh, dnovillo
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23082
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277849
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 5 Aug 2016 18:34:14 +0000 (18:34 +0000)]
[SCEV] Don't infinitely recurse on unreachable code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277848
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 5 Aug 2016 18:26:56 +0000 (18:26 +0000)]
[ORC] Change LogicalDylib::LogicalModuleHandle from an iterator to an index.
This prevents handles from being invalidated (through iterator invalidation)
when new modules are added.
No test-case yet: This bug was uncovered during work on an upcoming patch for
weak symbol support and the testcase for that feature will implicitly test for
correct behavior here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277847
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Fri, 5 Aug 2016 18:19:40 +0000 (18:19 +0000)]
Add the first of what will be a long line of additional error checks for invalid Mach-O files.
This is where an LC_SEGMENT load command has a fileoff field that
extends past the end of the file.
Also fix llvm-nm and llvm-size to remove the errorToErrorCode() call so error messages are printed.
And needed to update a few test cases now that they do print the error messages just a
bit differently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277845
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Fri, 5 Aug 2016 17:56:49 +0000 (17:56 +0000)]
Do not assign new discriminator for all intrinsics.
Summary: We do not care about intrinsic calls when assigning discriminators.
Reviewers: davidxl, dnovillo
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23212
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277843
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 5 Aug 2016 17:50:36 +0000 (17:50 +0000)]
GlobalISel: clear pending phis after MachineFunction translated
Test is just reordering the existing functions (it would trigger for any
function after one with a phi).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277841
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 5 Aug 2016 17:36:14 +0000 (17:36 +0000)]
[X86][SSE] Add initial support for 2 input target shuffle combining.
At the moment only the INSERTPS matching can actually use 2 inputs but the plumbing is now in place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277839
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 5 Aug 2016 17:16:40 +0000 (17:16 +0000)]
GlobalISel: IRTranslate PHI instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277835
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Kudrin [Fri, 5 Aug 2016 16:48:31 +0000 (16:48 +0000)]
Fix gdb pretty printers to work with Python 3.
Differential Revision: https://reviews.llvm.org/D23202
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277833
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Aug 2016 16:45:07 +0000 (16:45 +0000)]
Fix TargetParser unit tests for ARM / AArch64.
String pooling is not guaranteed by the standard, so if
you're comparing two different string literals for equality,
you have to use strcmp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277831
91177308-0d34-0410-b5e6-
96231b3b80d8
Gor Nishanov [Fri, 5 Aug 2016 16:27:33 +0000 (16:27 +0000)]
opt: Adding -O0 to opt tool
Summary:
Having -O0 in opt allows testing that -O0 optimization
pipeline is built correctly.
Reviewers: majnemer
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23208
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277829
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Fri, 5 Aug 2016 15:22:05 +0000 (15:22 +0000)]
[PowerPC] Wrong fast-isel codegen for VSX floating-point loads
There were two locations where fast-isel would generate a LFD instruction
with a target register class VSFRC instead of F8RC when VSX was enabled.
This can ccause invalid registers to be used in certain cases, like:
lfd 36, ...
instead of using a VSX load instruction. The wrong register number gets
silently truncated, causing invalid code to be generated.
The first place is PPCFastISel::PPCEmitLoad, which had multiple problems:
1.) The IsVSSRC and IsVSFRC flags are not initialized correctly, since they
are computed from resultReg, which is still zero at this point in many cases.
Fixed by changing the helper routines to operate on a register class instead
of a register and passing in UseRC.
2.) Even with this fixed, Is64VSXLoad is still wrong due to a typo:
bool Is32VSXLoad = IsVSSRC && Opc == PPC::LFS;
bool Is64VSXLoad = IsVSSRC && Opc == PPC::LFD;
The second line needs to use isVSFRC (like PPCEmitStore does).
3.) Once both the above are fixed, we're now generating a VSX instruction --
but an incorrect one, since generation of an indexed instruction with null
index is wrong. Fixed by copying the code handling the same issue in
PPCEmitStore.
The second place is PPCFastISel::PPCMaterializeFP, where we would emit an
LFD to load a constant from the literal pool, and use the wrong result
register class. Fixed by hardcoding a F8RC class even on systems
supporting VSX.
Fixes: https://llvm.org/bugs/show_bug.cgi?id=28630
Differential Revision: https://reviews.llvm.org/D22632
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277823
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhan Jun Liau [Fri, 5 Aug 2016 15:14:34 +0000 (15:14 +0000)]
[SystemZ] Add missing classes and instructions
Summary:
Add instruction formats E, RSI, SSd, SSE, and SSF.
Added BRXH, BRXLE, PR, MVCK, STRAG, and ECTG instructions to test out
those formats.
Reviewers: uweigand
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23179
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277822
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 5 Aug 2016 14:58:34 +0000 (14:58 +0000)]
Actually, r277337 was fine. Just kill the DAGs that made the test allow nondeterminism.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277821
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 5 Aug 2016 14:55:02 +0000 (14:55 +0000)]
[SimplifyCFG] Make range reduction code deterministic.
This generated IR based on the order of evaluation, which is different
between GCC and Clang. With that in mind you get bootstrap miscompares
if you compare a Clang built with GCC-built Clang vs. Clang built with
Clang-built Clang. Diagnosing that made my head hurt.
This also reverts commit r277337, which "fixed" the test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277820
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Aug 2016 14:50:11 +0000 (14:50 +0000)]
reduce tests; auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277819
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 5 Aug 2016 14:33:11 +0000 (14:33 +0000)]
[X86][SSE] Update the the target shuffle matches to use the effective mask's value type directly instead of via the input value type.
Preparation for adding 2 input support so we want to avoid unnecessary references to the input value type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277817
91177308-0d34-0410-b5e6-
96231b3b80d8