oota-llvm.git
10 years agoFix layering StringRef copy using BumpPtrAllocator.
Nick Kledzik [Wed, 5 Feb 2014 22:22:56 +0000 (22:22 +0000)]
Fix layering StringRef copy using BumpPtrAllocator.

Now to copy a string into a BumpPtrAllocator and get a StringRef to the copy:

   StringRef myCopy = myStr.copy(myAllocator);

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200885 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[RegAlloc] Add a last chance recoloring mechanism when everything else failed to
Quentin Colombet [Wed, 5 Feb 2014 22:13:59 +0000 (22:13 +0000)]
[RegAlloc] Add a last chance recoloring mechanism when everything else failed to
find a register.

The idea is to choose a color for the variable that cannot be allocated and
recolor its interferences around. Unlike the current register allocation scheme,
it is allowed to change the color of an already assigned (but maybe not
splittable or spillable) live interval while propagating this change to its
neighbors.
In other word, there are two things that may help finding an available color:
- Already assigned variables (RS_Done) can be recolored to different color.
- The recoloring allows to catch solutions that needs to touch more that just
  the neighbors of the current allocated variable.

E.g.,
vA can use {R1, R2    }
vB can use {    R2, R3}
vC can use {R1        }
Where vA, vB, and vC cannot be split anymore (they are reloads for instance) and
they all interfere.

vA is assigned R1
vB is assigned R2
vC tries to evict vA but vA is already done.
=> Regular register allocation heuristic fails.

Last chance recoloring kicks in:
vC does as if vA was evicted => vC uses R1.
vC is marked as fixed.
vA needs to find a color.
None are available.
vA cannot evict vC: vC is a fixed virtual register now.
vA does as if vB was evicted => vA uses R2.
vB needs to find a color.
R3 is available.
Recoloring => vC = R1, vA = R2, vB = R3.

<rdar://problem/15947839>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200883 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[PM] Don't require analysis results to be const in the new pass manager.
Chandler Carruth [Wed, 5 Feb 2014 21:41:42 +0000 (21:41 +0000)]
[PM] Don't require analysis results to be const in the new pass manager.

I think this was just over-eagerness on my part. The analysis results
need to often be non-const because they need to (in some cases at least)
be updated by the transformation pass in order to remain correct. It
also makes lazy analyses (a common case) needlessly annoying to write in
order to make their entire state mutable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200881 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove support for not using .loc directives.
Rafael Espindola [Wed, 5 Feb 2014 18:00:21 +0000 (18:00 +0000)]
Remove support for not using .loc directives.

Clang itself was not using this. The only way to access it was via llc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200862 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Fix an invalid check for duplicate option categories."
Rafael Espindola [Wed, 5 Feb 2014 17:49:31 +0000 (17:49 +0000)]
Revert "Fix an invalid check for duplicate option categories."

This reverts commit r200853.

It was causing clang/Analysis/checker-plugins.c to crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200858 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Add NaCl target and forbid indexed loads and stores for it
Petar Jovanovic [Wed, 5 Feb 2014 17:19:30 +0000 (17:19 +0000)]
[mips] Add NaCl target and forbid indexed loads and stores for it

This patch adds NaCl target for Mips. It also forbids indexed loads and
stores if the target is NaCl.

Patch by Sasa Stankovic.

Differential Revision: http://llvm-reviews.chandlerc.com/D2690

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200855 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix an invalid check for duplicate option categories.
Alexander Kornienko [Wed, 5 Feb 2014 16:56:37 +0000 (16:56 +0000)]
Fix an invalid check for duplicate option categories.

Summary:
The check performed in the comparator is invalid, as some STL
implementations enforce strict weak ordering by calling the comparator with the
same value. This check was also in a wrong place: the assertion would only fire
when -help was used. The new check is performed each time the category is
registered (we are not going to have thousands of them, so it's fine to do it in
O(N^2)).

Reviewers: jordan_rose

Reviewed By: jordan_rose

CC: cfe-commits, alexmc
Differential Revision: http://llvm-reviews.chandlerc.com/D2699

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200853 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomips: XFAIL non-extern-addend-smallcodemodel test
Petar Jovanovic [Wed, 5 Feb 2014 16:47:59 +0000 (16:47 +0000)]
mips: XFAIL non-extern-addend-smallcodemodel test

Small code model (and default reloc model) set Reloc::PIC_ in this test,
and PIC is not yet supported in MCJIT for MIPS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200852 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAVX-512: optimized icmp -> sext -> icmp pattern
Elena Demikhovsky [Wed, 5 Feb 2014 16:17:36 +0000 (16:17 +0000)]
AVX-512: optimized icmp -> sext -> icmp pattern

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200849 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTest commit
Alon Mishne [Wed, 5 Feb 2014 14:23:18 +0000 (14:23 +0000)]
Test commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200843 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: Resolve thumb_bl fixup in same MCFragment.
Logan Chien [Wed, 5 Feb 2014 14:15:16 +0000 (14:15 +0000)]
ARM: Resolve thumb_bl fixup in same MCFragment.

