oota-llvm.git
11 years agoHexagon: Typo fix.
Jyotsna Verma [Tue, 28 May 2013 19:01:45 +0000 (19:01 +0000)]
Hexagon: Typo fix.

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

11 years agoRemove the MCRegAliasIterator tables and compute the aliases dynamically.
Chad Rosier [Tue, 28 May 2013 18:08:48 +0000 (18:08 +0000)]
Remove the MCRegAliasIterator tables and compute the aliases dynamically.

The size reduction in the RegDiffLists are rather dramatic.  Here are a few
size differences for MCTargetDesc.o files (before and after) in bytes:
R600 - 36160B - 11184B - 69% reduction
ARM - 28480B - 8368B - 71% reduction
Mips - 816B - 576B - 29% reduction

One side effect of dynamically computing the aliases is that the iterator does
not guarantee that the entries are ordered or that duplicates have been removed.
The documentation implies this is a safe assumption and I found no clients that
requires these attributes (i.e., strict ordering and uniqueness).

My local LNT tester results showed no execution-time failures or significant
compile-time regressions (i.e., beyond what I would consider noise) for -O0g,
-O2 and -O3 runs on x86_64 and i386 configurations.
rdar://12906217

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

11 years agoSimplify code. No functionality change.
Benjamin Kramer [Tue, 28 May 2013 16:39:36 +0000 (16:39 +0000)]
Simplify code. No functionality change.

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

11 years agoRemove double semicolons.
Benjamin Kramer [Tue, 28 May 2013 16:31:26 +0000 (16:31 +0000)]
Remove double semicolons.

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

11 years agoExtend RemapInstruction and friends to take an optional new parameter, a ValueMateria...
James Molloy [Tue, 28 May 2013 15:17:05 +0000 (15:17 +0000)]
Extend RemapInstruction and friends to take an optional new parameter, a ValueMaterializer.

Extend LinkModules to pass a ValueMaterializer to RemapInstruction and friends to lazily create Functions for lazily linked globals. This is a big win when linking small modules with large (mostly unused) library modules.

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

11 years ago[msan] Fix argument shadow alignment.
Evgeniy Stepanov [Tue, 28 May 2013 13:07:43 +0000 (13:07 +0000)]
[msan] Fix argument shadow alignment.

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

11 years agoTypo
Renato Golin [Tue, 28 May 2013 11:28:37 +0000 (11:28 +0000)]
Typo

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

11 years ago[SystemZ] Register compare-and-branch support
Richard Sandiford [Tue, 28 May 2013 10:41:11 +0000 (10:41 +0000)]
[SystemZ] Register compare-and-branch support

This patch adds support for the CRJ and CGRJ instructions.  Support for
the immediate forms will be a separate patch.

The architecture has a large number of comparison instructions.  I think
it's generally better to concentrate on using the "best" comparison
instruction first and foremost, then only use something like CRJ if
CR really was the natual choice of comparison instruction.  The patch
therefore opportunistically converts separate CR and BRC instructions
into a single CRJ while emitting instructions in ISelLowering.

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

11 years agoLinking ReleaseProcess doc with the world
Renato Golin [Tue, 28 May 2013 10:32:55 +0000 (10:32 +0000)]
Linking ReleaseProcess doc with the world

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

11 years ago[SystemZ] Tweak SystemZInstrInfo::isBranch() interface
Richard Sandiford [Tue, 28 May 2013 10:13:54 +0000 (10:13 +0000)]
[SystemZ] Tweak SystemZInstrInfo::isBranch() interface

This is needed for the upcoming compare-and-branch patch.  No functional
change intended.

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

11 years agoRevert r182715 and r182758
Alexey Samsonov [Tue, 28 May 2013 10:08:08 +0000 (10:08 +0000)]
Revert r182715 and r182758

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

11 years agoAdding ReleaseProcess doc
Renato Golin [Tue, 28 May 2013 09:48:52 +0000 (09:48 +0000)]
Adding ReleaseProcess doc

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

11 years agoFixup for r182715: provide correct arg to --gtest-filter
Alexey Samsonov [Tue, 28 May 2013 09:40:42 +0000 (09:40 +0000)]
Fixup for r182715: provide correct arg to --gtest-filter

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

11 years agoMake BasicAliasAnalysis recognize the fact a noalias argument cannot alias another...
Michael Kuperstein [Tue, 28 May 2013 08:17:48 +0000 (08:17 +0000)]
Make BasicAliasAnalysis recognize the fact a noalias argument cannot alias another argument, even if the other argument is not itself marked noalias.

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

11 years agoMake it explicit that GlobalAlias are ok in llvm.used.
Rafael Espindola [Mon, 27 May 2013 22:47:09 +0000 (22:47 +0000)]
Make it explicit that GlobalAlias are ok in llvm.used.

No functionality change.

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

11 years agoMake helper functions static.
Rafael Espindola [Mon, 27 May 2013 22:34:59 +0000 (22:34 +0000)]
Make helper functions static.

