]> granicus.if.org Git - llvm/log
llvm
8 years agoMerging r288433: release_39 origin/release_39
Tom Stellard [Tue, 6 Dec 2016 20:09:33 +0000 (20:09 +0000)]
Merging r288433:

------------------------------------------------------------------------
r288433 | oranevskyy | 2016-12-01 14:58:35 -0800 (Thu, 01 Dec 2016) | 24 lines

[ARM] Fix for 64-bit CAS expansion on ARM32 with -O0

Summary:
This patch fixes comparison of 64-bit atomic with its expected value in CMP_SWAP_64 expansion.

Currently, the low words are compared with CMP, while the high words are compared with SBC. SBC expects the carry flag to be set if CMP detects a difference. CMP might leave the carry unset for unequal arguments though if the first one is >= than the second. This might cause the comparison logic to detect false equality.

Example of the broken C++ code:
```
std::atomic<long long> at(2);

long long ll = 1;
std::atomic_compare_exchange_strong(&at, &ll, 3);
```
Even though the atomic `at` and the expected value `ll` are not equal and `atomic_compare_exchange_strong` returns `false`, `at` is changed to 3.

The patch replaces SBC with CMPEQ.

Reviewers: t.p.northover

Subscribers: aemerson, rengolin, llvm-commits, asl

Differential Revision: https://reviews.llvm.org/D27315

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288847 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r288418:
Tom Stellard [Tue, 6 Dec 2016 20:09:32 +0000 (20:09 +0000)]
Merging r288418:

------------------------------------------------------------------------
r288418 | tnorthover | 2016-12-01 13:31:59 -0800 (Thu, 01 Dec 2016) | 13 lines

AArch64: fix 128-bit cmpxchg at -O0 (again, again).

This time the issue is fortunately just a simple mistake rather than a horrible
design spectre. I thought SUBS/SBCS provided sufficient NZCV flags for
comparing two 64-bit values, but they don't.

The fix is slightly clunkier in AArch64 because we can't use conditional
execution to emit a pair of CMPs. Traditionally an "icmp ne i128" would map to
an EOR/EOR/ORR/CBNZ, but that uses more registers so it's easier to go with a
CSET/CINC/CBNZ combination. Slightly less efficient, but this is -O0 anyway.

Thanks to Anton Korobeynikov for pointing out the issue.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288846 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277755:
Tom Stellard [Tue, 6 Dec 2016 20:09:30 +0000 (20:09 +0000)]
Merging r277755:

------------------------------------------------------------------------
r277755 | tnorthover | 2016-08-04 12:32:28 -0700 (Thu, 04 Aug 2016) | 5 lines

AArch64: don't assume all i128s are BUILD_PAIRs

It leads to a crash when they're not. I'm *sure* I've made this mistake before,
at least once.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288845 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "Merging r278268:"
Tom Stellard [Fri, 2 Dec 2016 02:06:41 +0000 (02:06 +0000)]
Revert "Merging r278268:"

This reverts commit r288454.  This was committed accidently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288456 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r287360:
Tom Stellard [Fri, 2 Dec 2016 02:05:01 +0000 (02:05 +0000)]
Merging r287360:

------------------------------------------------------------------------
r287360 | hans | 2016-11-18 10:27:31 -0800 (Fri, 18 Nov 2016) | 2 lines

Fix test from r287353: don't use /dev/null

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288455 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278268:
Tom Stellard [Fri, 2 Dec 2016 02:04:59 +0000 (02:04 +0000)]
Merging r278268:

------------------------------------------------------------------------
r278268 | nhaehnle | 2016-08-10 11:51:14 -0700 (Wed, 10 Aug 2016) | 28 lines

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/branches/release_39@288454 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r287339:
Tom Stellard [Tue, 29 Nov 2016 03:41:29 +0000 (03:41 +0000)]
Merging r287339:

------------------------------------------------------------------------
r287339 | nhaehnle | 2016-11-18 03:55:52 -0800 (Fri, 18 Nov 2016) | 20 lines

AMDGPU: Fix legalization of MUBUF instructions in shaders

Summary:
The addr64-based legalization is incorrect for MUBUF instructions with idxen
set as well as for BUFFER_LOAD/STORE_FORMAT_* instructions.  This affects
e.g.  shaders that access buffer textures.

Since we never actually need the addr64-legalization in shaders, this patch
takes the easy route and keys off the calling convention.  If this ever
affects (non-OpenGL) compute, the type of legalization needs to be chosen
based on some TSFlag.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98664

Reviewers: arsenm, tstellarAMD

Subscribers: kzhuravl, wdng, yaxunl, tony-tye, llvm-commits

Differential Revision: https://reviews.llvm.org/D26747

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288106 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r280589:
Tom Stellard [Tue, 29 Nov 2016 03:41:28 +0000 (03:41 +0000)]
Merging r280589:

------------------------------------------------------------------------
r280589 | nhaehnle | 2016-09-03 05:26:32 -0700 (Sat, 03 Sep 2016) | 19 lines

AMDGPU: Fix an interaction between WQM and polygon stippling

Summary:
This fixes a rare bug in polygon stippling with non-monolithic pixel shaders.

The underlying problem is as follows: the prolog part contains the polygon
stippling sequence, i.e. a kill. The main part then enables WQM based on the
_reduced_ exec mask, effectively undoing most of the polygon stippling.

Since we cannot know whether polygon stippling will be used, the main part
of a non-monolithic shader must always return to exact mode to fix this
problem.

Reviewers: arsenm, tstellarAMD, mareko

Subscribers: arsenm, llvm-commits, kzhuravl

Differential Revision: https://reviews.llvm.org/D23131

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288105 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277504:
Tom Stellard [Tue, 29 Nov 2016 03:41:26 +0000 (03:41 +0000)]
Merging r277504:

------------------------------------------------------------------------
r277504 | nhaehnle | 2016-08-02 12:31:14 -0700 (Tue, 02 Aug 2016) | 21 lines

AMDGPU: Stay in WQM for non-intrinsic stores

Summary:
Two types of stores are possible in pixel shaders: stores to memory that are
explicitly requested at the API level, and stores that are an implementation
detail of register spilling or lowering of arrays.

For the first kind of store, we must ensure that helper pixels have no effect
and hence WQM must be disabled. The second kind of store must always be
executed, because the written value may be loaded again in a way that is
relevant for helper pixels as well -- and there are no externally visible
effects anyway.

This is a candidate for the 3.9 release branch.

Reviewers: arsenm, tstellarAMD, mareko

Subscribers: arsenm, kzhuravl, llvm-commits

Differential Revision: https://reviews.llvm.org/D22675

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288104 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277500:
Tom Stellard [Tue, 29 Nov 2016 03:41:24 +0000 (03:41 +0000)]
Merging r277500:

------------------------------------------------------------------------
r277500 | nhaehnle | 2016-08-02 12:17:37 -0700 (Tue, 02 Aug 2016) | 18 lines

AMDGPU: Track physical registers in SIWholeQuadMode

Summary:
There are cases where uniform branch conditions are computed in VGPRs, and
we didn't correctly mark those as WQM.