In Thumb1 mode, bl instruction might be selected for branches between
basic blocks in the function if the offset is greater than 2KB.
However, this might cause SEGV because the destination symbol
is not marked as thumb function and the execution mode will be reset
to ARM mode.

Since we are sure that these symbols are in the same data fragment, we
can simply resolve these local symbols, and don't emit any relocation
information for this bl instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200842 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAVX-512: fixed a bug in EVEX encoding (the bug appeared after r200624)
Elena Demikhovsky [Wed, 5 Feb 2014 13:03:01 +0000 (13:03 +0000)]
AVX-512: fixed a bug in EVEX encoding (the bug appeared after r200624)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200837 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Add pattern for zero-extending i1 to i32
Michel Danzer [Wed, 5 Feb 2014 09:48:05 +0000 (09:48 +0000)]
R600/SI: Add pattern for zero-extending i1 to i32

Fixes opencl-example if_* tests with radeonsi.

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

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200830 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoShrink the size of CodeGenInstruction a little bit by using bitfields. 32 bools seeme...
Craig Topper [Wed, 5 Feb 2014 09:10:40 +0000 (09:10 +0000)]
Shrink the size of CodeGenInstruction a little bit by using bitfields. 32 bools seemed excessive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200829 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGet rid of a vector copy by just making a pointer out of the reference returned by...
Craig Topper [Wed, 5 Feb 2014 07:56:49 +0000 (07:56 +0000)]
Get rid of a vector copy by just making a pointer out of the reference returned by getInstructionsByEnumValue instead of assigning it to a new vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200828 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix a vector that was passed by value instead of reference.
Craig Topper [Wed, 5 Feb 2014 07:27:49 +0000 (07:27 +0000)]
Fix a vector that was passed by value instead of reference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200827 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: Enable use of relocation type tlsldo in debug info for tls data.
Kai Nacke [Wed, 5 Feb 2014 07:23:09 +0000 (07:23 +0000)]
ARM: Enable use of relocation type tlsldo in debug info for tls data.

This fixes PR18554.

Reviewers: Renato Golin, Keith Walker

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200826 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix a doxygen comment referencing the wrong method name.
Craig Topper [Wed, 5 Feb 2014 07:21:07 +0000 (07:21 +0000)]
Fix a doxygen comment referencing the wrong method name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200825 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove matching for x86 BMI BLSI/BLSMSK/BLSR instructions to isel patterns instead...
Craig Topper [Wed, 5 Feb 2014 07:09:40 +0000 (07:09 +0000)]
Move matching for x86 BMI BLSI/BLSMSK/BLSR instructions to isel patterns instead of DAG combine. This weakens the ability to fold loads with them because we aren't able to match patterns that load the same thing twice. But maybe we should fix that if we care. The peephole optimizer will be able to fold some loads in its absense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200824 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAVX-512: Added intrinsic for cvtph2ps.
Elena Demikhovsky [Wed, 5 Feb 2014 07:05:03 +0000 (07:05 +0000)]
AVX-512: Added intrinsic for cvtph2ps.
Added VPTESTNM instruction.
Added a pattern to vselect (lit tests will follow).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200823 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd CheckChildInteger to ISelMatcher operations. Removes nearly 2000 bytes from X86...
Craig Topper [Wed, 5 Feb 2014 05:44:28 +0000 (05:44 +0000)]
Add CheckChildInteger to ISelMatcher operations. Removes nearly 2000 bytes from X86 matcher table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200821 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse the information provided by getFlags to unify some code in llvm-nm.
Rafael Espindola [Wed, 5 Feb 2014 05:19:19 +0000 (05:19 +0000)]
Use the information provided by getFlags to unify some code in llvm-nm.

It is not clear how much we should try to expose in getFlags. For example,
should there be a SF_Object and a SF_Text?

But for information that is already being exposed, we may as well use it in
llvm-nm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200820 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix configure to find arc4random via header files.
Todd Fiala [Wed, 5 Feb 2014 05:04:36 +0000 (05:04 +0000)]
Fix configure to find arc4random via header files.

ISSUE:

On Ubuntu 12.04 LTS, arc4random is provided by libbsd.so, which is a
transitive dependency of libedit. If a system had libedit on it that
was implemented in terms of libbsd.so, then the arc4random test,
previously implemented as a linker test, would succeed with -ledit.
However, on Ubuntu this would also require a #include <bsd/stdlib.h>.
This caused a build breakage on configure-based Ubuntu 12.04 with
libedit installed.

FIX:

This fix changes configure to test for arc4random by searching for it
in the standard header files. On Ubuntu 12.04, this test now properly
fails to find arc4random as it is not defined in the default header
locations. It also tweaks the #define names to match the output of the
header check command, which is slightly different than the linker
function check #defines.

I tested the following scenarios:

(1) Ubuntu 12.04 without the libedit package [did not find arc4random,
as expected]

(2) Ubuntu 12.04 with libedit package [properly did not find
arc4random, as expected]

(3) Ubuntu 12.04 with most recent libedit, custom built, and not
dependent on libbsd.so [properly did not find arc4random, as
expected].

(4) FreeBSD 10.0B1 [properly found arc4random, as expected]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200819 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd a test for printing absolute symbols in ELF.
Rafael Espindola [Wed, 5 Feb 2014 04:36:47 +0000 (04:36 +0000)]
Add a test for printing absolute symbols in ELF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200818 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Deliberately get all LLVM library dependencies for standalone builds.
Jordan Rose [Wed, 5 Feb 2014 00:02:42 +0000 (00:02 +0000)]
[CMake] Deliberately get all LLVM library dependencies for standalone builds.

CMake won't expand the dependency graph for us if the dependencies are in
another project, which leads to link errors in the standalone build.
This is a refinement of r200765.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200812 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Move -stdlib=libc++ handling into its own file.
Jordan Rose [Wed, 5 Feb 2014 00:02:37 +0000 (00:02 +0000)]
[CMake] Move -stdlib=libc++ handling into its own file.

r200744 moved this into cmake/config-ix.cmake, so that it would happen very
early in the build process. However, standalone builds of Clang and other
external projects never include this file (which is correct).

Now, -stdlib=libc++ and the LLVM_COMPILER_IS_GCC_COMPATIBLE option are
both set in a new include file, HandleLLVMStdlib, which is included by
both config-ix.cmake and HandleLLVMOptions.cmake. This preserves existing
behavior for projects relying on HandleLLVMOptions and still does the
right thing for builds of LLVM itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200811 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSmall fix for llvm-nm handling of weak symbols on ELF (print 'v').
Rafael Espindola [Tue, 4 Feb 2014 23:53:15 +0000 (23:53 +0000)]
Small fix for llvm-nm handling of weak symbols on ELF (print 'v').

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200808 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUpdate testing case for r200806.
Manman Ren [Tue, 4 Feb 2014 23:53:12 +0000 (23:53 +0000)]
Update testing case for r200806.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200807 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix wording of warning message about invalid debug info.
Manman Ren [Tue, 4 Feb 2014 23:49:02 +0000 (23:49 +0000)]
Fix wording of warning message about invalid debug info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200806 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd a test for common symbols in coff.
Rafael Espindola [Tue, 4 Feb 2014 23:18:52 +0000 (23:18 +0000)]
Add a test for common symbols in coff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200803 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSilence a warning:
Chandler Carruth [Tue, 4 Feb 2014 22:53:45 +0000 (22:53 +0000)]
Silence a warning:

In file included from ../unittests/Support/ProcessTest.cpp:11:
../utils/unittest/googletest/include/gtest/gtest.h:1448:28: warning: comparison of integers of different signs: 'const unsigned int' and 'const int' [-Wsign-compare]
GTEST_IMPL_CMP_HELPER_(NE, !=);
~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../utils/unittest/googletest/include/gtest/gtest.h:1433:12: note: expanded from macro 'GTEST_IMPL_CMP_HELPER_'
  if (val1 op val2) {\
           ^
../unittests/Support/ProcessTest.cpp:46:3: note: in instantiation of function template specialization 'testing::internal::CmpHelperNE<unsigned int, int>' requested here
  EXPECT_NE((r1 | r2), 0);
  ^

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200801 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unused SF_ThreadLocal.
Rafael Espindola [Tue, 4 Feb 2014 22:50:47 +0000 (22:50 +0000)]
Remove unused SF_ThreadLocal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200800 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Fix include order in GCOV.cpp
Justin Bogner [Tue, 4 Feb 2014 21:03:17 +0000 (21:03 +0000)]
llvm-cov: Fix include order in GCOV.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200796 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSimplifyLibCalls: Push TLI through the exp2->ldexp transform.
Benjamin Kramer [Tue, 4 Feb 2014 20:27:23 +0000 (20:27 +0000)]
SimplifyLibCalls: Push TLI through the exp2->ldexp transform.

For the odd case of platforms with exp2 available but not ldexp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200795 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAvoid using EL_GETFP.
Peter Collingbourne [Tue, 4 Feb 2014 20:04:46 +0000 (20:04 +0000)]
Avoid using EL_GETFP.

This should fix the build against old versions of libedit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200794 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] Only 213 FMA3 variants should be marked commutable.
Lang Hames [Tue, 4 Feb 2014 19:42:47 +0000 (19:42 +0000)]
[X86] Only 213 FMA3 variants should be marked commutable.

Commuting the 231 and 132 variants would swap addends and
multiplicands/multipliers, which isn't valid.

I'm still trying to reduce a decent test case for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200792 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agocleanup: scc_iterator consumers should use isAtEnd
Duncan P. N. Exon Smith [Tue, 4 Feb 2014 19:19:07 +0000 (19:19 +0000)]
cleanup: scc_iterator consumers should use isAtEnd