And remove header and cpp file that are empty after that.

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

11 years agoConvert sqrt functions into sqrt instructions when -ffast-math is in effect.
Preston Gurd [Mon, 27 May 2013 15:44:35 +0000 (15:44 +0000)]
Convert sqrt functions into sqrt instructions when -ffast-math is in effect.

When -ffast-math is in effect (on Linux, at least), clang defines
__FINITE_MATH_ONLY__ > 0 when including <math.h>. This causes the
preprocessor to include <bits/math-finite.h>, which renames the sqrt functions.
For instance, "sqrt" is renamed as "__sqrt_finite".

This patch adds the 3 new names in such a way that they will be treated
as equivalent to their respective original names.

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

11 years agoAdd a cpu to try to bring back the atom bots.
Rafael Espindola [Mon, 27 May 2013 13:22:52 +0000 (13:22 +0000)]
Add a cpu to try to bring back the atom bots.

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

11 years agoPPC: Add a isConsecutiveLS utility function
Hal Finkel [Mon, 27 May 2013 02:06:39 +0000 (02:06 +0000)]
PPC: Add a isConsecutiveLS utility function

isConsecutiveLS is a slightly more general form of
SelectionDAG::isConsecutiveLoad. Aside from also handling stores, it also does
not assume equality of the chain operands is necessary. In the case of the PPC
backend, this chain condition is checked in a more general way by the
surrounding code.

Mostly, this part of the refactoring in preparation for supporting optimized
unaligned stores.

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

11 years agollvm-objdump.cpp: Appease MSC16 x64. utostr(n++) causes internal compiler error.
NAKAMURA Takumi [Mon, 27 May 2013 00:02:48 +0000 (00:02 +0000)]
llvm-objdump.cpp: Appease MSC16 x64. utostr(n++) causes internal compiler error.

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

11 years agoPrefer to duplicate PPC Altivec loads when expanding unaligned loads
Hal Finkel [Sun, 26 May 2013 18:08:30 +0000 (18:08 +0000)]
Prefer to duplicate PPC Altivec loads when expanding unaligned loads

When expanding unaligned Altivec loads, we use the decremented offset trick to
prevent page faults. Unfortunately, if we have a sequence of consecutive
unaligned loads, this leads to suboptimal code generation because the 'extra'
load from the first unaligned load can be combined with the base load from the
second (but only if the decremented offset trick is not used for the first).
Search up and down the chain, through loads and token factors, looking for
consecutive loads, and if one is found, don't use the offset reduction trick.
These duplicate loads are later combined to yield the desired sequence (in the
future, we might want a more-powerful chain search, but that will require some
changes to allow the combiner routines to access the AA object).

This should complete the initial implementation of the optimized unaligned
Altivec load expansion. There is some refactoring that should be done, but
that will happen when the unaligned store expansion is added.

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

11 years agoAdd LDC compiler to list of external OS projects using LLVM 3.3
Kai Nacke [Sun, 26 May 2013 17:37:43 +0000 (17:37 +0000)]
Add LDC compiler to list of external OS projects using LLVM 3.3

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

11 years agoFix PR16143: Insert DEBUG_VALUE before terminator.
Andrew Trick [Sun, 26 May 2013 08:58:50 +0000 (08:58 +0000)]
Fix PR16143: Insert DEBUG_VALUE before terminator.

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

11 years agoFixed bug when tests in executable partially used absolute paths.
Galina Kistanova [Sun, 26 May 2013 03:58:41 +0000 (03:58 +0000)]
Fixed bug when tests in executable partially used absolute paths.

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

11 years agoDisable the StringMapEntry copy constructor, to make sure we
Chris Lattner [Sat, 25 May 2013 22:28:22 +0000 (22:28 +0000)]
Disable the StringMapEntry copy constructor, to make sure we
reject things like: "for (auto Entry : SomeStringMap)".  Previously
this would copy the value but not the tail allocated string data
(the key).

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

11 years agoAdd support for DWARF line number table entries for values in the instruction
Cameron Zwarich [Sat, 25 May 2013 21:56:53 +0000 (21:56 +0000)]
Add support for DWARF line number table entries for values in the instruction
stream.

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

11 years agoAdd some comments to the stringify function.
Eric Christopher [Sat, 25 May 2013 05:13:17 +0000 (05:13 +0000)]
Add some comments to the stringify function.

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

11 years agoPPC: Combine duplicate (offset) lvsl Altivec intrinsics
Hal Finkel [Sat, 25 May 2013 04:05:05 +0000 (04:05 +0000)]
PPC: Combine duplicate (offset) lvsl Altivec intrinsics

The lvsl permutation control instruction is a function only of the alignment of
the pointer operand (relative to the 16-byte natural alignment of Altivec
vectors). As a result, multiple lvsl intrinsics where the operands differ by a
multiple of 16 can be combined.

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

11 years agoTrack IR ordering of SelectionDAG nodes 4/4.
Andrew Trick [Sat, 25 May 2013 03:26:51 +0000 (03:26 +0000)]
Track IR ordering of SelectionDAG nodes 4/4.