The stray change in basic-branch.ll is because invoking the LiveIntervals
analysis leads to the detection of a dead register that would otherwise
not be seen at -O0.

This is a candidate for the 3.9 branch, as it fixes a possible hang.

Reviewers: arsenm, tstellarAMD, mareko

Subscribers: arsenm, llvm-commits, kzhuravl

Differential Revision: https://reviews.llvm.org/D22673

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288103 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r286998:
Pawel Bylica [Mon, 28 Nov 2016 22:45:01 +0000 (22:45 +0000)]
Merging r286998:
------------------------------------------------------------------------
r286998 | chfast | 2016-11-15 19:29:24 +0100 (wto, 15 lis 2016) | 12 lines

Integer legalization: fix MUL expansion

Summary:
This fixes the runtime results produces by the fallback multiplication expansion introduced in r270720.

For tests I created a fuzz tester that compares the results with Boost.Multiprecision.

Reviewers: hfinkel

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26628

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288086 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r281403:
Pawel Bylica [Mon, 28 Nov 2016 22:41:59 +0000 (22:41 +0000)]
Merging r281403:
------------------------------------------------------------------------
r281403 | chfast | 2016-09-13 23:55:41 +0200 (wto, 13 wrz 2016) | 9 lines

[CodeGen] Fix invalid shift in mul expansion

Summary: When expanding mul in type legalization make sure the type for
shift amount can actually fit the value.
This fixes PR30354 https://llvm.org/bugs/show_bug.cgi?id=30354.

Reviewers: hfinkel, majnemer, RKSimon

Subscribers: RKSimon, llvm-commits

Differential Revision: https://reviews.llvm.org/D24478

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288085 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r285782:
Tom Stellard [Mon, 28 Nov 2016 21:53:38 +0000 (21:53 +0000)]
Merging r285782:

------------------------------------------------------------------------
r285782 | brad | 2016-11-01 18:39:01 -0700 (Tue, 01 Nov 2016) | 9 lines

Disable the use of std::call_once on OpenBSD with libstdc++.

It was noticed this caused performance regressions and deadlocks. PR30768.

Reorder the code to make it clearer what is tested.

PPC now disables the use of std::call_once only with libstdc++ with
the reordering of the code, as was the original intent.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288075 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r283612:
Tom Stellard [Mon, 28 Nov 2016 21:35:41 +0000 (21:35 +0000)]
Merging r283612:

------------------------------------------------------------------------
r283612 | davide | 2016-10-07 14:53:09 -0700 (Fri, 07 Oct 2016) | 5 lines

[InstCombine] Don't unpack arrays that are too large (part 2).

This is similar to r283599, but for store instructions.
Thanks to David for pointing out!

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288070 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r283599:
Tom Stellard [Mon, 28 Nov 2016 21:35:40 +0000 (21:35 +0000)]
Merging r283599:

------------------------------------------------------------------------
r283599 | davide | 2016-10-07 13:57:42 -0700 (Fri, 07 Oct 2016) | 4 lines

[InstCombine] Don't unpack arrays that are too large

Differential Revision:  https://reviews.llvm.org/D25376

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288069 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r281650:
Tom Stellard [Mon, 28 Nov 2016 21:25:53 +0000 (21:25 +0000)]
Merging r281650:

------------------------------------------------------------------------
r281650 | david.majnemer | 2016-09-15 13:10:09 -0700 (Thu, 15 Sep 2016) | 6 lines

[InstCombine] Do not RAUW a constant GEP

canRewriteGEPAsOffset expects to process instructions, not constants.

This fixes PR30342.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288066 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279980:
Tom Stellard [Mon, 28 Nov 2016 21:13:03 +0000 (21:13 +0000)]
Merging r279980:

------------------------------------------------------------------------
r279980 | david.majnemer | 2016-08-29 10:14:08 -0700 (Mon, 29 Aug 2016) | 7 lines

[SimplifyCFG] Hoisting invalidates metadata

We forgot to remove optimization metadata when performing hosting during
FoldTwoEntryPHINode.

This fixes PR29163.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288063 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerge r283123 into 3.9.1
Mehdi Amini [Fri, 25 Nov 2016 04:47:11 +0000 (04:47 +0000)]
Merge r283123 into 3.9.1

[RTDyld] Fix a bug in RTDyldMemoryManager::deregisterEHFrames.

See: https://llvm.org/bugs/show_bug.cgi?id=31160

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287912 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r287353:
Tom Stellard [Fri, 25 Nov 2016 01:47:20 +0000 (01:47 +0000)]
Merging r287353:

------------------------------------------------------------------------
r287353 | hans | 2016-11-18 09:33:05 -0800 (Fri, 18 Nov 2016) | 12 lines

IRMover: Avoid accidentally mapping types from the destination module (PR30799)

During Module linking, it's possible for SrcM->getIdentifiedStructTypes();
to return types that are actually defined in the destination module
(DstM). Depending on how the bitcode file was read,
getIdentifiedStructTypes() might do a walk over all values, including
metadata nodes, looking for types. In my case, a debug info metadata
node was shared between the two modules, and it referred to a type
defined in the destination module (see test case).

Differential Revision: https://reviews.llvm.org/D26212

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287906 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agomerge r276347
Guy Blank [Thu, 24 Nov 2016 06:52:24 +0000 (06:52 +0000)]
merge r276347

[X86] Do not use AND8ri8 in AVX512 pattern

This variant is (as documented in the TD) for disassembler use only, and should
not be used in patterns - it is longer, and is broken on 64-bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287855 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r282182:
Tom Stellard [Wed, 23 Nov 2016 21:17:33 +0000 (21:17 +0000)]
Merging r282182:

------------------------------------------------------------------------
r282182 | nemanja.i.ibm | 2016-09-22 12:06:38 -0700 (Thu, 22 Sep 2016) | 6 lines

[PowerPC] Sign extend sub-word values for atomic comparisons

Atomic comparison instructions use the sub-word load instruction on
Power8 and up but the value is not sign extended prior to the signed word
compare instruction. This patch adds that sign extension.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287811 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279933:
Tom Stellard [Wed, 23 Nov 2016 21:17:31 +0000 (21:17 +0000)]
Merging r279933:

------------------------------------------------------------------------
r279933 | hfinkel | 2016-08-28 09:17:58 -0700 (Sun, 28 Aug 2016) | 4 lines

[PowerPC] Implement lowering for atomicrmw min/max/umin/umax

Implement lowering for atomicrmw min/max/umin/umax. Fixes PR28818.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287810 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r281479:
Tom Stellard [Wed, 23 Nov 2016 21:03:25 +0000 (21:03 +0000)]
Merging r281479:

------------------------------------------------------------------------
r281479 | nemanja.i.ibm | 2016-09-14 07:19:09 -0700 (Wed, 14 Sep 2016) | 9 lines

Fix code-gen crash on Power9 for insert_vector_elt with variable index (PR30189)

This patch corresponds to review:
https://reviews.llvm.org/D24021