No functional change.  Updated loops from:

    for (I = scc_begin(), E = scc_end(); I != E; ++I)

to:

    for (I = scc_begin(); !I.isAtEnd(); ++I)

for teh win.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200789 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Implement %hi(sym1 - sym2) and %lo(sym1 - sym2) expressions
Petar Jovanovic [Tue, 4 Feb 2014 18:41:57 +0000 (18:41 +0000)]
[mips] Implement %hi(sym1 - sym2) and %lo(sym1 - sym2) expressions

Patch implements %hi(sym1 - sym2) and %lo(sym1 - sym2) expressions for MIPS
by creating target expression class MipsMCExpr.

Patch by Sasa Stankovic.

Differential Revision: http://llvm-reviews.chandlerc.com/D2592

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200783 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoEvery target uses .align. Simplify.
Rafael Espindola [Tue, 4 Feb 2014 18:39:51 +0000 (18:39 +0000)]
Every target uses .align. Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200782 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse the default values.
Rafael Espindola [Tue, 4 Feb 2014 18:34:04 +0000 (18:34 +0000)]
Use the default values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200781 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix PR18345: ldr= pseudo instruction produces incorrect code when using in inline...
David Peixotto [Tue, 4 Feb 2014 17:22:40 +0000 (17:22 +0000)]
Fix PR18345: ldr= pseudo instruction produces incorrect code when using in inline assembly

This patch fixes the ldr-pseudo implementation to work when used in
inline assembly.  The fix is to move arm assembler constant pools
from the ARMAsmParser class to the ARMTargetStreamer class.

Previously we kept the assembler generated constant pools in the
ARMAsmParser object. This does not work for inline assembly because
a new parser object is created for each blob of inline assembly.
This patch moves the constant pools to the ARMTargetStreamer class
so that the constant pool will remain alive for the entire code
generation process.

An ARMTargetStreamer class is now required for the arm backend.
There was no existing implementation for MachO, only Asm and ELF.
Instead of creating an empty MachO subclass, we decided to make the
ARMTargetStreamer a non-abstract class and provide default
(llvm_unreachable) implementations for the non constant-pool related
methods.

Differential Revision: http://llvm-reviews.chandlerc.com/D2638

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200777 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Expand i1 BR_CC
Tom Stellard [Tue, 4 Feb 2014 17:18:43 +0000 (17:18 +0000)]
R600/SI: Expand i1 BR_CC

This fixes a crashes in the OpenCV test suite and also the scrypt
kernel in bfgminer.

I was unable to come up with a reduced test case for this.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200776 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Don't assume copies will be coalesced in SIFixSGPRCopies
Tom Stellard [Tue, 4 Feb 2014 17:18:42 +0000 (17:18 +0000)]
R600/SI: Don't assume copies will be coalesced in SIFixSGPRCopies

There is no lit test for this, because it would be too big and
complicated, but it does fix a crash in the Arithm/Absdiff.* OpenCV test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200775 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Custom lower i64 ISD::SELECT
Tom Stellard [Tue, 4 Feb 2014 17:18:40 +0000 (17:18 +0000)]
R600/SI: Custom lower i64 ISD::SELECT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200774 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Enable vector fpow.
Tom Stellard [Tue, 4 Feb 2014 17:18:37 +0000 (17:18 +0000)]
R600: Enable vector fpow.

The OpenCL specs say: "The vector versions of the math functions operate
component-wise. The description is per-component."

Patch by: Jan Vesely

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200773 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHowToReleaseLLVM: Add information about dot releases
Tom Stellard [Tue, 4 Feb 2014 17:18:20 +0000 (17:18 +0000)]
HowToReleaseLLVM: Add information about dot releases

Based on the following discussion:
http://llvm.1065342.n5.nabble.com/LLVM-3-4-stable-releases-td65005.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200772 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoOS X: the correct function is __sincospif_stret, not __sincospi_stretf
Tim Northover [Tue, 4 Feb 2014 16:28:20 +0000 (16:28 +0000)]
OS X: the correct function is __sincospif_stret, not __sincospi_stretf

rdar://problem/13729466

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200771 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM & AArch64: merge NEON absolute compare intrinsics
Tim Northover [Tue, 4 Feb 2014 14:55:42 +0000 (14:55 +0000)]
ARM & AArch64: merge NEON absolute compare intrinsics

There was an extremely confusing proliferation of LLVM intrinsics to implement
the vacge & vacgt instructions. This combines them all into two polymorphic
intrinsics, shared across both backends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200768 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoImplemented support for Process::GetRandomNumber on Windows.
Aaron Ballman [Tue, 4 Feb 2014 14:49:21 +0000 (14:49 +0000)]
Implemented support for Process::GetRandomNumber on Windows.

Patch thanks to Stephan Tolksdorf!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200767 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Get rid of llvm_config() to expand dependencies.
NAKAMURA Takumi [Tue, 4 Feb 2014 14:42:14 +0000 (14:42 +0000)]
[CMake] Get rid of llvm_config() to expand dependencies.