Unit test cases for -pre-RA-sched=source.

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

11 years agoTrack IR ordering of SelectionDAG nodes 3/4.
Andrew Trick [Sat, 25 May 2013 03:08:10 +0000 (03:08 +0000)]
Track IR ordering of SelectionDAG nodes 3/4.

Remove the old IR ordering mechanism and switch to new one.  Fix unit
test failures.

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

11 years agoTrack IR ordering of SelectionDAG nodes 2/4.
Andrew Trick [Sat, 25 May 2013 02:42:55 +0000 (02:42 +0000)]
Track IR ordering of SelectionDAG nodes 2/4.

Change SelectionDAG::getXXXNode() interfaces as well as call sites of
these functions to pass in SDLoc instead of DebugLoc.

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

11 years agoTrack IR ordering of SelectionDAG nodes 1/4.
Andrew Trick [Sat, 25 May 2013 02:20:36 +0000 (02:20 +0000)]
Track IR ordering of SelectionDAG nodes 1/4.

Use a field in the SelectionDAGNode object to track its IR ordering.
This adds fields and utility classes without changing existing
interfaces or functionality.

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

11 years agoFix RecyclingAllocator::PrintStats to print the underlying allocator's stats.
Andrew Trick [Sat, 25 May 2013 01:47:42 +0000 (01:47 +0000)]
Fix RecyclingAllocator::PrintStats to print the underlying allocator's stats.

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

11 years agoAdd to testsuite.
Eric Christopher [Fri, 24 May 2013 23:20:16 +0000 (23:20 +0000)]
Add to testsuite.

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

11 years agoArrayRef-ize MD5 and clean up a few variable names.
Eric Christopher [Fri, 24 May 2013 23:08:17 +0000 (23:08 +0000)]
ArrayRef-ize MD5 and clean up a few variable names.
Add a stringize method to make dumping a bit easier, and add a testcase
exercising a few different paths.

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

11 years agoPPC: Initial support for permutation-based unaligned Altivec loads
Hal Finkel [Fri, 24 May 2013 23:00:14 +0000 (23:00 +0000)]
PPC: Initial support for permutation-based unaligned Altivec loads

Altivec only directly supports aligned loads, but the loads have a strange
property: If given an unaligned address, they truncate the address to the next
lower aligned address, and load from there.  This property, along with an extra
load and some special-purpose permutation-control instructions that generate
the appropriate permutations from the original unaligned address, allow
efficient lowering of aligned loads. This code uses the trick explained in the
Apple Velocity Engine optimization overview document to prevent the needed
extra load from possibly causing a page fault if the original address happens
to be aligned.

As noted in the FIXMEs, there are several additional optimizations that can be
performed to reduce the cost of these loads even more. These will be
implemented in future commits.

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

11 years ago[Support] Remove Count{Leading,Trailing}Zeros_{32,64}.
Michael J. Spencer [Fri, 24 May 2013 22:58:37 +0000 (22:58 +0000)]
[Support] Remove Count{Leading,Trailing}Zeros_{32,64}.

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

11 years agoTidy up. Whitespace.
Jim Grosbach [Fri, 24 May 2013 22:53:06 +0000 (22:53 +0000)]
Tidy up. Whitespace.

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

11 years agoFollow up of the introduction of MCSymbolizer.
Quentin Colombet [Fri, 24 May 2013 22:51:52 +0000 (22:51 +0000)]
Follow up of the introduction of MCSymbolizer.
- Ressurect old MCDisassemble API to soften transition.
- Extend MCTargetDesc to set target specific symbolizer.

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

11 years agoclang formatted APFloat.h
Michael Gottesman [Fri, 24 May 2013 22:40:37 +0000 (22:40 +0000)]
clang formatted APFloat.h

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

11 years agoclang-formatted APInt.h
Michael Gottesman [Fri, 24 May 2013 22:38:49 +0000 (22:38 +0000)]
clang-formatted APInt.h

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

11 years agoMathExtras: Return the result of find(First|Last)Set in the input type.
Benjamin Kramer [Fri, 24 May 2013 22:25:20 +0000 (22:25 +0000)]
MathExtras: Return the result of find(First|Last)Set in the input type.

Otherwise ZB_Max returns a wrong result when sizeof(T) > sizeof(size_t).

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

11 years agoReplace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.
Michael J. Spencer [Fri, 24 May 2013 22:23:49 +0000 (22:23 +0000)]
Replace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.

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

11 years ago[Support][MathExtras] Fix literal type issues.
Michael J. Spencer [Fri, 24 May 2013 22:19:05 +0000 (22:19 +0000)]
[Support][MathExtras] Fix literal type issues.

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

11 years agoAdd missing header for atexit.
Michael J. Spencer [Fri, 24 May 2013 20:54:11 +0000 (20:54 +0000)]
Add missing header for atexit.

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