In the initial implementation of this instruction, I forgot to account for
variable indices. This patch fixes PR30189 and should probably be merged into
3.9.1 (I'll open a bug according to the new instructions).

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287809 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerge r287453 in 3.9.1 : [ThinLTO] Fix crash when importing an opaque type
Mehdi Amini [Wed, 23 Nov 2016 20:52:51 +0000 (20:52 +0000)]
Merge r287453 in 3.9.1 : [ThinLTO] Fix crash when importing an opaque type

See: http://llvm.org/PR31072

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287805 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279930:
Tom Stellard [Wed, 23 Nov 2016 17:26:28 +0000 (17:26 +0000)]
Merging r279930:

------------------------------------------------------------------------
r279930 | elena.demikhovsky | 2016-08-28 01:53:53 -0700 (Sun, 28 Aug 2016) | 7 lines

[Loop Vectorizer] Fixed memory confilict checks.

Fixed a bug in run-time checks for possible memory conflicts inside loop.
The bug is in Low <-> High boundaries calculation. The High boundary
should be calculated as "last memory access pointer + element size".

Differential revision: https://reviews.llvm.org/D23176

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287779 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r280143:
Tom Stellard [Wed, 23 Nov 2016 17:05:01 +0000 (17:05 +0000)]
Merging r280143:

------------------------------------------------------------------------
r280143 | dberlin | 2016-08-30 12:58:48 -0700 (Tue, 30 Aug 2016) | 2 lines

IntrArgMemOnly is only defined (and current AA machinery only sanely supports) pointer arguments, and these intrinsics have vector of pointer arguments.  Remove ArgMemOnly until we either have the machinery, define a new attribute, or something similar

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287777 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r280599:
Tom Stellard [Wed, 16 Nov 2016 18:59:55 +0000 (18:59 +0000)]
Merging r280599:

------------------------------------------------------------------------
r280599 | mehdi.amini | 2016-09-03 14:12:33 -0700 (Sat, 03 Sep 2016) | 10 lines

Fix ThinLTO crash with debug info

Because the recent change about ODR type uniquing in the context,
we can reach types defined in another module during IR linking.
This triggered some assertions in case we IR link without starting
from an empty module. To alleviate that, we can self-map metadata
defined in the destination module so that they won't be visited.

Differential Revision: https://reviews.llvm.org/D23841

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287137 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r283427:
Tom Stellard [Wed, 16 Nov 2016 18:48:06 +0000 (18:48 +0000)]
Merging r283427:

------------------------------------------------------------------------
r283427 | nunoplopes | 2016-10-06 02:32:16 -0700 (Thu, 06 Oct 2016) | 3 lines

fix build on cygwin
Cygwin has dlfcn.h, but no Dl_info

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@287133 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[3.9.1] Merging r283070 - [X86][AVX] Ensure broadcast loads respect dependencies
Simon Pilgrim [Tue, 8 Nov 2016 17:01:05 +0000 (17:01 +0000)]
[3.9.1] Merging r283070 - [X86][AVX] Ensure broadcast loads respect dependencies

To allow broadcast loads of a non-zero'th vector element, lowerVectorShuffleAsBroadcast can replace a load with a new load with an adjusted address, but unfortunately we weren't ensuring that the new load respected the same dependencies.

This patch adds a TokenFactor and updates all dependencies of the old load to reference the new load instead.

Bug found during internal testing.

Differential Revision: https://reviews.llvm.org/D25039

As discussed on PR30596

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@286251 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[3.9.1] Merging r282613 - [X86][AVX] Add test showing that VBROADCAST loads don't...
Simon Pilgrim [Tue, 8 Nov 2016 16:45:26 +0000 (16:45 +0000)]
[3.9.1] Merging r282613 - [X86][AVX] Add test showing that VBROADCAST loads don't correctly respect dependencies

As discussed in PR30596, this is a preliminary test update before we can merge r283070

Note: This required the test to be regenerated after the merge as 3.9.1 doesn't have trunk's latest lea -> mov simplifications

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@286248 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r283129:
Hans Wennborg [Tue, 8 Nov 2016 16:38:34 +0000 (16:38 +0000)]
Merging r283129:
------------------------------------------------------------------------
r283129 | hans | 2016-10-03 11:18:04 -0700 (Mon, 03 Oct 2016) | 6 lines

Jump threading: avoid trying to split edge into landingpad block (PR27840)

Splitting the edge is nontrivial because of the landing pad, and we would
currently assert trying to do it.

Differential Revision: https://reviews.llvm.org/D24680
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@286246 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[3.9.1] Merging r280837 [X86] Don't reduce the width of vector mul if the target...
Simon Pilgrim [Thu, 29 Sep 2016 19:16:52 +0000 (19:16 +0000)]
[3.9.1] Merging r280837 [X86] Don't reduce the width of vector mul if the target doesn't support SSE2.

The patch is to fix PR30298, which is caused by rL272694. The solution is to
bail out if the target has no SSE2.

Differential Revision: https://reviews.llvm.org/D24288

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@282753 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCherry pick r281957 (see http://llvm.org/PR30463)
Matthias Braun [Wed, 28 Sep 2016 18:17:12 +0000 (18:17 +0000)]
Cherry pick r281957 (see http://llvm.org/PR30463)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@282615 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[3.9.1] Merging r281319 [ARM] Support ldr.w in pseudo instruction ldr rd,=immediate
Renato Golin [Thu, 15 Sep 2016 18:10:44 +0000 (18:10 +0000)]
[3.9.1] Merging r281319 [ARM] Support ldr.w in pseudo instruction ldr rd,=immediate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@281634 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBump version to 3.9.1
Tom Stellard [Tue, 13 Sep 2016 13:44:50 +0000 (13:44 +0000)]
Bump version to 3.9.1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@281335 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279647:
Hans Wennborg [Wed, 24 Aug 2016 23:46:52 +0000 (23:46 +0000)]
Merging r279647:
------------------------------------------------------------------------
r279647 | sanjoy | 2016-08-24 11:10:21 -0700 (Wed, 24 Aug 2016) | 5 lines

[SCCP] Don't delete side-effecting instructions

I'm not sure if the `!isa<CallInst>(Inst) &&
!isa<TerminatorInst>(Inst))` bit is correct either, but this fixes the
case we know is broken.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279689 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279268:
Hans Wennborg [Mon, 22 Aug 2016 21:23:55 +0000 (21:23 +0000)]
Merging r279268:
------------------------------------------------------------------------
r279268 | majnemer | 2016-08-19 09:37:40 -0700 (Fri, 19 Aug 2016) | 5 lines

[CloneFunction] Don't remove unrelated nodes from the CGSSC

CGSCC use a WeakVH to track call sites.  RAUW a call within a function
can result in that WeakVH getting confused about whether or not the call
site is still around.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279477 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279369 and update the test:
Hans Wennborg [Mon, 22 Aug 2016 21:04:17 +0000 (21:04 +0000)]
Merging r279369 and update the test:
------------------------------------------------------------------------
r279369 | mssimpso | 2016-08-20 07:10:06 -0700 (Sat, 20 Aug 2016) | 1 line

[SLP] Add command line option for minimum tree size (NFC)
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279474 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix gather-root.ll SLP vectorizer test to not expose UB.
Hans Wennborg [Mon, 22 Aug 2016 20:27:42 +0000 (20:27 +0000)]
Fix gather-root.ll SLP vectorizer test to not expose UB.

The undefined behaviour (signed integer overflow) is not a regression
in itself as it was already there, but the test exposing it is a
regression compared to rc1, i.e. the lit tests no longer run ubsan-clean.

This commit fixes the test based on Matt's change in r279125 to not
expose the undefined behaviour.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279468 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r279125 and r278343:
Hans Wennborg [Thu, 18 Aug 2016 22:38:06 +0000 (22:38 +0000)]
Merging r279125 and r278343:
------------------------------------------------------------------------
r279125 | mssimpso | 2016-08-18 12:50:32 -0700 (Thu, 18 Aug 2016) | 14 lines

[SLP] Initialize VectorizedValue when gathering

We abort building vectorizable trees in some cases (e.g., if the maximum
recursion depth is reached, if the region size is too large, etc.). If this
happens for a reduction, we can be left with a root entry that needs to be
gathered. For these cases, we need make sure we actually set VectorizedValue to
the resulting vector.

This patch ensures we properly set VectorizedValue, and it also ensures the
insertelement sequence generated for the gathers is inserted at the correct
location.

Reference: https://llvm.org/bugs/show_bug.cgi?id=28330
Differential Revison: https://reviews.llvm.org/D23410
------------------------------------------------------------------------

------------------------------------------------------------------------
r278343 | mssimpso | 2016-08-11 08:28:45 -0700 (Thu, 11 Aug 2016) | 1 line

[SLP] Make RecursionMaxDepth a command line option (NFC)
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279174 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReleaseNotes: sphinx build fixes
Hans Wennborg [Thu, 18 Aug 2016 21:09:28 +0000 (21:09 +0000)]
ReleaseNotes: sphinx build fixes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279147 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReleaseNotes: tidy up
Hans Wennborg [Thu, 18 Aug 2016 20:52:16 +0000 (20:52 +0000)]
ReleaseNotes: tidy up

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279142 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReleaseNotes: drop in-progress warning
Hans Wennborg [Thu, 18 Aug 2016 20:39:47 +0000 (20:39 +0000)]
ReleaseNotes: drop in-progress warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279139 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReleaseNotes: reduced jump table density
Hans Wennborg [Thu, 18 Aug 2016 20:07:07 +0000 (20:07 +0000)]
ReleaseNotes: reduced jump table density

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279128 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278559:
Hans Wennborg [Thu, 18 Aug 2016 19:43:50 +0000 (19:43 +0000)]
Merging r278559:
------------------------------------------------------------------------
r278559 | efriedma | 2016-08-12 13:28:02 -0700 (Fri, 12 Aug 2016) | 7 lines

[AArch64LoadStoreOpt] Handle offsets correctly for post-indexed paired loads.

Trunk would try to create something like "stp x9, x8, [x0], #512", which isn't actually a valid instruction.

Differential revision: https://reviews.llvm.org/D23368

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279123 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278562:
Hans Wennborg [Thu, 18 Aug 2016 18:14:41 +0000 (18:14 +0000)]
Merging r278562:
------------------------------------------------------------------------
r278562 | efriedma | 2016-08-12 13:39:51 -0700 (Fri, 12 Aug 2016) | 7 lines

[AArch64LoadStoreOptimizer] Check aliasing correctly when creating paired loads/stores.

The existing code accidentally skipped the aliasing check in edge cases.

Differential revision: https://reviews.llvm.org/D23372

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279107 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278999:
Hans Wennborg [Thu, 18 Aug 2016 17:34:01 +0000 (17:34 +0000)]
Merging r278999:
------------------------------------------------------------------------
r278999 | hans | 2016-08-17 15:50:18 -0700 (Wed, 17 Aug 2016) | 3 lines

SCEV: Don't assert about non-SCEV-able value in isSCEVExprNeverPoison() (PR28932)

Differential Revision: https://reviews.llvm.org/D23594
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279093 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278938:
Hans Wennborg [Wed, 17 Aug 2016 22:13:00 +0000 (22:13 +0000)]
Merging r278938:
------------------------------------------------------------------------
r278938 | mcrosier | 2016-08-17 08:54:39 -0700 (Wed, 17 Aug 2016) | 5 lines

Revert "Reassociate: Reprocess RedoInsts after each inst".

This reverts commit r258830, which introduced a bug described in PR28367.

PR28367
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278993 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278900:
Hans Wennborg [Wed, 17 Aug 2016 22:03:07 +0000 (22:03 +0000)]
Merging r278900:
------------------------------------------------------------------------
r278900 | cycheng | 2016-08-16 20:17:44 -0700 (Tue, 16 Aug 2016) | 12 lines

[ppc64] Don't apply sibling call optimization if callee has any byval arg

This is a quick work around, because in some cases, e.g. caller's stack
size > callee's stack size, we are still able to apply sibling call
optimization even callee has any byval arg.

This patch fix: https://llvm.org/bugs/show_bug.cgi?id=28328

Reviewers: hfinkel kbarton nemanjai amehsan
Subscribers: hans, tjablin

https://reviews.llvm.org/D23441
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278990 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278841:
Hans Wennborg [Wed, 17 Aug 2016 00:15:15 +0000 (00:15 +0000)]
Merging r278841:
------------------------------------------------------------------------
r278841 | haicheng | 2016-08-16 13:06:25 -0700 (Tue, 16 Aug 2016) | 3 lines

[BranchFolding] Change a test case of r278575.

Rename the operands to make the test less brittle.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278874 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278571:
Hans Wennborg [Tue, 16 Aug 2016 18:06:44 +0000 (18:06 +0000)]
Merging r278571:
------------------------------------------------------------------------
r278571 | rnk | 2016-08-12 15:23:04 -0700 (Fri, 12 Aug 2016) | 6 lines

[Inliner] Don't treat inalloca allocas as static

They aren't static, and moving them to the entry block across something
else will only result in tears.

Root cause of http://crbug.com/636558.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278831 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278575 (with changes to the test):
Hans Wennborg [Tue, 16 Aug 2016 17:51:12 +0000 (17:51 +0000)]
Merging r278575 (with changes to the test):
------------------------------------------------------------------------
r278575 | haicheng | 2016-08-12 16:13:38 -0700 (Fri, 12 Aug 2016) | 6 lines

Reapply [BranchFolding] Restrict tail merging loop blocks after MBP

Fixed a bug in the test case.

To fix PR28104, this patch restricts tail merging to blocks that belong to the
same loop after MBP.
------------------------------------------------------------------------

I had to adjust the test as it wasn't passing on the branch, presumably
due to different machine block placement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278827 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278558:
Hans Wennborg [Mon, 15 Aug 2016 17:48:44 +0000 (17:48 +0000)]
Merging r278558:
------------------------------------------------------------------------
r278558 | cbieneman | 2016-08-12 13:11:03 -0700 (Fri, 12 Aug 2016) | 3 lines

Remove autoconf references from LICENSE.TXT

Since we don't actually have the autoconf subdirectories anymore, we don't need this reference here.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278688 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278584:
Hans Wennborg [Mon, 15 Aug 2016 17:29:29 +0000 (17:29 +0000)]
Merging r278584:
------------------------------------------------------------------------
r278584 | sanjoy | 2016-08-12 17:58:31 -0700 (Fri, 12 Aug 2016) | 15 lines

[IndVars] Ignore (s|z)exts that don't extend the induction variable

`IVVisitor::visitCast` used to have the invariant that if the
instruction it was passed was a sext or zext instruction, the result of
the instruction would be wider than the induction variable.  This is no
longer true after rL275037, so this change teaches `IndVarSimplify` s
implementation of `IVVisitor::visitCast` to work with the relaxed
invariant.

A corresponding change to SimplifyIndVar to preserve the said invariant
after rL275037 would also work, but given how `IVVisitor::visitCast` is
spelled (no indication of said invariant), I figured the current fix is
cleaner.

Fixes PR28935.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278685 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278573 (and r277399, r278157, r278569):
Hans Wennborg [Mon, 15 Aug 2016 16:06:31 +0000 (16:06 +0000)]
Merging r278573 (and r277399, r278157, r278569):

------------------------------------------------------------------------
r278573 | timshen | 2016-08-12 15:47:13 -0700 (Fri, 12 Aug 2016) | 8 lines

[LoopVectorize] Detect loops in the innermost loop before creating InnerLoopVectorizer

InnerLoopVectorizer shouldn't handle a loop with cycles inside the loop
body, even if that cycle isn't a natural loop.

Fixes PR28541.

Differential Revision: https://reviews.llvm.org/D22952
------------------------------------------------------------------------

------------------------------------------------------------------------
r277399 | timshen | 2016-08-01 15:32:20 -0700 (Mon, 01 Aug 2016) | 9 lines

[ADT] NFC: Generalize GraphTraits requirement of "NodeType *" in interfaces to "NodeRef", and migrate SCCIterator.h to use NodeRef

Summary: By generalize the interface, users are able to inject more flexible Node token into the algorithm, for example, a pair of vector<Node>* and index integer. Currently I only migrated SCCIterator to use NodeRef, but more is coming. It's a NFC.

Reviewers: dblaikie, chandlerc

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D22937
------------------------------------------------------------------------

------------------------------------------------------------------------
r278157 | timshen | 2016-08-09 13:23:13 -0700 (Tue, 09 Aug 2016) | 7 lines

[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
------------------------------------------------------------------------

------------------------------------------------------------------------
r278569 | timshen | 2016-08-12 15:03:28 -0700 (Fri, 12 Aug 2016) | 3 lines

[ADT] Add filter_iterator for filtering elements

Differential Revision: https://reviews.llvm.org/D22951
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278674 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277093:
Hans Wennborg [Thu, 11 Aug 2016 21:55:38 +0000 (21:55 +0000)]
Merging r277093:
------------------------------------------------------------------------
r277093 | eugenezelenko | 2016-07-28 17:46:13 -0700 (Thu, 28 Jul 2016) | 4 lines

Add LLVM_ENABLE_LLD option to use LLD as C/C++ linker.

Differential revision: https://reviews.llvm.org/D22896

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278428 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278413:
Hans Wennborg [Thu, 11 Aug 2016 21:43:23 +0000 (21:43 +0000)]
Merging r278413:
------------------------------------------------------------------------
r278413 | gberry | 2016-08-11 14:05:17 -0700 (Thu, 11 Aug 2016) | 17 lines

[SCEV] Update interface to handle SCEVExpander insert point motion.

Summary:
This is an extension of the fix in r271424.  That fix dealt with builder
insert points being moved by SCEV expansion, but only for the lifetime
of the expand call.  This change modifies the interface so that LSR can
safely call expand multiple times at the same insert point and do the
right thing if one of the expansions decides to move the original insert
point.

This is a fix for PR28719.

Reviewers: sanjoy

Subscribers: llvm-commits, mcrosier, mzolotukhin

Differential Revision: https://reviews.llvm.org/D23342
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278424 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278370:
Hans Wennborg [Thu, 11 Aug 2016 21:39:47 +0000 (21:39 +0000)]
Merging r278370:
------------------------------------------------------------------------
r278370 | mkuper | 2016-08-11 10:38:33 -0700 (Thu, 11 Aug 2016) | 7 lines

Make TwoAddressInstructionPass::rescheduleMIBelowKill subreg-aware

This fixes PR28824.

Differential Revision: https://reviews.llvm.org/D23220

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278422 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276712:
Hans Wennborg [Wed, 10 Aug 2016 20:06:22 +0000 (20:06 +0000)]
Merging r276712:
------------------------------------------------------------------------
r276712 | eugenis | 2016-07-25 17:05:14 -0700 (Mon, 25 Jul 2016) | 3 lines

[safestack] Fix stack guard live range.

Stack guard slot is live throughout the function.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278283 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276676:
Hans Wennborg [Wed, 10 Aug 2016 20:02:49 +0000 (20:02 +0000)]
Merging r276676:
------------------------------------------------------------------------
r276676 | eugenis | 2016-07-25 12:25:40 -0700 (Mon, 25 Jul 2016) | 1 line

Fix invalid iterator use in safestack coloring.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278281 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276051 and r276823:
Hans Wennborg [Wed, 10 Aug 2016 16:45:40 +0000 (16:45 +0000)]
Merging r276051 and r276823:
------------------------------------------------------------------------
r276051 | arsenm | 2016-07-19 16:16:53 -0700 (Tue, 19 Jul 2016) | 8 lines

AMDGPU: Change fdiv lowering based on !fpmath metadata

If 2.5 ulp is acceptable, denormals are not required, and
isn't a reciprocal which will already be handled, replace
with a faster fdiv.

Simplify the lowering tests by using per function
subtarget features.
------------------------------------------------------------------------

------------------------------------------------------------------------
r276823 | arsenm | 2016-07-26 16:25:44 -0700 (Tue, 26 Jul 2016) | 4 lines

AMDGPU: Use rcp for fdiv 1, x with fpmath metadata

Using rcp should be OK for safe math usually, so this
should not be replacing the original fdiv.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278243 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278002:
Hans Wennborg [Wed, 10 Aug 2016 16:27:26 +0000 (16:27 +0000)]
Merging r278002:
------------------------------------------------------------------------
r278002 | sbaranga | 2016-08-08 06:13:57 -0700 (Mon, 08 Aug 2016) | 18 lines

[AArch64] PR28877: Don't assume we're running after legalization when creating vcvtfp2fxs

Summary:
The DAG combine transformation that was generating the
aarch64_neon_vcvtfp2fxs node was assuming that all
inputs where legal and wasn't accounting that the input
could be a v4f64 if we're trying to do the transformation
before legalization. We now bail out in this case.

All illegal types besides v4f64 were already rejected.

Fixes https://llvm.org/bugs/show_bug.cgi?id=28877.

Reviewers: jmolloy

Subscribers: aemerson, rengolin, llvm-commits

Differential Revision: https://reviews.llvm.org/D23261
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278239 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReleaseNotes: mention more mov-to-push
Hans Wennborg [Tue, 9 Aug 2016 21:26:16 +0000 (21:26 +0000)]
ReleaseNotes: mention more mov-to-push

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278167 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278133:
Hans Wennborg [Tue, 9 Aug 2016 16:46:35 +0000 (16:46 +0000)]
Merging r278133:
------------------------------------------------------------------------
r278133 | hans | 2016-08-09 09:46:02 -0700 (Tue, 09 Aug 2016) | 3 lines

test-release.sh: Drop autoconf support

The autoconf build was deleted some time ago.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278134 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r278086:
Hans Wennborg [Tue, 9 Aug 2016 15:48:01 +0000 (15:48 +0000)]
Merging r278086:
------------------------------------------------------------------------
r278086 | matze | 2016-08-08 18:47:26 -0700 (Mon, 08 Aug 2016) | 6 lines

X86InstrInfo: Update liveness in classifyLea()

We need to update liveness information when we create COPYs in
classifyLea().

This fixes http://llvm.org/28301
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278128 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd LDC compiler to list of external OS projects using LLVM 3.9
Kai Nacke [Mon, 8 Aug 2016 20:17:36 +0000 (20:17 +0000)]
Add LDC compiler to list of external OS projects using LLVM 3.9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@278045 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd release note for the MIPS target.
Vasileios Kalintiris [Mon, 8 Aug 2016 12:28:57 +0000 (12:28 +0000)]
Add release note for the MIPS target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277998 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd release note for AMDGPU target.
Nicolai Haehnle [Fri, 5 Aug 2016 08:31:59 +0000 (08:31 +0000)]
Add release note for AMDGPU target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277803 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277691, r277693, and r277773:
Hans Wennborg [Thu, 4 Aug 2016 22:44:36 +0000 (22:44 +0000)]
Merging r277691, r277693, and r277773:

------------------------------------------------------------------------
r277691 | majnemer | 2016-08-03 21:24:02 -0700 (Wed, 03 Aug 2016) | 4 lines

Reinstate "[CloneFunction] Don't remove side effecting calls"

This reinstates r277611 + r277614 and reverts r277642.  A cast_or_null
should have been a dyn_cast_or_null.
------------------------------------------------------------------------

------------------------------------------------------------------------
r277693 | majnemer | 2016-08-03 21:47:18 -0700 (Wed, 03 Aug 2016) | 1 line

Forgot the dyn_cast_or_null intended for r277691.
------------------------------------------------------------------------

------------------------------------------------------------------------
r277773 | majnemer | 2016-08-04 14:28:59 -0700 (Thu, 04 Aug 2016) | 6 lines

[CloneFunction] Add a testcase for r277691/r277693

PR28848 had a very nice reduction of the underlying cause of the bug.
Our ValueMap had, in an entry for an Instruction, a ConstantInt.

This is not at all unexpected but should be handled properly.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277781 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd release note for MemorySSA.
George Burgess IV [Thu, 4 Aug 2016 17:51:18 +0000 (17:51 +0000)]
Add release note for MemorySSA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277739 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277625:
Hans Wennborg [Wed, 3 Aug 2016 19:52:03 +0000 (19:52 +0000)]
Merging r277625:
------------------------------------------------------------------------
r277625 | dexonsmith | 2016-08-03 11:19:43 -0700 (Wed, 03 Aug 2016) | 42 lines

IR: Drop uniquing when an MDNode Value operand is deleted

This is a fix for PR28697.

An MDNode can indirectly refer to a GlobalValue, through a
ConstantAsMetadata.  When the GlobalValue is deleted, the MDNode operand
is reset to `nullptr`.  If the node is uniqued, this can lead to a
hard-to-detect cache invalidation in a Metadata map that's shared across
an LLVMContext.

Consider:

 1. A map from Metadata* to `T` called RemappedMDs.
 2. A node that references a global variable, `!{i1* @GV}`.
 3. Insert `!{i1* @GV} -> SomeT` in the map.
 4. Delete `@GV`, leaving behind `!{null} -> SomeT`.

Looking up the generic and uninteresting `!{null}` gives you `SomeT`,
which is likely related to `@GV`.  Worse, `SomeT`'s lifetime may be tied
to the deleted `@GV`.

This occurs in practice in the shared ValueMap used since r266579 in the
IRMover.  Other code that handles more than one Module (with different
lifetimes) in the same LLVMContext could hit it too.

The fix here is a partial revert of r225223: in the rare case that an
MDNode operand is a ConstantAsMetadata (i.e., wrapping a node from the
Value hierarchy), drop uniquing if it gets replaced with `nullptr`.
This changes step #4 above to leave behind `distinct !{null} -> SomeT`,
which can't be confused with the generic `!{null}`.

In theory, this can cause some churn in the LLVMContext's MDNode
uniquing map when Values are being deleted.  However:

  - The number of GlobalValues referenced from uniqued MDNodes is
    expected to be quite small.  E.g., the debug info metadata schema
    only references GlobalValues from distinct nodes.

  - Other Constants have the lifetime of the LLVMContext, whose teardown
    is careful to drop references before deleting the constants.

As a result, I don't expect a compile time regression from this change.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277639 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd ThinLTO release note.
Teresa Johnson [Wed, 3 Aug 2016 18:52:04 +0000 (18:52 +0000)]
Add ThinLTO release note.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277628 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277504:
Hans Wennborg [Wed, 3 Aug 2016 18:13:01 +0000 (18:13 +0000)]
Merging r277504:
------------------------------------------------------------------------
r277504 | nha | 2016-08-02 12:31:14 -0700 (Tue, 02 Aug 2016) | 20 lines

AMDGPU: Stay in WQM for non-intrinsic stores

Summary:
Two types of stores are possible in pixel shaders: stores to memory that are
explicitly requested at the API level, and stores that are an implementation
detail of register spilling or lowering of arrays.

For the first kind of store, we must ensure that helper pixels have no effect
and hence WQM must be disabled. The second kind of store must always be
executed, because the written value may be loaded again in a way that is
relevant for helper pixels as well -- and there are no externally visible
effects anyway.

This is a candidate for the 3.9 release branch.

Reviewers: arsenm, tstellarAMD, mareko

Subscribers: arsenm, kzhuravl, llvm-commits

Differential Revision: https://reviews.llvm.org/D22675
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277620 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277500:
Hans Wennborg [Wed, 3 Aug 2016 18:09:48 +0000 (18:09 +0000)]
Merging r277500:
------------------------------------------------------------------------
r277500 | nha | 2016-08-02 12:17:37 -0700 (Tue, 02 Aug 2016) | 17 lines

AMDGPU: Track physical registers in SIWholeQuadMode

Summary:
There are cases where uniform branch conditions are computed in VGPRs, and
we didn't correctly mark those as WQM.

The stray change in basic-branch.ll is because invoking the LiveIntervals
analysis leads to the detection of a dead register that would otherwise not
be seen at -O0.

This is a candidate for the 3.9 branch, as it fixes a possible hang.

Reviewers: arsenm, tstellarAMD, mareko

Subscribers: arsenm, llvm-commits, kzhuravl

Differential Revision: https://reviews.llvm.org/D22673
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277619 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] Release Notes: autoconf has been removed
Chris Bieneman [Wed, 3 Aug 2016 18:08:14 +0000 (18:08 +0000)]
[docs] Release Notes: autoconf has been removed

Fleshing out the note about the autoconf build system being removed and pointing to CMake documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277617 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] release notes: self-host clang+lld on aarch64, stops
Renato Golin [Wed, 3 Aug 2016 16:09:12 +0000 (16:09 +0000)]
[docs] release notes: self-host clang+lld on aarch64, stops

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277606 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[code] Fix release notes typo
Renato Golin [Wed, 3 Aug 2016 13:20:58 +0000 (13:20 +0000)]
[code] Fix release notes typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277593 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] Release notes 3.9.0: Adding ARM target changes
Renato Golin [Wed, 3 Aug 2016 12:52:40 +0000 (12:52 +0000)]
[docs] Release notes 3.9.0: Adding ARM target changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277591 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd a few things to the AArch64 release notes
Diana Picus [Wed, 3 Aug 2016 12:00:27 +0000 (12:00 +0000)]
Add a few things to the AArch64 release notes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277590 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] Release Notes 3.9.0: GCC ABI Tag
Renato Golin [Wed, 3 Aug 2016 11:07:48 +0000 (11:07 +0000)]
[docs] Release Notes 3.9.0: GCC ABI Tag

Adding a short explanation of the GCC ABI Tag discussion and issues, with
links and considerations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277587 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277371:
Hans Wennborg [Tue, 2 Aug 2016 19:54:53 +0000 (19:54 +0000)]
Merging r277371:
------------------------------------------------------------------------
r277371 | mkuper | 2016-08-01 12:39:49 -0700 (Mon, 01 Aug 2016) | 9 lines

[DAGCombine] Make sext(setcc) combine respect getBooleanContents

We used to combine "sext(setcc x, y, cc) -> (select (setcc x, y, cc), -1, 0)"
Instead, we should combine to (select (setcc x, y, cc), T, 0) where the value
of T is 1 or -1, depending on the type of the setcc, and getBooleanContents()
for the type if it is not i1.

This fixes PR28504.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277509 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276648:
Hans Wennborg [Tue, 2 Aug 2016 19:41:53 +0000 (19:41 +0000)]
Merging r276648:
------------------------------------------------------------------------
r276648 | delena | 2016-07-25 09:51:00 -0700 (Mon, 25 Jul 2016) | 6 lines

AVX-512: Fixed [US]INT_TO_FP selection for i1 vectors.
It failed with assertion before this patch.

Differential Revision: https://reviews.llvm.org/D22735

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277508 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276701 and r277439
Renato Golin [Tue, 2 Aug 2016 10:26:08 +0000 (10:26 +0000)]
Merging r276701 and r277439

The saturation instructions appeared in v6T2 / DSP extensions, but they
were being accepted / generated on any, with the new introduction of the
saturation detection in the back-end. This commit restricts the usage to
v6T2 / DSP-enable only cores.

Fixes PR28607.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277440 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277114:
Hans Wennborg [Mon, 1 Aug 2016 20:30:12 +0000 (20:30 +0000)]
Merging r277114:
------------------------------------------------------------------------
r277114 | majnemer | 2016-07-28 22:39:21 -0700 (Thu, 28 Jul 2016) | 6 lines

[EarlyCSE] Correctly handle simplified, but live, instructions

Some instructions may have their uses replaced with a symbolic constant.
However, the instruction may still have side effects which percludes it
from being removed from the function.  EarlyCSE treated such an
instruction as if it were removed, resulting in PR28763.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277382 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r277135:
Hans Wennborg [Fri, 29 Jul 2016 16:18:18 +0000 (16:18 +0000)]
Merging r277135:
------------------------------------------------------------------------
r277135 | niravd | 2016-07-29 04:49:32 -0700 (Fri, 29 Jul 2016) | 12 lines

Cleanup TransferDbgValues

[DAG] Check debug values for invalidation before transferring and mark
old debug values invalid when transferring to another SDValue.

This fixes PR28613.

Reviewers: jyknight, hans, dblaikie, echristo

Subscribers: yaron.keren, ismail, llvm-commits

Differential Revision: https://reviews.llvm.org/D22858
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277164 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276980:
Hans Wennborg [Thu, 28 Jul 2016 23:31:17 +0000 (23:31 +0000)]
Merging r276980:
------------------------------------------------------------------------
r276980 | tstellar | 2016-07-28 07:30:43 -0700 (Thu, 28 Jul 2016) | 12 lines

AMDGPU/SI: Don't use reserved VGPRs for SGPR spilling

Summary:
We were using reserved VGPRs for SGPR spilling and this was causing
some programs with a workgroup size of 1024 to use more than 64
registers, which is illegal.

Reviewers: arsenm, mareko, nhaehnle

Subscribers: nhaehnle, arsenm, llvm-commits, kzhuravl

Differential Revision: https://reviews.llvm.org/D22032
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277084 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276435:
Hans Wennborg [Thu, 28 Jul 2016 23:29:33 +0000 (23:29 +0000)]
Merging r276435:
------------------------------------------------------------------------
r276435 | arsenm | 2016-07-22 10:01:21 -0700 (Fri, 22 Jul 2016) | 4 lines

AMDGPU: Fix i1 fp_to_int

R600's i1 fp_to_uint selected but was incorrect according to
what instcombine constant folds to.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277082 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276119:
Hans Wennborg [Thu, 28 Jul 2016 23:18:47 +0000 (23:18 +0000)]
Merging r276119:
------------------------------------------------------------------------
r276119 | yaxunl | 2016-07-20 07:38:06 -0700 (Wed, 20 Jul 2016) | 3 lines

AMDGPU: Fix bug causing crash due to invalid opencl version metadata.

Differential Revision: https://reviews.llvm.org/D22526
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277079 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276956:
Hans Wennborg [Thu, 28 Jul 2016 23:15:39 +0000 (23:15 +0000)]
Merging r276956:
------------------------------------------------------------------------
r276956 | majnemer | 2016-07-27 22:03:22 -0700 (Wed, 27 Jul 2016) | 6 lines

[CodeView] Don't crash on functions without subprograms

A function may have instructions annotated with debug info without
having a subprogram.

This fixes PR28747.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277078 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r275869:
Hans Wennborg [Thu, 28 Jul 2016 23:12:00 +0000 (23:12 +0000)]
Merging r275869:
------------------------------------------------------------------------
r275869 | arsenm | 2016-07-18 11:34:53 -0700 (Mon, 18 Jul 2016) | 7 lines

AMDGPU: Remove dead check in AMDGPUPromoteAlloca

This is currently only called with GEP users. A direct
alloca would only happen with current typed pointers
for arrays which are a perverse case.

Also fix crashes on 0 x and 1 x arrays.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277077 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r275868:
Hans Wennborg [Thu, 28 Jul 2016 23:10:33 +0000 (23:10 +0000)]
Merging r275868:
------------------------------------------------------------------------
r275868 | arsenm | 2016-07-18 11:34:48 -0700 (Mon, 18 Jul 2016) | 4 lines

AMDGPU: Remove dead code and redundant check

Non intrinsic calls aren't really handled, and this
IntrinsicInst dyn_cast checks for the function for us.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277076 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r275981 and r276740:
Hans Wennborg [Thu, 28 Jul 2016 15:38:57 +0000 (15:38 +0000)]
Merging r275981 and r276740:
------------------------------------------------------------------------
r275981 | rksimon | 2016-07-19 08:07:43 -0700 (Tue, 19 Jul 2016) | 13 lines

[X86][SSE] Reimplement SSE fp2si conversion intrinsics instead of using generic IR

D20859 and D20860 attempted to replace the SSE (V)CVTTPS2DQ and VCVTTPD2DQ truncating conversions with generic IR instead.

It turns out that the behaviour of these intrinsics is different enough from generic IR that this will cause problems, INF/NAN/out of range values are guaranteed to result in a 0x80000000 value - which plays havoc with constant folding which converts them to either zero or UNDEF. This is also an issue with the scalar implementations (which were already generic IR and what I was trying to match).

This patch changes both scalar and packed versions back to using x86-specific builtins.

It also deals with the other scalar conversion cases that are runtime rounding mode dependent and can have similar issues with constant folding.

A companion clang patch is at D22105

Differential Revision: https://reviews.llvm.org/D22106
------------------------------------------------------------------------

------------------------------------------------------------------------
r276740 | rksimon | 2016-07-26 03:41:28 -0700 (Tue, 26 Jul 2016) | 5 lines

[X86][SSE] Fixed issue with memory folding of (v)cvtsd2ss intrinsics

Fixed typo in the intrinsic definitions of (v)cvtsd2ss with memory folding.

This was only unearthed when rL276102 started using the intrinsic again.....
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276990 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBack-port r276209:
Hans Wennborg [Thu, 28 Jul 2016 15:25:03 +0000 (15:25 +0000)]
Back-port r276209:
------------------------------------------------------------------------
r276209 | spatel | 2016-07-20 16:40:01 -0700 (Wed, 20 Jul 2016) | 4 lines

[InstSimplify][InstCombine] don't crash when folding vector selects of icmp

Differential Revision: https://reviews.llvm.org/D22602

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276986 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agodocs: Remove 'if you are using a released version' warning
Hans Wennborg [Wed, 27 Jul 2016 17:06:33 +0000 (17:06 +0000)]
docs: Remove 'if you are using a released version' warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276893 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r275978:
Hans Wennborg [Wed, 27 Jul 2016 15:24:55 +0000 (15:24 +0000)]
Merging r275978:
------------------------------------------------------------------------
r275978 | pgode | 2016-07-19 07:30:21 -0700 (Tue, 19 Jul 2016) | 7 lines

[AArch64] PredictableSelectIsExpensive for Vulcan.

Adding PredictableSelectIsExpensive for Vulcan

Differential Revision: https://reviews.llvm.org/D22448

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276880 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276015:
Hans Wennborg [Tue, 26 Jul 2016 21:22:57 +0000 (21:22 +0000)]
Merging r276015:
------------------------------------------------------------------------
r276015 | vedantk | 2016-07-19 13:16:08 -0700 (Tue, 19 Jul 2016) | 7 lines

[tsan] Don't instrument __llvm_gcov_global_state_pred or __llvm_gcda*

r274801 did not go far enough to allow gcov+tsan to cooperate. With this
commit it's possible to run the following code without false positives:

  std::thread T1(fib), T2(fib);
  T1.join(); T2.join();
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276810 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276109:
Hans Wennborg [Tue, 26 Jul 2016 15:58:53 +0000 (15:58 +0000)]
Merging r276109:
------------------------------------------------------------------------
r276109 | rengolin | 2016-07-20 05:16:38 -0700 (Wed, 20 Jul 2016) | 20 lines

[docs] Fixing Sphinx warnings to unclog the buildbot

Lots of blocks had "llvm" or "nasm" syntax types but either weren't following
the syntax, or the syntax has changed (and sphinx hasn't keep up) or the type
doesn't even exist (nasm?).

Other documents had :options: what were invalid. I only removed those that had
warnings, and left the ones that didn't, in order to follow the principle of
least surprise.

This is like this for ages, but the buildbot is now failing on errors. It may
take a while to upgrade the buildbot's sphinx, if that's even possible, but
that shouldn't stop us from getting docs updates (which seem down for quite
a while).

Also, we're not losing any syntax highlight, since when it doesn't parse, it
doesn't colour. Ie. those blocks are not being highlighted anyway.

I'm trying to get all docs in one go, so that it's easy to revert later if we
do fix, or at least easy to know what's to fix.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276758 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276510:
Hans Wennborg [Mon, 25 Jul 2016 20:53:27 +0000 (20:53 +0000)]
Merging r276510:
------------------------------------------------------------------------
r276510 | majnemer | 2016-07-22 19:56:49 -0700 (Fri, 22 Jul 2016) | 9 lines

[LoopUnrollAnalyzer] Handle out of bounds accesses in visitLoad

While we handed loads past the end of an array, we didn't handle loads
_before_ the array.

This fixes PR28062.

N.B. While the bug in the code is obvious, I am struggling to craft a
test case which is reasonable in size.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276688 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r276077:
Hans Wennborg [Mon, 25 Jul 2016 17:45:34 +0000 (17:45 +0000)]
Merging r276077:
------------------------------------------------------------------------
r276077 | mzolotukhin | 2016-07-19 18:55:27 -0700 (Tue, 19 Jul 2016) | 4 lines

Revert "Revert r275883 and r275891. They seem to cause PR28608."

This reverts commit r276064, and thus reapplies r275891 and r275883 with
a fix for PR28608.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276665 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMerging r275928 and r276438:
Hans Wennborg [Mon, 25 Jul 2016 17:42:22 +0000 (17:42 +0000)]
Merging r275928 and r276438:
------------------------------------------------------------------------
r275928 | arsenm | 2016-07-18 16:09:51 -0700 (Mon, 18 Jul 2016) | 1 line

AMDGPU: Fix test name and broken CHECK-LABEL
------------------------------------------------------------------------

------------------------------------------------------------------------
r276438 | arsenm | 2016-07-22 10:01:33 -0700 (Fri, 22 Jul 2016) | 6 lines

AMDGPU: Fix groupstaticsize for large LDS

The size can exceed s_movk_i32's limit, and we don't
want to use it this early since it inhibits optimizations.

This should probably be merged to the release branch.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@276664 91177308-0d34-0410-b5e6-96231b3b80d8