CMake's target_link_libraries() will manage dependencies.

Configuration time may be reduced by a few seconds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200765 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] LLVM-Config.cmake: Split explicit_map_components_to_libraries and introduce...
NAKAMURA Takumi [Tue, 4 Feb 2014 14:42:04 +0000 (14:42 +0000)]
[CMake] LLVM-Config.cmake: Split explicit_map_components_to_libraries and introduce llvm_map_components_to_libnames and llvm_expand_dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200764 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] add_llvm_loadable_module: Fixup r200762, I mis-eliminated wrong line. :(
NAKAMURA Takumi [Tue, 4 Feb 2014 13:40:31 +0000 (13:40 +0000)]
[CMake] add_llvm_loadable_module: Fixup r200762, I mis-eliminated wrong line. :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200763 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert r122395, "Fixes file extension for loadable modules on OS X."
NAKAMURA Takumi [Tue, 4 Feb 2014 13:33:13 +0000 (13:33 +0000)]
Revert r122395, "Fixes file extension for loadable modules on OS X."

In trunk, every users assume add_llvm_loadable_module as "loadable module" and no one sets neither SHARED, ... nor also MODULE!
Unfortunately, all loadable modules were linked as not "MODULE" but "SHARED".

If this change caused any regressions, I wish guys to fix it properly. ;)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200762 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd a note to documentation that Clang + libstdc++ 4.7.2 can not be used to build...
Dmitri Gribenko [Tue, 4 Feb 2014 12:02:13 +0000 (12:02 +0000)]
Add a note to documentation that Clang + libstdc++ 4.7.2 can not be used to build LLD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200758 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Implement the preserve-paths flag
Justin Bogner [Tue, 4 Feb 2014 10:45:02 +0000 (10:45 +0000)]
llvm-cov: Implement the preserve-paths flag

Until now, when a path in a gcno file included a directory, we would
emit our .gcov file in that directory, whereas gcov always emits the
file in the current directory. In doing so, this implements gcov's
strange name-mangling -p flag, which is needed to avoid clobbering
files when two with the same name exist in different directories.

The path mangling is a bit ugly and only handles unix-like paths, but
it's simple, and it doesn't make any guesses as to how it should
behave outside of what gcov documents. If we decide this should be
cross platform later, we can consider the compatibility implications
then.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200754 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: fix fast-isel assertion failure
Tim Northover [Tue, 4 Feb 2014 10:38:46 +0000 (10:38 +0000)]
ARM: fix fast-isel assertion failure

Missing braces on if meant we inserted both ARM and Thumb load for a litpool
entry. This didn't end well.

rdar://problem/15959157

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200752 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Revert r200695 and fix the problem with missing -fno-function-sections in...
Alexey Samsonov [Tue, 4 Feb 2014 08:15:46 +0000 (08:15 +0000)]
[CMake] Revert r200695 and fix the problem with missing -fno-function-sections in a different way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200745 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Add -stdlib=libc++ to host Clang build flags before performing any header...
Alexey Samsonov [Tue, 4 Feb 2014 07:55:18 +0000 (07:55 +0000)]
[CMake] Add -stdlib=libc++ to host Clang build flags before performing any header search

If LLVM_ENABLE_LIBCXX is specified, we should append -stdlib=libc++ to build
flags as early as possible, in particular, before we check for header presence
(as -stdlib=libc++ modifies header lookup rules). Otherwise we can find a header
at configure time (w/o -stdlib=libc++) but fail to find it at build time
(with -stdlib=libc++). See PR18569 for more details.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200744 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Fix fneg for 0.0
Michel Danzer [Tue, 4 Feb 2014 07:12:38 +0000 (07:12 +0000)]
R600/SI: Fix fneg for 0.0

V_ADD_F32 with source modifier does not produce -0.0 for this. Just
manipulate the sign bit directly instead.

Also add a pattern for (fneg (fabs ...)).

Fixes a bunch of bit encoding piglit tests with radeonsi.

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200743 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Implement the object-directory flag
Justin Bogner [Tue, 4 Feb 2014 06:41:43 +0000 (06:41 +0000)]
llvm-cov: Implement the object-directory flag

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200741 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Ignore missing .gcda files
Justin Bogner [Tue, 4 Feb 2014 06:41:39 +0000 (06:41 +0000)]
llvm-cov: Ignore missing .gcda files

When gcov is run without gcda data, it acts as if the counts are all
zero and labels the file as - to indicate that there was no data. We
should do the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200740 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-cov: Document the llvm-cov tests
Justin Bogner [Tue, 4 Feb 2014 06:41:33 +0000 (06:41 +0000)]
llvm-cov: Document the llvm-cov tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200739 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRegAllocGreedy.cpp: Use more simple value as Hysteresis, to suppress -mfpmath-depende...
NAKAMURA Takumi [Tue, 4 Feb 2014 06:29:38 +0000 (06:29 +0000)]
RegAllocGreedy.cpp: Use more simple value as Hysteresis, to suppress -mfpmath-dependent behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200738 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert: ARM: Enable use of relocation type tlsldo in debug info for tls data.
Kai Nacke [Tue, 4 Feb 2014 06:07:00 +0000 (06:07 +0000)]
Revert: ARM: Enable use of relocation type tlsldo in debug info for tls data.