11 years ago[Support][MathExtras] Add missing include and disable _BitScan{Forward,Reverse}64...
Michael J. Spencer [Fri, 24 May 2013 20:51:59 +0000 (20:51 +0000)]
[Support][MathExtras] Add missing include and disable _BitScan{Forward,Reverse}64 on non x64 MSVC systems.

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

11 years ago[objc-arc] KnownSafe does not imply that it is safe to perform code motion across...
Michael Gottesman [Fri, 24 May 2013 20:44:05 +0000 (20:44 +0000)]
[objc-arc] KnownSafe does not imply that it is safe to perform code motion across CFG edges since even if it is safe to remove RR pairs, we may still be able to move a retain/release into a loop.

rdar://13949644

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

11 years ago[objc-arc] Make sure that multiple owners is propogated correctly through the pass...
Michael Gottesman [Fri, 24 May 2013 20:44:02 +0000 (20:44 +0000)]
[objc-arc] Make sure that multiple owners is propogated correctly through the pass via the usage of a global data structure.

rdar://13750319

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

11 years ago[Support] Add type generic bit utilities to MathExtras.h
Michael J. Spencer [Fri, 24 May 2013 20:29:47 +0000 (20:29 +0000)]
[Support] Add type generic bit utilities to MathExtras.h

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

11 years agoLoopVectorize: LoopSimplify can't canonicalize loops with an indirectbr in it, don...
Benjamin Kramer [Fri, 24 May 2013 18:05:35 +0000 (18:05 +0000)]
LoopVectorize: LoopSimplify can't canonicalize loops with an indirectbr in it, don't assert on those cases.

Fixes PR16139.

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

11 years agoDo not reserve space for the ColdEdges and NormalEdges vectors.
Diego Novillo [Fri, 24 May 2013 17:00:22 +0000 (17:00 +0000)]
Do not reserve space for the ColdEdges and NormalEdges vectors.
Discussion and rationale at
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130520/175698.html

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

11 years ago[SystemZ] Improve AsmParser handling of invalid instructions
Richard Sandiford [Fri, 24 May 2013 14:26:46 +0000 (14:26 +0000)]
[SystemZ] Improve AsmParser handling of invalid instructions

Previously, an invalid instruction like:

foo     %r1, %r0

would generate the rather odd error message:

....: error: unknown token in expression
foo     %r1, %r0
^

We now get the more informative:

....: error: invalid instruction
foo     %r1, %r0
^

The same would happen if an address were used where a register was expected.
We now get "invalid operand for instruction" instead.

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

11 years ago[SystemZ] Improve AsmParser register parsing
Richard Sandiford [Fri, 24 May 2013 14:14:38 +0000 (14:14 +0000)]
[SystemZ] Improve AsmParser register parsing

The idea is to make sure that:

(1) "register expected" is restricted to cases where ParseRegister()
    is called and the token obviously isn't a register.

(2) "invalid register" is restricted to cases where a register-like "%..."
    sequence is found, but the "..." makes no sense.

(3) the generic "invalid operand for instruction" is used in cases where
    the wrong register type is used (GPR instead of FPR, etc.).

(4) the new "invalid register pair" is used if the register has the right type,
    but is not a valid register pair.

Testing of (1)-(3) is now restricted to regs-bad.s.  It uses a representative
instruction for each register class to make sure that only registers from
that class are accepted.

(4) is tested by both regs-bad.s (which checks all invalid register pairs)
and insn-bad.s (which tests one invalid pair for each instruction that
requires a pair).

While there, I changed "Number" to "Num" for consistency with the
operand class.

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

11 years agoRun clang-format over the scalarizePHI function.
Joey Gouly [Fri, 24 May 2013 12:33:28 +0000 (12:33 +0000)]
Run clang-format over the scalarizePHI function.

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

11 years agoscalarizePHI needs to insert the next ExtractElement in the same block
Joey Gouly [Fri, 24 May 2013 12:29:54 +0000 (12:29 +0000)]
scalarizePHI needs to insert the next ExtractElement in the same block
as the BinaryOperator, *not* in the block where the IRBuilder is currently
inserting into. Fixes a bug where scalarizePHI would create instructions
that would not dominate all uses.

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

11 years agoAdd a new function attribute 'cold' to functions.
Diego Novillo [Fri, 24 May 2013 12:26:52 +0000 (12:26 +0000)]
Add a new function attribute 'cold' to functions.

Other than recognizing the attribute, the patch does little else.
It changes the branch probability analyzer so that edges into
blocks postdominated by a cold function are given low weight.

Added analysis and code generation tests.  Added documentation for the
new attribute.

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

11 years agoRemove the Copied parameter from MemoryObject::readBytes.
Benjamin Kramer [Fri, 24 May 2013 10:54:58 +0000 (10:54 +0000)]
Remove the Copied parameter from MemoryObject::readBytes.

There was exactly one caller using this API right, the others were relying on
specific behavior of the default implementation. Since it's too hard to use it
right just remove it and standardize on the default behavior.

Defines away PR16132.

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

