OSDN Git Service
Easwaran Raman [Thu, 11 Aug 2016 03:58:05 +0000 (03:58 +0000)]
Make more fields of InlineParams Optional.
Differential revision: https://reviews.llvm.org/D23386
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278312
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 11 Aug 2016 00:56:46 +0000 (00:56 +0000)]
[Statepoints] Minor cosmetic change; NFC
The verification failure message was missing a space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278309
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Thu, 11 Aug 2016 00:20:03 +0000 (00:20 +0000)]
[MachOYAML] Don't output empty ExportTrie
The YAML representation was always outputting the root node of an export trie even if the trie was empty. While this doesn't really have any functional impact, it does add visual clutter to the yaml file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278307
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 10 Aug 2016 23:02:41 +0000 (23:02 +0000)]
GlobalISel: support same ConstantExprs as Instructions.
It's more than just inttoptr, but the others can't be tested until we have
support for non-trivial constants (they currently get unavoidably folded to a
ConstantInt).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278303
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Shen [Wed, 10 Aug 2016 22:35:38 +0000 (22:35 +0000)]
[ADT] Move LLVM_ATTRIBUTE_UNUSED_RESULT to the function, otherwise gcc 4.8 complains about it.
It's a fix for the original patch r278251.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278298
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 10 Aug 2016 22:13:48 +0000 (22:13 +0000)]
GlobalISel: add tests forgotten in r278293.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278296
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 10 Aug 2016 21:48:24 +0000 (21:48 +0000)]
[LangRef] Fix formatting (no semantic change)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278294
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 10 Aug 2016 21:44:01 +0000 (21:44 +0000)]
GlobalISel: implement simple function calls on AArch64.
We're still limited in the arguments we support, but this at least handles the
basic cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278293
91177308-0d34-0410-b5e6-
96231b3b80d8
Changpeng Fang [Wed, 10 Aug 2016 21:15:30 +0000 (21:15 +0000)]
AMDGPU/SI: Implement amdgcn image intrinsics with sampler
Summary:
This patch define and implement amdgcn image intrinsics with sampler.
1. define vdata type to be llvm_anyfloat_ty, address type to be llvm_anyfloat_ty,
and rsrc type to be llvm_anyint_ty. As a result, we expect the intrinsics name
to have three suffixes to overload each of these three types;
2. D128 as well as two other flags are implied in the three types, for example,
if you use v8i32 as resource type, then r128 is 0!
3. don't expose TFE flag, and other flags are exposed in the instruction order:
unrm, glc, slc, lwe and da.
Differential Revision: http://reviews.llvm.org/D22838
Reviewed by:
arsenm and tstellarAMD
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278291
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Wed, 10 Aug 2016 21:15:22 +0000 (21:15 +0000)]
Changed sign of LastCallToStaticBouns
Summary:
I think it is much better this way.
When I firstly saw line:
Cost += InlineConstants::LastCallToStaticBonus;
I though that this is a bug, because everywhere where the cost is being reduced
it is usuing -=.
Reviewers: eraman, tejohnson, mehdi_amini
Subscribers: llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23222
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278290
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Wed, 10 Aug 2016 21:03:27 +0000 (21:03 +0000)]
Codegen: Don't tail-duplicate blocks with un-analyzable fallthrough.
If AnalyzeBranch can't analyze a block and it is possible to
fallthrough, then duplicating the block doesn't make sense, as only one
block can be the layout predecessor for the un-analyzable fallthrough.
Submitted wit a test case, but NOTE: the test case doesn't currently
fail. However, the test case fails with D20505 and would have saved me
some time debugging.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278288
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Wed, 10 Aug 2016 20:45:56 +0000 (20:45 +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.
Fixed a regression in the original commit. Need to un-reverse branches after
reversing them, or other conversions go awry.
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@278287
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 10 Aug 2016 20:11:35 +0000 (20:11 +0000)]
Disable sancov tests failing due to apparent endianness issues
Undoes some of the effect of r278271
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278285
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 10 Aug 2016 20:08:19 +0000 (20:08 +0000)]
[sancov] Port sancov -print-coverage-pcs to COFF
The export table is not considered part of the object file symbol table,
so we have to look through it separately.
Reviewers: kcc
Differential Revision: https://reviews.llvm.org/D23321
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278284
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Wed, 10 Aug 2016 19:50:14 +0000 (19:50 +0000)]
Fix UB in APInt::ashr
i64 -1, whose sign bit is the 0th one, can't be left shifted without invoking UB.
https://reviews.llvm.org/D23362
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278280
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 10 Aug 2016 19:20:02 +0000 (19:20 +0000)]
AMDGPU: s_setpc_b64 should be an indirect branch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278278
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 10 Aug 2016 19:11:51 +0000 (19:11 +0000)]
AMDGPU: Set sizes on control flow pseudos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278276
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 10 Aug 2016 19:11:48 +0000 (19:11 +0000)]
AMDGPU: Remove empty file comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278275
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 10 Aug 2016 19:11:45 +0000 (19:11 +0000)]
AMDGPU: Remove unnecessary cast
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278274
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 10 Aug 2016 19:11:42 +0000 (19:11 +0000)]
AMDGPU: Change insertion point of si_mask_branch
Insert before the skip branch if one is created.
This is a somewhat more natural placement relative
to the skip branches, and makes it possible to implement
analyzeBranch for skip blocks.
The test changes are mostly due to a quirk where
the block label is not emitted if there is a terminator
that is not also a branch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278273
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 10 Aug 2016 19:11:36 +0000 (19:11 +0000)]
AMDGPU: Use CreateStackObject instead of CreateSpillStackObject
I'm not sure what the difference is, but no other target
uses this for emergency spill slots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278272
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 10 Aug 2016 19:03:18 +0000 (19:03 +0000)]
[sancov] Run more sancov tests on non-x86-Linux machines
Add the $arch-registered-target features that clang uses to disable
tests that require a registered backend, so that we can run the sancov
tests on Windows. LLVM's lit suite did not appear to have a per-test way
to do this, and I would rather not split up the sancov tests into
architecture directories.
Split out of https://reviews.llvm.org/D23321
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278271
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 10 Aug 2016 19:00:11 +0000 (19:00 +0000)]
[x86, AVX] allow FP vector select folding to bitwise logic ops (PR28895)
This handles the case in:
https://llvm.org/bugs/show_bug.cgi?id=28895
...but we are not getting all of the possibilities yet.
Eg, we use 'X86::FANDN' for scalar FP select combines.
That enhancement is filed as:
https://llvm.org/bugs/show_bug.cgi?id=28925
Differential Revision: https://reviews.llvm.org/D23337
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278270
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Wed, 10 Aug 2016 18:56:35 +0000 (18:56 +0000)]
[IndVarSimplify] Eliminate zext of a signed IV when the IV is known to be non-negative
Patch by Li Huang
Differential Revision: https://reviews.llvm.org/D18867
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278269
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Wed, 10 Aug 2016 18:51:14 +0000 (18:51 +0000)]
LiveIntervalAnalysis: fix a crash in repairOldRegInRange
Summary:
See the new test case for one that was (non-deterministically) crashing
on trunk and deterministically hit the assertion that I added in D23302.
Basically, the machine function contains a sequence
DS_WRITE_B32 %vreg4, %vreg14:sub0, ...
DS_WRITE_B32 %vreg4, %vreg14:sub0, ...
%vreg14:sub1<def> = COPY %vreg14:sub0
and SILoadStoreOptimizer::mergeWrite2Pair merges the two DS_WRITE_B32
instructions into one before calling repairIntervalsInRange.
Now repairIntervalsInRange wants to repair %vreg14, in particular, and
ends up trying to repair %vreg14:sub1 as well, but that only becomes
active _after_ the range that is to be repaired, hence the crash due
to LR.find(...) == LR.begin() at the start of repairOldRegInRange.
I believe that just skipping those subrange is fine, but again, not too
familiar with that code.
Reviewers: MatzeB, kparzysz, tstellarAMD
Subscribers: llvm-commits, MatzeB
Differential Revision: https://reviews.llvm.org/D23303
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278268
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Wed, 10 Aug 2016 18:47:19 +0000 (18:47 +0000)]
[ValueTracking] An improvement to IR ValueTracking on Non-negative Integers
Patch by Li Huang
Differential Revision: https://reviews.llvm.org/D18777
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278267
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 18:40:36 +0000 (18:40 +0000)]
[Hexagon] Remove unused variants of LO/HI instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278266
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Wed, 10 Aug 2016 18:36:18 +0000 (18:36 +0000)]
Codegen: Tail Merge: Be less aggressive with special cases.
This change makes it possible for tail-duplication and tail-merging to
be disjoint. By being less aggressive when merging during layout, there are no
overlapping cases between tail-duplication and tail-merging, provided the
thresholds are disjoint.
There is a remaining TODO to benchmark the succ_size() test for non-layout tail
merging.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278265
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 18:10:29 +0000 (18:10 +0000)]
[X86][SSE] Dropped blend(insertps(x,y),zero) combine - this is now handled by target shuffle chain combining
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278260
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Shen [Wed, 10 Aug 2016 18:08:38 +0000 (18:08 +0000)]
[ADT] Removed synthesized constructor introduced in r278251, since MSVC doesn't support them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278259
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 10 Aug 2016 18:05:50 +0000 (18:05 +0000)]
TargetOpcodes: Rewrite the documentation for SUBREG_TO_REG
Differential Revision: https://reviews.llvm.org/D22708
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278258
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 18:05:47 +0000 (18:05 +0000)]
[Hexagon] Simplify the SplitConst32/64 pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278256
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 17:56:24 +0000 (17:56 +0000)]
[Hexagon] Add extra patterns for single-precision min/max instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278252
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Shen [Wed, 10 Aug 2016 17:52:09 +0000 (17:52 +0000)]
[ADT] Add make_scope_exit().
Summary: make_scope_exit() is described in C++ proposal p0052r2, which uses RAII to do cleanup works at scope exit.
Reviewers: chandlerc
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22796
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278251
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Wed, 10 Aug 2016 17:49:11 +0000 (17:49 +0000)]
Fix LCSSA increased compile time
We are seeing r276077 drastically increasing compiler time for our larger
benchmarks in PGO profile generation build (both clang based and IR based
mode) -- it can be 20x slower than without the patch (like from 30 secs to
780 secs)
The increased time are all in pass LCSSA. The problematic code is about
PostProcessPHIs after use-rewrite. Note that the InsertedPhis from ssa_updater
is accumulating (never been cleared). Since the inserted PHIs are added to the
candidate for each rewrite, The earlier ones will be repeatedly added. Later
when adding the new PHIs to the work-list, we don't check the duplication
either. This can result in extremely long work-list that containing tons of
duplicated PHIs.
This patch fixes the issue by hoisting the code out of the loop.
Differential Revision: http://reviews.llvm.org/D23344
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278250
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 17:22:24 +0000 (17:22 +0000)]
[Hexagon] Fix table-gen decode conflict warnings for CONST32/64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278247
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 10 Aug 2016 16:51:18 +0000 (16:51 +0000)]
GlobalISel: fixup copy/paste comment error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278246
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 10 Aug 2016 16:51:14 +0000 (16:51 +0000)]
GlobalISel: avoid inserting redundant COPYs for bitcasts.
If the value produced by the bitcast hasn't been referenced yet, we can simply
reuse the input register avoiding an unnecessary COPY instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278245
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 16:46:36 +0000 (16:46 +0000)]
[Hexagon] Use integer instructions for floating point immediates
Floating point instructions use general purpose registers, so the few
instructions that can put floating point immediates into registers are,
in fact, integer instruction. Use them explicitly instead of having
pseudo-instructions specifically for dealing with floating point values.
Simplify the constant loading instructions (from sdata) to have only two:
one for 32-bit values and one for 64-bit values: CONST32 and CONST64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278244
91177308-0d34-0410-b5e6-
96231b3b80d8
Gor Nishanov [Wed, 10 Aug 2016 16:40:39 +0000 (16:40 +0000)]
[Coroutines] Part 6: Elide dynamic allocation of a coroutine frame when possible
Summary:
A particular coroutine usage pattern, where a coroutine is created, manipulated and
destroyed by the same calling function, is common for coroutines implementing
RAII idiom and is suitable for allocation elision optimization which avoid
dynamic allocation by storing the coroutine frame as a static `alloca` in its
caller.
coro.free and coro.alloc intrinsics are used to indicate which code needs to be suppressed
when dynamic allocation elision happens:
```
entry:
%elide = call i8* @llvm.coro.alloc()
%need.dyn.alloc = icmp ne i8* %elide, null
br i1 %need.dyn.alloc, label %coro.begin, label %dyn.alloc
dyn.alloc:
%alloc = call i8* @CustomAlloc(i32 4)
br label %coro.begin
coro.begin:
%phi = phi i8* [ %elide, %entry ], [ %alloc, %dyn.alloc ]
%hdl = call i8* @llvm.coro.begin(i8* %phi, i32 0, i8* null,
i8* bitcast ([2 x void (%f.frame*)*]* @f.resumers to i8*))
```
and
```
%mem = call i8* @llvm.coro.free(i8* %hdl)
%need.dyn.free = icmp ne i8* %mem, null
br i1 %need.dyn.free, label %dyn.free, label %if.end
dyn.free:
call void @CustomFree(i8* %mem)
br label %if.end
if.end:
...
```
If heap allocation elision is performed, we replace coro.alloc with a static alloca on the caller frame and coro.free with null constant.
Also, we need to make sure that if there are any tail calls referencing the coroutine frame, we need to remote tail call attribute, since now coroutine frame lives on the stack.
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. (https://reviews.llvm.org/D23234)
6.Add coroutine heap elision + tests. <= we are here
7.Add the rest of the logic (split into more patches)
Reviewers: mehdi_amini, majnemer
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D23245
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278242
91177308-0d34-0410-b5e6-
96231b3b80d8
Roger Ferrer Ibanez [Wed, 10 Aug 2016 16:39:58 +0000 (16:39 +0000)]
Fix build break of VS 2013 debug builds
In debug mode extra macros are enabled for several C++ algorithms. Some of them
may cause unfortunate build failures.
This commit adds a redundant operator() to work around one of those troublesome
macros which was hit accidentally by change r278012.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278241
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 16:23:53 +0000 (16:23 +0000)]
[Hexagon] Delete HexagonSelectCCInfo.td
This file is not used. The location assignment of call arguments and
return values is implemented directly in HexagonISelLowering.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278237
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 10 Aug 2016 16:20:33 +0000 (16:20 +0000)]
[Hexagon] Remove unneeded/unused ISD opcodes ARGEXTEND and FCONST32
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278236
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 15:15:56 +0000 (15:15 +0000)]
[X86][XOP] Tweak vpermil2pd test to stop it being combined away
The target shuffle combined to a BLENDPD pattern which we will shortly add support for.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278233
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 15:13:49 +0000 (15:13 +0000)]
[X86][SSE] Regenerate vector shift lowering tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278232
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 10 Aug 2016 15:13:15 +0000 (15:13 +0000)]
[LVI] Handle conditions in the form of (cond1 && cond2)
Teach LVI how to gather information from conditions in the form of (cond1 && cond2). Our out-of-tree front-end emits range checks in this form.
Reviewed By: sanjoy
Differential Revision: http://reviews.llvm.org/D23200
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278231
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 10 Aug 2016 15:06:11 +0000 (15:06 +0000)]
use different comparison predicates for better test coverage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278229
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 14:15:41 +0000 (14:15 +0000)]
[X86][SSE] Add support for combining target shuffles to MOVSS/MOVSD
Only do this on pre-SSE41 targets where we should be lowering to BLENDPS/BLENDPD instead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278228
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 10 Aug 2016 13:51:01 +0000 (13:51 +0000)]
Add a test case for r278217 "[LVI] Relax the assertion about LVILatticeVal type in getConstantRange"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278226
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 10 Aug 2016 13:38:07 +0000 (13:38 +0000)]
[LVI] NFC. Make getValueFromCondition return LVILatticeValue instead of changing reference argument
Instead of returning bool and setting LVILatticeValue reference argument return LVILattice value. Use overdefined value to denote the case when we didn't gather any information from the condition.
This change was separated from the review "[LVI] Handle conditions in the form of (cond1 && cond2)" (https://reviews.llvm.org/D23200#inline-199531). Once getValueFromCondition returns LVILatticeValue we can cache the result in Visited map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278224
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 10 Aug 2016 13:08:34 +0000 (13:08 +0000)]
Teach CorrelatedValuePropagation to mark adds as no wrap
This is a resubmission of previously reverted r277592. It was hitting overly strong assertion in getConstantRange which was relaxed in r278217.
Use LVI to prove that adds do not wrap. The change is motivated by https://llvm.org/bugs/show_bug.cgi?id=28620 bug and it's the first step to fix that problem.
Reviewed By: sanjoy
Differential Revision: http://reviews.llvm.org/D23059
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278220
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 12:55:25 +0000 (12:55 +0000)]
[X86][SSE] Only treat SM_SentinelUndef as UNDEF in shuffle mask predicates
isUndefOrEqual and isUndefOrInRange treated all -ve shuffle mask values as UNDEF, now it has to be SM_SentinelUndef (-1)
We already have asserts to check that lowered SHUFFLE_VECTOR indices are in the range -1 <= index < 2*masksize (or masksize for unary shuffles)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278218
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Wed, 10 Aug 2016 12:54:54 +0000 (12:54 +0000)]
[LVI] Relax the assertion about LVILatticeVal type in getConstantRange
The problem was triggered by my recent change in CVP (D23059). Current code expected that integer constants are represented by constantrange LVILatticeVal and never represented as LVILatticeVal with constant tag. That is true for ConstantInt constants, although ConstantExpr integer type constants are legally represented as constant LVILatticeVal.
This code fails with CVP change in:
@b = global i32 0, align 4
define void @test6(i32 %a) {
bb:
%add = add i32 %a, ptrtoint (i32* @b to i32)
ret void
}
Currently getConstantRange code is not executed by any of the upstream passes. I'm going to add a test case to test/Transforms/CorrelatedValuePropagation/add.ll once I resubmit the CVP change.
Reviewed By: sanjoy
Differential Revision: http://reviews.llvm.org/D23194
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278217
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 12:34:23 +0000 (12:34 +0000)]
[X86][SSE] Reorder shuffle mask undef helper predicates. NFCI
To make it easier for a more complex helper to use a simpler one
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278216
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 12:26:40 +0000 (12:26 +0000)]
[X86][SSE] Regenerate SSE1 tests
Properly demonstrate the nasty codegen we get for vselect without integer vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278215
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 12:24:19 +0000 (12:24 +0000)]
Regenerate test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278214
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 10 Aug 2016 10:50:53 +0000 (10:50 +0000)]
[DAGCombine] Avoid INSERT_SUBVECTOR reinsertions (PR28678)
If the input vector to INSERT_SUBVECTOR is another INSERT_SUBVECTOR, and this inserted subvector replaces the last insertion, then insert into the common source vector.
i.e.
INSERT_SUBVECTOR( INSERT_SUBVECTOR( Vec, SubOld, Idx ), SubNew, Idx ) --> INSERT_SUBVECTOR( Vec, SubNew, Idx )
Differential Revision: https://reviews.llvm.org/D23330
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278211
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 10 Aug 2016 09:34:34 +0000 (09:34 +0000)]
[ARM] Improve sxta{b|h} and uxta{b|h} tests
Created a Thumb2 predicated pattern matcher that uses Thumb2 and
HasT2ExtractPack and used it to redefine the patterns for sxta{b|h}
and uxta{b|h}. Also used the similar patterns to fill in isel pattern
gaps for the corresponding instructions in the ARM backend.
The patch is mainly changes to tests since most of this functionality
appears not to have been tested.
Differential Revision: https://reviews.llvm.org/D23273
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278207
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 10 Aug 2016 07:41:26 +0000 (07:41 +0000)]
[x86] Fix a bug in the auto-upgrade from r276416 where we failed to give
a sufficiently low alignment for the IR load created.
There is no test case because we don't have any test cases for the *IR*
produced by the autoupgrade, only the x86 assembly, and it happens that
the x86 assembly for this intrinsic as it is tested in the autoupgrade
path just happens to not produce a separate load instruction where we
might have observed the alignment.
I'm going to follow up on the original commit to suggest getting
IR-level testing in addition to the asm level testing here so that we
can see and test these kinds of issues. We might never get an x86
instruction out with an alignment constraint, but we could stil
miscompile code by folding against the alignment marked on (or inferred
for in this case) the load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278203
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 10 Aug 2016 06:33:32 +0000 (06:33 +0000)]
[SimplifyLibCalls] Restore the old behaviour, emit a libcall.
Hal pointed out that the semantic of our intrinsic and the libc
call are slightly different. Add a comment while I'm here to
explain why we can't emit an intrinsic. Thanks Hal!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278200
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Wed, 10 Aug 2016 00:48:04 +0000 (00:48 +0000)]
Do not directly use inline threshold cl options in cost analysis.
This adds an InlineParams struct which is populated from the command line options by getInlineParams and passed to getInlineCost for the call analyzer to use.
Differential revision: https://reviews.llvm.org/D22120
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278189
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Wed, 10 Aug 2016 00:44:56 +0000 (00:44 +0000)]
[OptDiag] Add class Doxygen comment
This was requested in D22694.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278186
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Wed, 10 Aug 2016 00:44:44 +0000 (00:44 +0000)]
[Inliner,OptDiag] Add hotness attribute to opt diagnostics
Summary:
The inliner not being a function pass requires the work-around of
generating the OptimizationRemarkEmitter and in turn BFI on demand.
This will go away after the new PM is ready.
BFI is only computed inside ORE if the user has requested hotness
information for optimization diagnostitics (-pass-remark-with-hotness at
the 'opt' level). Thus there is no additional overhead without the
flag.
Reviewers: hfinkel, davidxl, eraman
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22694
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278185
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 9 Aug 2016 23:57:04 +0000 (23:57 +0000)]
[scudo] Documentation update for Scudo, from https://reviews.llvm.org/D23332
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278180
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Tue, 9 Aug 2016 23:14:37 +0000 (23:14 +0000)]
[IR] Remove some unused #includes (NFC)
I needed a reader-writer lock for a downstream project and noticed that
llvm has one. Function.cpp is the only file in-tree that refers to it.
To anyone reading this: are you using RWMutex in out-of-tree code? Maybe
it's not worth keeping around any more...
Since we're not actually using RWMutex *here*, remove the #include (and
a few other stale headers while we're at it).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278178
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 9 Aug 2016 23:03:55 +0000 (23:03 +0000)]
Make LLVM_PRETTY_FUNCTION support __func__.
In case there are compilers that support neither __FUNCSIG__ or
__PRETTY_FUNCTION__, we fall back to __func__ as a last resort,
which should be guaranteed by C++11 and C99.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278176
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 9 Aug 2016 23:01:30 +0000 (23:01 +0000)]
GlobalISel: support 'undef' constant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278174
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 9 Aug 2016 22:44:56 +0000 (22:44 +0000)]
[LoopSimplify] Rebuild LCSSA for the inner loop after separating nested loops.
Summary:
This hopefully fixes PR28825. The problem now was that a value from the
original loop was used in a subloop, which became a sibling after separation.
While a subloop doesn't need an lcssa phi node, a sibling does, and that's
where we broke LCSSA. The most natural way to fix this now is to simply call
formLCSSA on the original loop: it'll do what we've been doing before plus
it'll cover situations described above.
I think we don't need to run formLCSSARecursively here, and we have an assert
to verify this (I've tried testing it on LLVM testsuite + SPECs). I'd be happy
to be corrected here though.
I also changed a run line in the test from '-lcssa -loop-unroll' to
'-lcssa -loop-simplify -indvars', because it exercises LCSSA
preservation to the same extent, but also makes less unrelated
transformation on the CFG, which makes it easier to verify.
Reviewers: chandlerc, sanjoy, silvas
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23288
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278173
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Tue, 9 Aug 2016 22:41:35 +0000 (22:41 +0000)]
[ValueTracking] Improve ValueTracking on left shift with nsw flag
Patch by Li Huang
Differential Revison: https://reviews.llvm.org/D23296
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278172
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Tue, 9 Aug 2016 22:37:00 +0000 (22:37 +0000)]
[WebAssembly] Add -emscripten-cxx-exceptions-whitelist option
This patch adds -emscripten-cxx-exceptions-whitelist option to
WebAssemblyLowerEmscriptenExceptions pass. This options is the list of
function names in which Emscripten-style exception handling is enabled.
This is to support emscripten's EXCEPTION_CATCHING_WHITELIST which
exists because of the performance impact of emscripten's non-zero-cost
EH method.
Patch by Heejin Ahn
Differential Revision: https://reviews.llvm.org/D23292
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278171
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 9 Aug 2016 22:03:45 +0000 (22:03 +0000)]
Add a platform independent version of __PRETTY_FUNCTION__.
MSVC doesn't have this, it only has __FUNCSIG__. So this adds
a new macro called LLVM_PRETTY_FUNCTION which evaluates to the
right thing on any platform.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278170
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 9 Aug 2016 21:28:04 +0000 (21:28 +0000)]
GlobalISel: first translation support for Constants.
For now put them all in the entry block. This should be correct but may give
poor runtime performance. Hopefully MachineSinking combined with
isReMaterializable can solve those issues, but if not the interface is sound
enough to support alternatives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278168
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 21:07:17 +0000 (21:07 +0000)]
add test cases for missed vselect optimizations (PR28895)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278165
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 9 Aug 2016 20:48:22 +0000 (20:48 +0000)]
[ExecutionEngine] Disable weak symbol tests for COFF.
COFF doesn't support weak linkage on functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278162
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Tue, 9 Aug 2016 20:40:03 +0000 (20:40 +0000)]
Fix the runtime error caused by "Use ValueOffsetPair to enhance value reuse during SCEV expansion".
The patch is to fix the bug in PR28705. It was caused by setting wrong return
value for SCEVExpander::findExistingExpansion. The return values of findExistingExpansion
have different meanings when the function is used in different ways so it is easy to make
mistake. The fix creates two new interfaces to replace SCEVExpander::findExistingExpansion,
and specifies where each interface is expected to be used.
Differential Revision: https://reviews.llvm.org/D22942
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278161
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Tue, 9 Aug 2016 20:37:50 +0000 (20:37 +0000)]
Recommit "Use ValueOffsetPair to enhance value reuse during SCEV expansion".
The fix for PR28705 will be committed consecutively.
In D12090, the ExprValueMap was added to reuse existing value during SCEV expansion.
However, const folding and sext/zext distribution can make the reuse still difficult.
A simplified case is: suppose we know S1 expands to V1 in ExprValueMap, and
S1 = S2 + C_a
S3 = S2 + C_b
where C_a and C_b are different SCEVConstants. Then we'd like to expand S3 as
V1 - C_a + C_b instead of expanding S2 literally. It is helpful when S2 is a
complex SCEV expr and S2 has no entry in ExprValueMap, which is usually caused
by the fact that S3 is generated from S1 after const folding.
In order to do that, we represent ExprValueMap as a mapping from SCEV to
ValueOffsetPair. We will save both S1->{V1, 0} and S2->{V1, C_a} into the
ExprValueMap when we create SCEV for V1. When S3 is expanded, it will first
expand S2 to V1 - C_a because of S2->{V1, C_a} in the map, then expand S3 to
V1 - C_a + C_b.
Differential Revision: https://reviews.llvm.org/D21313
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278160
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Tue, 9 Aug 2016 20:32:59 +0000 (20:32 +0000)]
Without explicitly including <string>, I'm getting an error on the new code in this file. Won't present an issue for anyone that isn't having the same trouble as me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278159
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Shen [Tue, 9 Aug 2016 20:23:13 +0000 (20:23 +0000)]
[ADT] Change iterator_adaptor_base's default template arguments to forward more underlying typedefs
Reviewers: chandlerc
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23217
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278157
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 20:09:16 +0000 (20:09 +0000)]
regenerate checks and remove 'opt' run dependency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278154
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Tue, 9 Aug 2016 20:00:47 +0000 (20:00 +0000)]
[EarlyCSE] Teach about CSE'ing over invariant.start intrinsics
Summary:
Teach EarlyCSE about invariant.start intrinsic. Specifically, we can perform
store-load, load-load forwarding over this call.
Reviewers: majnemer, reames, dberlin, sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23268
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278153
91177308-0d34-0410-b5e6-
96231b3b80d8
Ying Yi [Tue, 9 Aug 2016 19:53:35 +0000 (19:53 +0000)]
[llvm-cov] Swapped the line and count columns.
In the coverage report, the line and count columns have been swapped to make it more readable.
A follow-up commit in compiler-rt is needed
Differential Revision: https://reviews.llvm.org/D23281
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278152
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 19:42:52 +0000 (19:42 +0000)]
update to use FileCheck and auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278150
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 9 Aug 2016 19:27:17 +0000 (19:27 +0000)]
Re-apply r278065 (Weak symbol support in RuntimeDyld) with a fix for ELF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278149
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 9 Aug 2016 18:34:19 +0000 (18:34 +0000)]
[vim] Update the llvm.vim syntax file
We never updated this file to contain the WinEH instructions.
Also, add the dereferenceable attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278146
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 9 Aug 2016 17:55:12 +0000 (17:55 +0000)]
[X86] Don't model UD2/UD2B as a terminator
A UD2 might make its way into the program via a call to @llvm.trap.
Obviously, calls are not terminators. However, we modeled the X86
instruction, UD2, as a terminator. Later on, this confuses the epilogue
insertion machinery which results in the epilogue getting inserted
before the UD2. For some platforms, like x64, the result is a
violation of the ABI.
Instead, model UD2/UD2B as a side effecting instruction which may
observe memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278144
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 9 Aug 2016 17:39:11 +0000 (17:39 +0000)]
[DAGCombiner] Better support for shifting large value type by constants
As detailed on D22726, much of the shift combining code assume constant values will fit into a uint64_t value and calls ConstantSDNode::getZExtValue where it probably shouldn't (leading to asserts). Using APInt directly avoids this problem but we encounter other assertions if we attempt to compare/operate on 2 APInt of different bitwidths.
This patch adds a helper function to ensure that 2 APInt values are zero extended as required so that they can be safely used together. I've only added an initial example use for this to the '(SHIFT (SHIFT x, c1), c2) --> (SHIFT x, (ADD c1, c2))' combines. Further cases can easily be added as required.
Differential Revision: https://reviews.llvm.org/D23007
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278141
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Tue, 9 Aug 2016 17:18:05 +0000 (17:18 +0000)]
[AliasAnalysis] Treat invariant.start as read-memory
Summary:
We teach alias analysis that invariant.start is readonly.
This helps with GVN and memcopy optimizations that currently treat.
invariant.start as a clobber.
We need to treat this as readonly, so that DSE does not incorrectly
remove stores prior to the invariant.start
Reviewers: sanjoy, reames, majnemer, dberlin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23214
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278138
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 17:03:51 +0000 (17:03 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278137
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 17:02:17 +0000 (17:02 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278136
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:59:54 +0000 (16:59 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278135
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 9 Aug 2016 16:46:02 +0000 (16:46 +0000)]
test-release.sh: Drop autoconf support
The autoconf build was deleted some time ago.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278133
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:39:05 +0000 (16:39 +0000)]
add tests for missing vector icmp folds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278132
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:19:57 +0000 (16:19 +0000)]
update to use FileCheck and auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278131
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:17:46 +0000 (16:17 +0000)]
regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278130
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 9 Aug 2016 16:05:57 +0000 (16:05 +0000)]
add tests for missing vector icmp folds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278129
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 9 Aug 2016 15:35:28 +0000 (15:35 +0000)]
[Profile] turn off verbose warnings by default
no prof data for func warning is turned off by default
due to its high verbosity and minimal usefulness.
Differential Revision: http://reviews.llvm.org/D23295
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278127
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Tue, 9 Aug 2016 14:50:08 +0000 (14:50 +0000)]
[LVI] Make LVI smarter about comparisons with non-constants
Make LVI smarter about comparisons with a non-constant. For example, a s< b constraints a to be in [INT_MIN, INT_MAX) range. This is a part of https://llvm.org/bugs/show_bug.cgi?id=28620 fix.
Reviewed By: sanjoy
Differential Revision: https://reviews.llvm.org/D23205
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278122
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 9 Aug 2016 12:56:15 +0000 (12:56 +0000)]
[X86][XOP] Add support for combining target shuffles to VPERMIL2PD/VPERMIL2PS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278120
91177308-0d34-0410-b5e6-
96231b3b80d8
Kuba Brecka [Tue, 9 Aug 2016 12:12:15 +0000 (12:12 +0000)]
Add `#ifdef __cplusplus` around `extern "C"` in Compiler.h. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278119
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Tue, 9 Aug 2016 11:54:14 +0000 (11:54 +0000)]
AVX-512: A new test for FMA intrinsic
A new test that explores sub-optimal sequence of FMA intrinsic and FNEG operation.
An upcoming patch will fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278117
91177308-0d34-0410-b5e6-
96231b3b80d8