There seems to be a new problem with the debug info in the test case.
I'll have to investigate this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200737 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd strchr(p, 0) -> p + strlen(p) to SimplifyLibCalls
Kai Nacke [Tue, 4 Feb 2014 05:55:16 +0000 (05:55 +0000)]
Add strchr(p, 0) -> p + strlen(p) to SimplifyLibCalls

Add the missing transformation strchr(p, 0) -> p + strlen(p) to SimplifyLibCalls
and remove the ToDo comment.

Reviewer: Duncan P.N. Exan Smith

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200736 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: Enable use of relocation type tlsldo in debug info for tls data.
Kai Nacke [Tue, 4 Feb 2014 05:43:09 +0000 (05:43 +0000)]
ARM: Enable use of relocation type tlsldo in debug info for tls data.

This fixes PR18554.

Reviewers: Renato Golin, Keith Walker

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200735 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero...
David Blaikie [Tue, 4 Feb 2014 01:23:52 +0000 (01:23 +0000)]
DebugInfo: Remove some unneeded conditionals now that DIBuilder no longer emits zero-length arrays as {i32 0}

A bunch of test cases needed to be cleaned up for this, many my fault -
when implementid imported modules I updated test cases by simply
duplicating the prior metadata field - which wasn't always the empty
metadata entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200731 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert r200150, "[CMake] tablegen(): Use -I <dir> according to the list by include_di...
NAKAMURA Takumi [Tue, 4 Feb 2014 01:17:12 +0000 (01:17 +0000)]
Revert r200150, "[CMake] tablegen(): Use -I <dir> according to the list by include_directories()."