11 years agoFix unused warning in opt builds.
Daniel Jasper [Fri, 24 May 2013 06:26:18 +0000 (06:26 +0000)]
Fix unused warning in opt builds.

In these builds, the asserts() are completely compiled out of the code
leaving "End" unused. Directly accessing it, should not have a
performance impact, as it is just a data member.

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

11 years agoMC: Disassembled CFG reconstruction.
Ahmed Bougacha [Fri, 24 May 2013 01:07:04 +0000 (01:07 +0000)]
MC: Disassembled CFG reconstruction.

This patch builds on some existing code to do CFG reconstruction from
a disassembled binary:
- MCModule represents the binary, and has a list of MCAtoms.
- MCAtom represents either disassembled instructions (MCTextAtom), or
  contiguous data (MCDataAtom), and covers a specific range of addresses.
- MCBasicBlock and MCFunction form the reconstructed CFG. An MCBB is
  backed by an MCTextAtom, and has the usual successors/predecessors.
- MCObjectDisassembler creates a module from an ObjectFile using a
  disassembler. It first builds an atom for each section. It can also
  construct the CFG, and this splits the text atoms into basic blocks.

MCModule and MCAtom were only sketched out; MCFunction and MCBB were
implemented under the experimental "-cfg" llvm-objdump -macho option.
This cleans them up for further use; llvm-objdump -d -cfg now generates
graphviz files for each function found in the binary.

In the future, MCObjectDisassembler may be the right place to do
"intelligent" disassembly: for example, handling constant islands is just
a matter of splitting the atom, using information that may be available
in the ObjectFile. Also, better initial atom formation than just using
sections is possible using symbols (and things like Mach-O's
function_starts load command).

This brings two minor regressions in llvm-objdump -macho -cfg:
- The printing of a relocation's referenced symbol.
- An annotation on loop BBs, i.e., which are their own successor.

Relocation printing is replaced by the MCSymbolizer; the basic CFG
annotation will be superseded by more related functionality.

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

11 years agoAdd MCSymbolizer for symbolic/annotated disassembly.
Ahmed Bougacha [Fri, 24 May 2013 00:39:57 +0000 (00:39 +0000)]
Add MCSymbolizer for symbolic/annotated disassembly.

This is a basic first step towards symbolization of disassembled
instructions. This used to be done using externally provided (C API)
callbacks. This patch introduces:
- the MCSymbolizer class, that mimics the same functions that were used
  in the X86 and ARM disassemblers to symbolize immediate operands and
  to annotate loads based off PC (for things like c string literals).
- the MCExternalSymbolizer class, which implements the old C API.
- the MCRelocationInfo class, which provides a way for targets to
  translate relocations (either object::RelocationRef, or disassembler
  C API VariantKinds) to MCExprs.
- the MCObjectSymbolizer class, which does symbolization using what it
  finds in an object::ObjectFile. This makes simple symbolization (with
  no fancy relocation stuff) work for all object formats!
- x86-64 Mach-O and ELF MCRelocationInfos.
- A basic ARM Mach-O MCRelocationInfo, that provides just enough to
  support the C API VariantKinds.

Most of what works in otool (the only user of the old symbolization API
that I know of) for x86-64 symbolic disassembly (-tvV) works, namely:
- symbol references: call _foo; jmp 15 <_foo+50>
- relocations:       call _foo-_bar; call _foo-4
- __cf?string:       leaq 193(%rip), %rax ## literal pool for "hello"
Stub support is the main missing part (because libObject doesn't know,
among other things, about mach-o indirect symbols).

As for the MCSymbolizer API, instead of relying on the disassemblers
to call the tryAdding* methods, maybe this could be done automagically
using InstrInfo? For instance, even though PC-relative LEAs are used
to get the address of string literals in a typical Mach-O file, a MOV
would be used in an ELF file. And right now, the explicit symbolization
only recognizes PC-relative LEAs. InstrInfo should have already have
most of what is needed to know what to symbolize, so this can
definitely be improved.

I'd also like to remove object::RelocationRef::getValueString (it seems
only used by relocation printing in objdump), as simply printing the
created MCExpr is definitely enough (and cleaner than string concats).

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

11 years ago[PowerPC] Remove symbolLo/symbolHi instruction operand types
Ulrich Weigand [Thu, 23 May 2013 22:48:06 +0000 (22:48 +0000)]
[PowerPC] Remove symbolLo/symbolHi instruction operand types

Now that there is no longer any distinction between symbolLo
and symbolHi operands in either printing, encoding, or parsing,
the operand types can be removed in favor of simply using
s16imm.

This completes the patch series to decouple lo/hi operand part
processing from the particular instruction whose operand it is.

No change in code generation expected from this patch.

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

11 years agoRe-implement DebugIR in a way that does not subclass AssemblyWriter:
Daniel Malea [Thu, 23 May 2013 22:34:33 +0000 (22:34 +0000)]
Re-implement DebugIR in a way that does not subclass AssemblyWriter:
- move AsmWriter.h from public headers into lib
- marked all AssemblyWriter functions as non-virtual; no need to override them
- DebugIR now "plugs into" AssemblyWriter with an AssemblyAnnotationWriter helper
- exposed flags to control hiding of a) debug metadata b) debug intrinsic calls

C/R: Paul Redmond

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

11 years ago[PowerPC] Clean up generation of ha16() / lo16() markers
Ulrich Weigand [Thu, 23 May 2013 22:26:41 +0000 (22:26 +0000)]
[PowerPC] Clean up generation of ha16() / lo16() markers

When targeting the Darwin assembler, we need to generate markers ha16() and
lo16() to designate the high and low parts of a (symbolic) immediate.  This
is necessary not just for plain symbols, but also for certain symbolic
expression, typically along the lines of ha16(A - B).  The latter doesn't
work when simply using VariantKind flags on the symbol reference.
This is why the current back-end uses hacks (explicitly called out as such
via multiple FIXMEs) in the symbolLo/symbolHi print methods.

This patch uses target-defined MCExpr codes to represent the Darwin
ha16/lo16 constructs, following along the lines of the equivalent solution
used by the ARM back end to handle their :upper16: / :lower16: markers.
This allows us to get rid of special handling both in the symbolLo/symbolHi
print method and in the common code MCExpr::print routine.  Instead, the
ha16 / lo16 markers are printed simply in a custom print routine for the
target MCExpr types.  (As a result, the symbolLo/symbolHi print methods
can now replaced by a single printS16ImmOperand routine that also handles
symbolic operands.)

The patch also provides a EvaluateAsRelocatableImpl routine to handle
ha16/lo16 constructs.  This is not actually used at the moment by any
in-tree code, but is provided as it makes merging into David Fang's
out-of-tree Mach-O object writer simpler.

Since there is no longer any need to treat VK_PPC_GAS_HA16 and
VK_PPC_DARWIN_HA16 differently, they are merged into a single
VK_PPC_ADDR16_HA (and likewise for the _LO16 types).

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

11 years agoThe command line options need to be processed before we create the TargetMachine.
Bill Wendling [Thu, 23 May 2013 21:21:50 +0000 (21:21 +0000)]
The command line options need to be processed before we create the TargetMachine.

Move the processing of the command line options to right before we create the
TargetMachine instead of after.
<rdar://problem/13468287>

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

11 years agoARM: implement @llvm.readcyclecounter intrinsic
Tim Northover [Thu, 23 May 2013 19:11:20 +0000 (19:11 +0000)]
ARM: implement @llvm.readcyclecounter intrinsic

This implements the @llvm.readcyclecounter intrinsic as the specific
MRC instruction specified in the ARM manuals for CPUs with the Power
Management extensions.

Older CPUs had slightly different methods which may also have to be
implemented eventually, but this should cover all v7 cases.

rdar://problem/13939186

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

11 years agoARM: Add Performance Monitor Extensions feature
Tim Northover [Thu, 23 May 2013 19:11:14 +0000 (19:11 +0000)]
ARM: Add Performance Monitor Extensions feature

Performance monitors, including a basic cycle counter, are an official
extension in the ARMv7 specification. This adds support for enabling and
disabling them, orthogonally from CPU selection.

rdar://problem/13939186

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

11 years agoR600: Fix R600ControlFlowFinalizer not considering VTX_READ 128 bit dst reg
Tom Stellard [Thu, 23 May 2013 18:26:42 +0000 (18:26 +0000)]
R600: Fix R600ControlFlowFinalizer not considering VTX_READ 128 bit dst reg

Patch by: Vincent Lejeune

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

NOTE: This is a candidate for the 3.3 branch.

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

11 years agoMove passes from namespace llvm into anonymous namespaces. Sort includes while there.
Benjamin Kramer [Thu, 23 May 2013 17:10:37 +0000 (17:10 +0000)]
Move passes from namespace llvm into anonymous namespaces. Sort includes while there.

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

11 years agoFix PR16110: Handle DBG_VALUE in ConnectedVNInfoEqClasses::Distribute().
Jakob Stoklund Olesen [Thu, 23 May 2013 17:02:23 +0000 (17:02 +0000)]
Fix PR16110: Handle DBG_VALUE in ConnectedVNInfoEqClasses::Distribute().

Now that the LiveDebugVariables pass is running *after* register
coalescing, the ConnectedVNInfoEqClasses class needs to deal with
DBG_VALUE instructions.

This only comes up when rematerialization during coalescing causes the
remaining live range of a virtual register to separate into two
connected components.

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

11 years agoMore symbols that should be static.
Benjamin Kramer [Thu, 23 May 2013 16:09:15 +0000 (16:09 +0000)]
More symbols that should be static.

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

11 years agoHexagon: Make helper functions static.
Benjamin Kramer [Thu, 23 May 2013 15:43:11 +0000 (15:43 +0000)]
Hexagon: Make helper functions static.

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

11 years agoR600: Hide symbols of implementation details.
Benjamin Kramer [Thu, 23 May 2013 15:43:05 +0000 (15:43 +0000)]
R600: Hide symbols of implementation details.