It missed include/llvm/Target. Could I avoid GLOB_RECURSE anyways? :(
FYI, I intended to prune ${LLVM_MAIN_INCLUDE_DIR} in TableGen.cmake in r200150.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200730 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove error handling down to getSymbolNMTypeChar.
Rafael Espindola [Tue, 4 Feb 2014 00:21:18 +0000 (00:21 +0000)]
Move error handling down to getSymbolNMTypeChar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200727 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSelf-memcpy-elision and memcpy of constant byte to memset transforms don't care how...
Nick Lewycky [Tue, 4 Feb 2014 00:18:54 +0000 (00:18 +0000)]
Self-memcpy-elision and memcpy of constant byte to memset transforms don't care how many bytes you were trying to transfer. Sink that safety test after those transforms. Noticed by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200726 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDIBuilder: simplify array generation to produce true zero-length arrays
David Blaikie [Mon, 3 Feb 2014 23:08:54 +0000 (23:08 +0000)]
DIBuilder: simplify array generation to produce true zero-length arrays

For some anachronistic reason we were producing {i32 0} for zero-length
debug info arrays.

(this change is paired with a Clang change and may cause temporary
buildbot noise)

Let's not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200721 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd DEBUG_TYPE to SIAnnotateControlFlow
Matt Arsenault [Mon, 3 Feb 2014 22:58:05 +0000 (22:58 +0000)]
Add DEBUG_TYPE to SIAnnotateControlFlow

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200720 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoinalloca: Don't remove dead arguments in the presence of inalloca args
Reid Kleckner [Mon, 3 Feb 2014 20:42:49 +0000 (20:42 +0000)]
inalloca: Don't remove dead arguments in the presence of inalloca args

It disturbs the layout of the parameters in memory and registers,
leading to problems in the backend.

The plan for optimizing internal inalloca functions going forward is to
essentially SROA the argument memory and demote any captured arguments
(things that aren't trivially written by a load or store) to an indirect
pointer to a static alloca.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200717 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAArch64 & ARM: refactor crypto intrinsics to take scalars
Tim Northover [Mon, 3 Feb 2014 17:27:49 +0000 (17:27 +0000)]
AArch64 & ARM: refactor crypto intrinsics to take scalars

Some of the SHA instructions take a scalar i32 as one argument (largely because
they work on 160-bit hash fragments). This wasn't reflected in the IR
previously, with ARM and AArch64 choosing different types (<4 x i32> and <1 x
i32> respectively) which was ugly.

This makes all the affected intrinsics take a uniform "i32", allowing them to
become non-polymorphic at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200706 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoExpand vector bswap in LegalizeVectorOps
Hal Finkel [Mon, 3 Feb 2014 17:27:25 +0000 (17:27 +0000)]
Expand vector bswap in LegalizeVectorOps

ISD::BSWAP was missing from the list of node types that should be expanded
element-wise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200705 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUndef'ing _WIN32_IE to silence an MSVC warning about redefining a macro value.
Aaron Ballman [Mon, 3 Feb 2014 17:20:26 +0000 (17:20 +0000)]
Undef'ing _WIN32_IE to silence an MSVC warning about redefining a macro value.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200704 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd a note about Clang+LLVM on Sparc64.
Venkatraman Govindaraju [Mon, 3 Feb 2014 15:28:26 +0000 (15:28 +0000)]
Add a note about Clang+LLVM on Sparc64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200699 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove outdated & incorrect part of comment.
Eli Bendersky [Mon, 3 Feb 2014 14:33:51 +0000 (14:33 +0000)]
Remove outdated & incorrect part of comment.

This comment was copied over from another class in r34170, where it made sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200697 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't use -ffunction-sections if -fno-function-sections is not supported in the compiler.
Evgeniy Stepanov [Mon, 3 Feb 2014 13:57:09 +0000 (13:57 +0000)]
Don't use -ffunction-sections if -fno-function-sections is not supported in the compiler.

This will disable -ffunction-sections in older versions of Clang where it
breaks build of sanitizer runtime library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200695 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoIntroduce SmallPtrSetImpl<T *> which allows insert, erase, count, and
Chandler Carruth [Mon, 3 Feb 2014 11:24:21 +0000 (11:24 +0000)]
Introduce SmallPtrSetImpl<T *> which allows insert, erase, count, and
iteration. This alows the majority of operations to be performed without
encoding a specific small size. It follows the model of
SmallVectorImpl<T>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200688 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRename the non-templated base class of SmallPtrSet to
Chandler Carruth [Mon, 3 Feb 2014 11:24:18 +0000 (11:24 +0000)]
Rename the non-templated base class of SmallPtrSet to
'SmallPtrSetImplBase'. This more closely matches the organization of
SmallVector and should allow introducing a SmallPtrSetImpl which serves
the same purpose as SmallVectorImpl: isolating the element type from the
particular small size chosen. This in turn allows a lot of
simplification of APIs by not coding them against a specific small size
which is rarely needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200687 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unnecessary include of AArch64GenInstrInfo.inc from AArch64Disassembler.cpp...
Craig Topper [Mon, 3 Feb 2014 06:33:17 +0000 (06:33 +0000)]
Remove unnecessary include of AArch64GenInstrInfo.inc from AArch64Disassembler.cpp. None of the GET_ defines were set that would make the include do anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200677 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoLower llvm.expect intrinsic correctly for i1
Duncan P. N. Exon Smith [Sun, 2 Feb 2014 22:43:55 +0000 (22:43 +0000)]
Lower llvm.expect intrinsic correctly for i1

LowerExpectIntrinsic previously only understood the idiom of an expect
intrinsic followed by a comparison with zero. For llvm.expect.i1, the
comparison would be stripped by the early-cse pass.

Patch by Daniel Micay.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200664 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUnaligned access is supported on ARMv6 and ARMv7 for the NetBSD target.
Joerg Sonnenberger [Sun, 2 Feb 2014 21:18:36 +0000 (21:18 +0000)]
Unaligned access is supported on ARMv6 and ARMv7 for the NetBSD target.
Patch from Matt Thomas.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200654 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Move cmake_minimum_required(2.8.8) at the top.
NAKAMURA Takumi [Sun, 2 Feb 2014 16:59:36 +0000 (16:59 +0000)]
[CMake] Move cmake_minimum_required(2.8.8) at the top.

Suggested by Stephen Kelly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200645 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[CMake] Untabify.
NAKAMURA Takumi [Sun, 2 Feb 2014 16:46:35 +0000 (16:46 +0000)]
[CMake] Untabify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200644 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTableGen/X86RecognizableInstr.h: Prune out-of-date "@param isSSE". [-Wdocumentation]
NAKAMURA Takumi [Sun, 2 Feb 2014 10:53:36 +0000 (10:53 +0000)]
TableGen/X86RecognizableInstr.h: Prune out-of-date "@param isSSE". [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200628 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMerge x86 HasOpSizePrefix/HasOpSize16Prefix into a 2-bit OpSize field with 0 meaning...
Craig Topper [Sun, 2 Feb 2014 09:25:09 +0000 (09:25 +0000)]
Merge x86 HasOpSizePrefix/HasOpSize16Prefix into a 2-bit OpSize field with 0 meaning no 0x66 prefix in any mode. Rename Opsize16->OpSize32 and OpSize->OpSize16. The classes now refer to their operand size rather than the mode in which they need a 0x66 prefix. Hopefully can merge REX_W into this as OpSize64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200626 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSimplify some code since VEX and EVEX instructions never have HasOpSizePrefix.
Craig Topper [Sun, 2 Feb 2014 07:46:05 +0000 (07:46 +0000)]
Simplify some code since VEX and EVEX instructions never have HasOpSizePrefix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200625 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMerge HasVEXPrefix/HasEVEXPrefix/HasXOPPrefix into a 2-bit 'encoding' field in TSFlags.
Craig Topper [Sun, 2 Feb 2014 07:08:01 +0000 (07:08 +0000)]
Merge HasVEXPrefix/HasEVEXPrefix/HasXOPPrefix into a 2-bit 'encoding' field in TSFlags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200624 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReplace PPC instruction-size code with MCInstrDesc getSize
Hal Finkel [Sun, 2 Feb 2014 06:12:27 +0000 (06:12 +0000)]
Replace PPC instruction-size code with MCInstrDesc getSize

As part of the cleanup done to enable the disassembler, the PPC instructions
now have a valid Size description field. This can now be used to replace some
custom logic in a few places to compute instruction sizes.

Patch by David Wiberg!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200623 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoLoopVectorizer: Enable unrolling of conditional stores and the load/store
Arnold Schwaighofer [Sun, 2 Feb 2014 03:12:34 +0000 (03:12 +0000)]
LoopVectorizer: Enable unrolling of conditional stores and the load/store
unrolling heuristic per default

Benchmarking on x86_64 (thanks Chandler!) and ARM has shown those options speed
up some benchmarks while not causing any interesting regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200621 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd some xfailed R600 tests for 64-bit private accesses.
Matt Arsenault [Sun, 2 Feb 2014 00:13:12 +0000 (00:13 +0000)]
Add some xfailed R600 tests for 64-bit private accesses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200620 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Fix insertelement with dynamic indices.
Matt Arsenault [Sun, 2 Feb 2014 00:05:35 +0000 (00:05 +0000)]
R600/SI: Fix insertelement with dynamic indices.

This didn't work for any integer vectors, and didn't
work with some sizes of float vectors. This should now
work with all sizes of float and i32 vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200619 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Sparc] Set %o7 as the return address register instead of %i7 in MCRegisterInfo....
Venkatraman Govindaraju [Sat, 1 Feb 2014 18:54:16 +0000 (18:54 +0000)]
[Sparc] Set %o7 as the return address register instead of %i7 in MCRegisterInfo. Also, add CFI instructions to initialize the frame correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200617 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARMTTI: We don't have 16 allocatable scalar registers
Arnold Schwaighofer [Sat, 1 Feb 2014 18:00:25 +0000 (18:00 +0000)]
ARMTTI: We don't have 16 allocatable scalar registers

This caused an regression on libquantum after enabling the new loop vectorizer
unroll heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200616 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMC: Fix .octa output for APInts with BitWidth > 128
David Woodhouse [Sat, 1 Feb 2014 16:52:33 +0000 (16:52 +0000)]
MC: Fix .octa output for APInts with BitWidth > 128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200615 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMC: Add support for .octa
David Woodhouse [Sat, 1 Feb 2014 16:20:59 +0000 (16:20 +0000)]
MC: Add support for .octa

This is a minimal implementation which accepts only constants rather than
full expressions, but that should be perfectly sufficient for all known
users for now.

Patch from PaX Team <pageexec@freemail.hu>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200614 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMC: Add AsmLexer::BigNum token for integers greater than 64 bits
David Woodhouse [Sat, 1 Feb 2014 16:20:54 +0000 (16:20 +0000)]
MC: Add AsmLexer::BigNum token for integers greater than 64 bits

This will be needed for .octa support, but we don't want to just use the
existing AsmLexer::Integer for it and then have to litter all its users
with explicit checks for the size, and make them use the new get APIntVal()
method.

So let the lexer produce an AsmLexer::Integer as before for numbers which
are small enough — which appears to cover what was previously a nasty
special case handling of numbers which don't fit in int64_t but *do* fit
in uint64_t.

Where the number is too large even for that, produce an AsmLexer::BigNum
instead. We do nothing with these except complain about them for now,
but that will be changed shortly...

Based on a patch from PaX Team <pageexec@freemail.hu>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200613 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[LPM] Apply a really big hammer to fix PR18688 by recursively reforming
Chandler Carruth [Sat, 1 Feb 2014 13:35:14 +0000 (13:35 +0000)]
[LPM] Apply a really big hammer to fix PR18688 by recursively reforming
LCSSA when we promote to SSA registers inside of LICM.

Currently, this is actually necessary. The promotion logic in LICM uses
SSAUpdater which doesn't understand how to place LCSSA PHI nodes.
Teaching it to do so would be a very significant undertaking. It may be
worthwhile and I've left a FIXME about this in the code as well as
starting a thread on llvmdev to try to figure out the right long-term
solution.

For now, the PR needs to be fixed. Short of using the promition
SSAUpdater to place both the LCSSA PHI nodes and the promoted PHI nodes,
I don't see a cleaner or cheaper way of achieving this. Fortunately,
LCSSA is relatively lazy and sparse -- it should only update
instructions which need it. We can also skip the recursive variant when
we don't promote to SSA values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200612 91177308-0d34-0410-b5e6-96231b3b80d8