Also removes an unused function.

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

11 years agoInlineSpiller: Store bucket pointers instead of iterators.
Benjamin Kramer [Thu, 23 May 2013 15:42:57 +0000 (15:42 +0000)]
InlineSpiller: Store bucket pointers instead of iterators.

Lets us use a SetVector instead of an explicit set + vector combination.

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

11 years agoSetting the default value (fixes CRT assertions about uninitialized variable use...
Aaron Ballman [Thu, 23 May 2013 14:55:00 +0000 (14:55 +0000)]
Setting the default value (fixes CRT assertions about uninitialized variable use when doing debug MSVC builds), and fixing coding style.

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

11 years agoFix 32 bit build in c++11 mode.
Rafael Espindola [Thu, 23 May 2013 13:22:30 +0000 (13:22 +0000)]
Fix 32 bit build in c++11 mode.

The error was:
error: non-constant-expression cannot be narrowed from type 'long long' to 'long' in initializer list [-Wc++11-narrowing]
        MI.getOperand(6).getImm() & 0x1F,

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

11 years agoAdd missing test from r175092.
Nick Lewycky [Thu, 23 May 2013 07:46:13 +0000 (07:46 +0000)]
Add missing test from r175092.

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

11 years agoFix a leak on the r600 backend.
Rafael Espindola [Thu, 23 May 2013 03:31:47 +0000 (03:31 +0000)]
Fix a leak on the r600 backend.

This should bring the valgrind bot back to life.

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

11 years agoclang-format this file.
Rafael Espindola [Thu, 23 May 2013 03:28:39 +0000 (03:28 +0000)]
clang-format this file.

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

11 years agoRemove redundant rpath.
Rafael Espindola [Thu, 23 May 2013 02:53:22 +0000 (02:53 +0000)]
Remove redundant rpath.

These are not needed since we added the $ORIGIN based rpath.

Fixes pr12517.

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

11 years agoFix indentation.
Rafael Espindola [Thu, 23 May 2013 02:38:50 +0000 (02:38 +0000)]
Fix indentation.

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

11 years ago[objc-arc] Fixed number of prefixing slashes in some comments in a function from...
Michael Gottesman [Thu, 23 May 2013 02:35:21 +0000 (02:35 +0000)]
[objc-arc] Fixed number of prefixing slashes in some comments in a function from 3 to 2 to match the rest of ObjCARCOpts.

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

11 years agoFixed trailing whitespace.
Michael Gottesman [Thu, 23 May 2013 02:03:05 +0000 (02:03 +0000)]
Fixed trailing whitespace.

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

11 years agoUpdated the comments of APInt.h to match the llvm style guide and be consistent....
Michael Gottesman [Thu, 23 May 2013 02:00:03 +0000 (02:00 +0000)]
Updated the comments of APInt.h to match the llvm style guide and be consistent. No functionality change.

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

11 years agoMissed removing one of the assert()'s from the LLVMCreateDisasmCPU() library
Kevin Enderby [Thu, 23 May 2013 00:32:34 +0000 (00:32 +0000)]
Missed removing one of the assert()'s from the LLVMCreateDisasmCPU() library
API with my 176880 revision.  If a bad Triple is passed in it can also assert.
In this case too it should just return 0 to indicate failure to create the
disassembler.

rdar://13955214

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

11 years agoMinor fix to comment from my previous commit.
Chad Rosier [Wed, 22 May 2013 23:25:59 +0000 (23:25 +0000)]
Minor fix to comment from my previous commit.

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

11 years agoSimplify the logic described in the comment.
Chad Rosier [Wed, 22 May 2013 23:23:14 +0000 (23:23 +0000)]
Simplify the logic described in the comment.

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

11 years agoSolidify the assumption that a DW_TAG_subprogram's type is a DW_TAG_subroutine_type
David Blaikie [Wed, 22 May 2013 23:22:18 +0000 (23:22 +0000)]
Solidify the assumption that a DW_TAG_subprogram's type is a DW_TAG_subroutine_type

There were bits & pieces of code lying around that may've given the
impression that debug info metadata supported the possibility that a
subprogram's type could be specified by a non-subroutine type describing
the return type of a void function. This support was incomplete &
unnecessary. Asserts & API have been changed to make the desired usage
more clear.

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

11 years agoSimplify logic now that r182490 is in place. No functional change intended.
Chad Rosier [Wed, 22 May 2013 23:17:36 +0000 (23:17 +0000)]
Simplify logic now that r182490 is in place.  No functional change intended.

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

11 years agoSimplify logic now that r182490 is in place. No functional change intended.
Chad Rosier [Wed, 22 May 2013 22:36:55 +0000 (22:36 +0000)]
Simplify logic now that r182490 is in place.  No functional change intended.

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

11 years agoSimplify logic now that r182490 is in place. No functional change intended.
Chad Rosier [Wed, 22 May 2013 22:26:05 +0000 (22:26 +0000)]
Simplify logic now that r182490 is in place.  No functional change intended.

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

11 years agoRecognize ValueType operands in source patterns for fast-isel.
Bill Schmidt [Wed, 22 May 2013 20:45:11 +0000 (20:45 +0000)]
Recognize ValueType operands in source patterns for fast-isel.

Currently the fast-isel table generator recognizes registers, register
classes, and immediates for source pattern operands.  ValueType
operands are not recognized.  This is not a problem for existing
targets with fast-isel support, but will not work for targets like
PowerPC and SPARC that use types in source patterns.

The proposed patch allows ValueType operands and treats them in the
same manner as register classes.  There is no convenient way to map
from a ValueType to a register class, but there's no need to do so.
The table generator already requires that all types in the source
pattern be identical, and we know the register class of the output
operand already.  So we just assign that register class to any
ValueType operands we encounter.

No functional effect on existing targets.  Testing deferred until the
PowerPC target implements fast-isel.

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

11 years agoChange some PowerPC PatLeaf definitions to ImmLeaf for fast-isel.
Bill Schmidt [Wed, 22 May 2013 20:09:24 +0000 (20:09 +0000)]
Change some PowerPC PatLeaf definitions to ImmLeaf for fast-isel.

Using PatLeaf rather than ImmLeaf when defining immediate predicates
prevents simple patterns using those predicates from being recognized
for fast instruction selection.  This patch replaces the immSExt16
PatLeaf predicate with two ImmLeaf predicates, imm32SExt16 and
imm64SExt16, allowing a few more patterns to be recognized (ADDI,
ADDIC, MULLI, ADDI8, and ADDIC8).  Using the new predicates does not
help for LI, LI8, SUBFIC, and SUBFIC8 because these are rejected for
other reasons, but I see no reason to retain the PatLeaf predicate.

No functional change intended, and thus no test cases yet.  This is
preliminary work for enabling fast-isel support for PowerPC.  When
that support is ready, we'll be able to test this function.

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

11 years agoSLPVectorizer: Change the order in which new instructions are added to the function.
Nadav Rotem [Wed, 22 May 2013 19:47:32 +0000 (19:47 +0000)]
SLPVectorizer: Change the order in which new instructions are added to the function.
We are not working on a DAG and I ran into a number of problems when I enabled the vectorizations of 'diamond-trees' (trees that share leafs).
* Imroved the numbering API.
* Changed the placement of new instructions to the last root.
* Fixed a bug with external tree users with non-zero lane.
* Fixed a bug in the placement of in-tree users.

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

11 years agoX86: Fix a bug in EltsFromConsecutiveLoads. We can't generate new loads without chains.
Nadav Rotem [Wed, 22 May 2013 19:28:41 +0000 (19:28 +0000)]
X86: Fix a bug in EltsFromConsecutiveLoads. We can't generate new loads without chains.

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

11 years agoRemove unneeded call to a base default ctor
Reid Kleckner [Wed, 22 May 2013 19:07:26 +0000 (19:07 +0000)]
Remove unneeded call to a base default ctor

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

11 years agoThis is an update to a previous commit (r181216).
Jean-Luc Duprat [Wed, 22 May 2013 18:29:31 +0000 (18:29 +0000)]
This is an update to a previous commit (r181216).

The earlier change list introduced the following inst combines:
B * (uitofp i1 C) —> select C, B, 0
A * (1 - uitofp i1 C) —> select C, 0, A
select C, 0, B + select C, A, 0 —> select C, A, B

Together these 3 changes would simplify :
A * (1 - uitofp i1 C) + B * uitofp i1 C
down to :
select C, B, A

In practice we found that the first two substitutions can have a
negative effect on performance, because they reduce opportunities to
use FMA contractions; between the two options FMAs are often the
better choice.  This change list amends the previous one to enable
just these inst combines:

select C, B, 0 + select C, 0, A —> select C, B, A
A * (1 - uitofp i1 C) + B * uitofp i1 C —> select C, B, A

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

11 years agoFix typo in docs/GettingStarted.rst.
Rui Ueyama [Wed, 22 May 2013 18:09:39 +0000 (18:09 +0000)]
Fix typo in docs/GettingStarted.rst.

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

11 years agoUnify formatting of debug output.
Adrian Prantl [Wed, 22 May 2013 18:02:19 +0000 (18:02 +0000)]
Unify formatting of debug output.

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

11 years agoFix StringMapIterator compile errors for non-MSVC compilers.
Reid Kleckner [Wed, 22 May 2013 17:32:15 +0000 (17:32 +0000)]
Fix StringMapIterator compile errors for non-MSVC compilers.

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

11 years agoAdd the IncludeSelf parameter to the MCSubRegIterator and MCSuperRegIterator
Chad Rosier [Wed, 22 May 2013 17:26:26 +0000 (17:26 +0000)]
Add the IncludeSelf parameter to the MCSubRegIterator and MCSuperRegIterator
constructors.  No functional change.
Part of rdar://12906217

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