oota-llvm.git
11 years ago[Support][ErrorOr] Make old gcc happy.
Michael J. Spencer [Tue, 22 Jan 2013 22:48:46 +0000 (22:48 +0000)]
[Support][ErrorOr] Make old gcc happy.

Apparently this is how C++98 worked pre-DR. (Thanks Richard).

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

11 years agoFixed typo.
Michael Gottesman [Tue, 22 Jan 2013 21:53:43 +0000 (21:53 +0000)]
Fixed typo.

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

11 years ago[ObjCARC] Refactored out the inner most 2-loops from PerformCodePlacement into the...
Michael Gottesman [Tue, 22 Jan 2013 21:49:00 +0000 (21:49 +0000)]
[ObjCARC] Refactored out the inner most 2-loops from PerformCodePlacement into the method ConnectTDBUTraversals.

The method PerformCodePlacement was doing too much (i.e. 3x loops, lots of
different checking). This refactoring separates the analysis section of the
method into a separate function while leaving the actual code placement and
analysis preparation in PerformCodePlacement.

*NOTE* Really this part of ObjCARC should be refactored out of the main pass
class into its own seperate class/struct. But, it is not time to make that
change yet though (don't want to make such an invasive change without fixing all
of the bugs first).

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

11 years agoFix an issue of pseudo atomic instruction DAG schedule
Michael Liao [Tue, 22 Jan 2013 21:47:38 +0000 (21:47 +0000)]
Fix an issue of pseudo atomic instruction DAG schedule

- Add list of physical registers clobbered in pseudo atomic insts
  Physical registers are clobbered when pseudo atomic instructions are
  expanded. Add them in clobber list to prevent DAG scheduler to
  mis-schedule them after these insns are declared side-effect free.
- Add test case from Michael Kuperstein <michael.m.kuperstein@intel.com>

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

11 years agoAdd a warning when there is a macro defintion that has named parameters but
Kevin Enderby [Tue, 22 Jan 2013 21:44:53 +0000 (21:44 +0000)]
Add a warning when there is a macro defintion that has named parameters but
the body does not use them and it appears the body has positional parameters.

This can cause unexpected results as in the added test case.  As the darwin
version of gas(1) which only supported positional parameters, happened to
ignore the named parameters.  Now that we want to support both styles of
macros we issue a warning in this specific case.

rdar://12861644

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

11 years ago[mips] Implement MipsRegisterInfo::getRegPressureLimit.
Akira Hatanaka [Tue, 22 Jan 2013 21:34:25 +0000 (21:34 +0000)]
[mips] Implement MipsRegisterInfo::getRegPressureLimit.

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

11 years agoMore encapsulation work.
Bill Wendling [Tue, 22 Jan 2013 21:15:51 +0000 (21:15 +0000)]
More encapsulation work.

Use the AttributeSet when we're talking about more than one attribute. Add a
function that adds a single attribute. No functionality change intended.

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

11 years agoHave the integrated assembler give an error if $1 is used as an identifier in
Kevin Enderby [Tue, 22 Jan 2013 21:09:20 +0000 (21:09 +0000)]
Have the integrated assembler give an error if $1 is used as an identifier in
an expression.  Currently this bug causes the line to be ignored in a
release build and an assert in a debug build.

rdar://13062484

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

11 years ago[mips] Clean up code in MipsTargetLowering::LowerCall. No functional change
Akira Hatanaka [Tue, 22 Jan 2013 20:05:56 +0000 (20:05 +0000)]
[mips] Clean up code in MipsTargetLowering::LowerCall. No functional change
intended

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

11 years agoAdd forgotten test case for the x32 commit
Eli Bendersky [Tue, 22 Jan 2013 18:52:39 +0000 (18:52 +0000)]
Add forgotten test case for the x32 commit

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

11 years agoX86: Make sure we account for the FMA4 register immediate value, otherwise rip-rel...
Benjamin Kramer [Tue, 22 Jan 2013 18:05:59 +0000 (18:05 +0000)]
X86: Make sure we account for the FMA4 register immediate value, otherwise rip-rel relocations will be off by one byte.

PR15040.

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

11 years agoInitial patch for x32 ABI support.
Eli Bendersky [Tue, 22 Jan 2013 18:02:49 +0000 (18:02 +0000)]
Initial patch for x32 ABI support.

Add the x32 environment kind to the triple, and separate the concept of
pointer size and callee save stack slot size, since they're not equal
on x32.

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

11 years agoTests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID
Dmitri Gribenko [Tue, 22 Jan 2013 14:39:21 +0000 (14:39 +0000)]
Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID

This is done to avoid odd test failures, like the one fixed in r171243.

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

11 years agollvm-symbolizer: factor out bits of the tool into separate LLVMSymbolize.{h,cpp}...
Alexey Samsonov [Tue, 22 Jan 2013 14:21:19 +0000 (14:21 +0000)]
llvm-symbolizer: factor out bits of the tool into separate LLVMSymbolize.{h,cpp} files. No functionality change.

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

11 years ago[msan] Export the value of msan-keep-going flag for the runtime.
Evgeniy Stepanov [Tue, 22 Jan 2013 13:26:53 +0000 (13:26 +0000)]
[msan] Export the value of msan-keep-going flag for the runtime.

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

11 years ago[msan] Do not insert check on volatile store.
Evgeniy Stepanov [Tue, 22 Jan 2013 12:30:52 +0000 (12:30 +0000)]
[msan] Do not insert check on volatile store.

Volatile bitfields can cause valid stores of uninitialized bits.

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

11 years agoFix truncation of relocation types in Support/ELF.h
Tim Northover [Tue, 22 Jan 2013 12:01:43 +0000 (12:01 +0000)]
Fix truncation of relocation types in Support/ELF.h

This is a follow-up to r171845, which fixes the same issue in the Support code.
Only targets with >256 relocations (principally AArch64) should be affected.

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

11 years agoBegin fleshing out an interface in TTI for modelling the costs of
Chandler Carruth [Tue, 22 Jan 2013 11:26:02 +0000 (11:26 +0000)]
Begin fleshing out an interface in TTI for modelling the costs of
generic function calls and intrinsics. This is somewhat overlapping with
an existing intrinsic cost method, but that one seems targetted at
vector intrinsics. I'll merge them or separate their names and use cases
in a separate commit.

This sinks the test of 'callIsSmall' down into TTI where targets can
control it. The whole thing feels very hack-ish to me though. I've left
a FIXME comment about the fundamental design problem this presents. It
isn't yet clear to me what the users of this function *really* care
about. I'll have to do more analysis to figure that out. Putting this
here at least provides it access to proper analysis pass tools and other
such. It also allows us to more cleanly implement the baseline cost
interfaces in TTI.

With this commit, it is now theoretically possible to simplify much of
the inline cost analysis's handling of calls by calling through to this
interface. That conversion will have to happen in subsequent commits as
it requires more extensive restructuring of the inline cost analysis.

The CodeMetrics class is now really only in the business of running over
a block of code and aggregating the metrics on that block of code, with
the actual cost evaluation done entirely in terms of TTI.

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

11 years agoADT/SparseMultiSetTest.cpp: Try to appease cygwin-clang on stage2, take two. [-Wsign...
NAKAMURA Takumi [Tue, 22 Jan 2013 10:39:31 +0000 (10:39 +0000)]
ADT/SparseMultiSetTest.cpp: Try to appease cygwin-clang on stage2, take two. [-Wsign-compare]

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

11 years agoFix missed out llvm-stress after APFloat change.
Tim Northover [Tue, 22 Jan 2013 10:18:26 +0000 (10:18 +0000)]
Fix missed out llvm-stress after APFloat change.

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

11 years agoMake APFloat constructor require explicit semantics.
Tim Northover [Tue, 22 Jan 2013 09:46:31 +0000 (09:46 +0000)]
Make APFloat constructor require explicit semantics.

Previously we tried to infer it from the bit width size, with an added
IsIEEE argument for the PPC/IEEE 128-bit case, which had a default
value. This default value allowed bugs to creep in, where it was
inappropriate.

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

11 years agoSparseMultiSet.h: Add suggested parentheses.
NAKAMURA Takumi [Tue, 22 Jan 2013 05:41:57 +0000 (05:41 +0000)]
SparseMultiSet.h: Add suggested parentheses.

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

11 years agoADT/SparseMultiSetTest.cpp: Try to appease cygwin-clang (libstdc++-4.5) on stage2...
NAKAMURA Takumi [Tue, 22 Jan 2013 05:30:15 +0000 (05:30 +0000)]
ADT/SparseMultiSetTest.cpp: Try to appease cygwin-clang (libstdc++-4.5) on stage2. [-Wsign-compare]

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

11 years agoThis test is only supposed to test that the objc-arc alias analysis
Michael Gottesman [Tue, 22 Jan 2013 04:41:11 +0000 (04:41 +0000)]
This test is only supposed to test that the objc-arc alias analysis
allows for gvn to perform certain optimizations. Thus the runline should
only contain -objc-arc-aa, not the full -objc-arc.

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

11 years agoErrorOrTest.cpp: Check existence of EXPECT_DEBUG_DEATH. It is not always available.
NAKAMURA Takumi [Tue, 22 Jan 2013 04:02:41 +0000 (04:02 +0000)]
ErrorOrTest.cpp: Check existence of EXPECT_DEBUG_DEATH. It is not always available.

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

11 years ago[MC/Mach-O] Load commands are supposed to 8-byte aligned on 64-bit.
Daniel Dunbar [Tue, 22 Jan 2013 03:42:49 +0000 (03:42 +0000)]
[MC/Mach-O] Load commands are supposed to 8-byte aligned on 64-bit.

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

11 years ago[CMake] bugpoint-passes should not be built in "all", when LLVM_BUILD_TOOLS is OFF.
NAKAMURA Takumi [Tue, 22 Jan 2013 01:44:00 +0000 (01:44 +0000)]
[CMake] bugpoint-passes should not be built in "all", when LLVM_BUILD_TOOLS is OFF.

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

11 years agoRemove target triple from an LSR test.
Andrew Trick [Tue, 22 Jan 2013 00:57:16 +0000 (00:57 +0000)]
Remove target triple from an LSR test.

Manish already fixed this test to work with NoTTI.

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

11 years agoAdd a new method that adds the AttributeSet at the given index. No functional change.
Bill Wendling [Tue, 22 Jan 2013 00:53:12 +0000 (00:53 +0000)]
Add a new method that adds the AttributeSet at the given index. No functional change.

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

11 years agoAdd the attributes that are passed in instead of the ones we're merging into.
Bill Wendling [Tue, 22 Jan 2013 00:41:33 +0000 (00:41 +0000)]
Add the attributes that are passed in instead of the ones we're merging into.

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

11 years agoRemove unused method.
Bill Wendling [Mon, 21 Jan 2013 23:41:50 +0000 (23:41 +0000)]
Remove unused method.

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

11 years agoFix spelling
Joel Jones [Mon, 21 Jan 2013 23:20:47 +0000 (23:20 +0000)]
Fix spelling

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

11 years agoUse AttributeSet instead of Attribute to verify things.
Bill Wendling [Mon, 21 Jan 2013 23:03:18 +0000 (23:03 +0000)]
Use AttributeSet instead of Attribute to verify things.

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

11 years agoHave AttributeSet::getRetAttributes() return an AttributeSet instead of Attribute.
Bill Wendling [Mon, 21 Jan 2013 22:44:49 +0000 (22:44 +0000)]
Have AttributeSet::getRetAttributes() return an AttributeSet instead of Attribute.

This further restricts the use of the Attribute class to the Attribute family of
classes.

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

11 years agoMake AttributeSet::getFnAttributes() return an AttributeSet instead of an Attribute.
Bill Wendling [Mon, 21 Jan 2013 21:57:28 +0000 (21:57 +0000)]
Make AttributeSet::getFnAttributes() return an AttributeSet instead of an Attribute.

This is more code to isolate the use of the Attribute class to that of just
holding one attribute instead of a collection of attributes.

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

11 years agoTransform (sub 0, (zext bool to A)) to (sext bool to A) and
Paul Redmond [Mon, 21 Jan 2013 21:57:20 +0000 (21:57 +0000)]
Transform (sub 0, (zext bool to A)) to (sext bool to A) and
(sub 0, (sext bool to A)) to (zext bool to A).

Patch by Muhammad Ahmad
Reviewed by Duncan Sands

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

11 years agoDocs for SparseMultiSet
Michael Ilseman [Mon, 21 Jan 2013 21:46:32 +0000 (21:46 +0000)]
Docs for SparseMultiSet

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

11 years agoFix some incorrectly named u10 / lu10 instructions.
Richard Osborne [Mon, 21 Jan 2013 21:12:30 +0000 (21:12 +0000)]
Fix some incorrectly named u10 / lu10 instructions.

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

11 years agoRemove unneeded #include.
Jakub Staszak [Mon, 21 Jan 2013 21:02:47 +0000 (21:02 +0000)]
Remove unneeded #include.

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

11 years agoRemove unused multiclass.
Richard Osborne [Mon, 21 Jan 2013 20:50:54 +0000 (20:50 +0000)]
Remove unused multiclass.

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

11 years agoAdd instruction encodings / disassembly support for u6 / lu6 instructions.
Richard Osborne [Mon, 21 Jan 2013 20:44:17 +0000 (20:44 +0000)]
Add instruction encodings / disassembly support for u6 / lu6 instructions.

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

11 years agoAdd instruction encoding / disassembly support for ru6 / lru6 instructions.
Richard Osborne [Mon, 21 Jan 2013 20:42:16 +0000 (20:42 +0000)]
Add instruction encoding / disassembly support for ru6 / lru6 instructions.

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

11 years agoUse correct format for the LDAWCP instruction (u6).
Richard Osborne [Mon, 21 Jan 2013 20:32:54 +0000 (20:32 +0000)]
Use correct format for the LDAWCP instruction (u6).

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

11 years agor173072 is causing some regressions on big endian hosts, I don't have time to debug it
Chris Lattner [Mon, 21 Jan 2013 19:08:15 +0000 (19:08 +0000)]
r173072 is causing some regressions on big endian hosts, I don't have time to debug it
so revert it for now.

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

11 years agorework the Bitstream reader to actually work a machine word at a time, instead of...
Chris Lattner [Mon, 21 Jan 2013 18:48:26 +0000 (18:48 +0000)]
rework the Bitstream reader to actually work a machine word at a time, instead of 32-bits at a time.
This cuts in half the number of virtual methods called to refill that word when compiling on a 64-bit
host, and will make 64-bit read operations faster.

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

11 years agoFix a heinous inefficiency introduced in r149918, wherein reading each byte of a
Chris Lattner [Mon, 21 Jan 2013 18:24:49 +0000 (18:24 +0000)]
Fix a heinous inefficiency introduced in r149918, wherein reading each byte of a
BLOB (i.e., large, performance intensive data) in a bitcode file was switched to
invoking one virtual method call per byte read.  Now we do one virtual call per
BLOB.

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

11 years agoIntroduce a new data structure, the SparseMultiSet, and changes to the MI scheduler...
Michael Ilseman [Mon, 21 Jan 2013 18:18:53 +0000 (18:18 +0000)]
Introduce a new data structure, the SparseMultiSet, and changes to the MI scheduler to use it.

A SparseMultiSet adds multiset behavior to SparseSet, while retaining SparseSet's desirable properties. Essentially, SparseMultiSet provides multiset behavior by storing its dense data in doubly linked lists that are inlined into the dense vector. This allows it to provide good data locality as well as vector-like constant-time clear() and fast constant time find(), insert(), and erase(). It also allows SparseMultiSet to have a builtin recycler rather than keeping SparseSet's behavior of always swapping upon removal, which allows it to preserve more iterators. It's often a better alternative to a SparseSet of a growable container or vector-of-vector.

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

11 years agowean Blob handling logic off of banging on NextChar directly. Instead, make
Chris Lattner [Mon, 21 Jan 2013 18:18:25 +0000 (18:18 +0000)]
wean Blob handling logic off of banging on NextChar directly.  Instead, make
it reason about the current bit position, which is always independent of the
underlying cursors word size.

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

11 years agorename "SkipToWord" to "SkipToFourByteBoundary" since a word is not always 4 bytes.
Chris Lattner [Mon, 21 Jan 2013 18:04:19 +0000 (18:04 +0000)]
rename "SkipToWord" to "SkipToFourByteBoundary" since a word is not always 4 bytes.

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

11 years agoFix a comment. Induction vars dont need to start at zero.
Nadav Rotem [Mon, 21 Jan 2013 17:59:18 +0000 (17:59 +0000)]
Fix a comment. Induction vars dont need to start at zero.

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

11 years agoR600/SI: Use unnormalized coordinates for sampling with the RECT target.
Tom Stellard [Mon, 21 Jan 2013 15:40:48 +0000 (15:40 +0000)]
R600/SI: Use unnormalized coordinates for sampling with the RECT target.

Patch by: Michel Dänzer

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173053 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoR600/SI: Take target parameter for sample intrinsics.
Tom Stellard [Mon, 21 Jan 2013 15:40:47 +0000 (15:40 +0000)]
R600/SI: Take target parameter for sample intrinsics.

Patch by: Michel Dänzer

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173052 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoR600/SI: Derive all sample intrinsics from a single class.
Tom Stellard [Mon, 21 Jan 2013 15:40:46 +0000 (15:40 +0000)]
R600/SI: Derive all sample intrinsics from a single class.

Patch by: Michel Dänzer

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173051 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoR600/SILowerControlFlow.cpp: Fix a warning. [-Wunused-variable]
NAKAMURA Takumi [Mon, 21 Jan 2013 14:06:48 +0000 (14:06 +0000)]
R600/SILowerControlFlow.cpp: Fix a warning. [-Wunused-variable]

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

11 years agoSwitch CodeMetrics itself over to use TTI to determine if an instruction
Chandler Carruth [Mon, 21 Jan 2013 13:04:33 +0000 (13:04 +0000)]
Switch CodeMetrics itself over to use TTI to determine if an instruction
is free. The whole CodeMetrics API should probably be reworked more, but
this is enough to allow deleting the duplicate code there for computing
whether an instruction is free.

All of the passes using this have been updated to pull in TTI and hand
it to the CodeMetrics stuff. Further, a dead CodeMetrics API
(analyzeFunction) is nuked for lack of users.

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

11 years agoFix indentation and formatting.
Chandler Carruth [Mon, 21 Jan 2013 12:14:42 +0000 (12:14 +0000)]
Fix indentation and formatting.

This change brought to by clang-format. =]

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

11 years agoSink InlineCost.cpp into IPA -- it is now officially an interprocedural
Chandler Carruth [Mon, 21 Jan 2013 12:09:41 +0000 (12:09 +0000)]
Sink InlineCost.cpp into IPA -- it is now officially an interprocedural
analysis. How cute that it wasn't previously. ;]

Part of this confusion stems from the flattened header file tree. Thanks
to Benjamin for pointing out the goof on IRC, and we're considering
un-flattening the headers, so speak now if that would bug you.

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

11 years agoMove the inline cost analysis's primary cost query to TTI instead of the
Chandler Carruth [Mon, 21 Jan 2013 12:05:16 +0000 (12:05 +0000)]
Move the inline cost analysis's primary cost query to TTI instead of the
old CodeMetrics system. TTI has the specific advantage of being
extensible and customizable by targets to reflect target-specific cost
metrics.

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

11 years agoNow that the inline cost analysis is a pass, we can easily have it
Chandler Carruth [Mon, 21 Jan 2013 11:55:09 +0000 (11:55 +0000)]
Now that the inline cost analysis is a pass, we can easily have it
depend on and use other analyses (as long as they're either immutable
passes or CGSCC passes of course -- nothing in the pass manager has been
fixed here). Leverage this to thread TargetTransformInfo down through
the inline cost analysis.

No functionality changed here, this just threads things through.

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

11 years agoMake the inline cost a proper analysis pass. This remains essentially
Chandler Carruth [Mon, 21 Jan 2013 11:39:18 +0000 (11:39 +0000)]
Make the inline cost a proper analysis pass. This remains essentially
a dynamic analysis done on each call to the routine. However, now it can
use the standard pass infrastructure to reference other analyses,
instead of a silly setter method. This will become more interesting as
I teach it about more analysis passes.

This updates the two inliner passes to use the inline cost analysis.
Doing so highlights how utterly redundant these two passes are. Either
we should find a cheaper way to do always inlining, or we should merge
the two and just fiddle with the thresholds to get the desired behavior.
I'm leaning increasingly toward the latter as it would also remove the
Inliner sub-class split.

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

11 years agoFormatting and comment fixes to the always inliner.
Chandler Carruth [Mon, 21 Jan 2013 11:39:16 +0000 (11:39 +0000)]
Formatting and comment fixes to the always inliner.

Formatting fixes brought to you by clang-format.

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

11 years agoClean up the formatting and doxygen for the simple inliner a bit. No
Chandler Carruth [Mon, 21 Jan 2013 11:39:14 +0000 (11:39 +0000)]
Clean up the formatting and doxygen for the simple inliner a bit. No
functionality changed.

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

11 years agoFix an old-style doxygen comment.
Chandler Carruth [Mon, 21 Jan 2013 11:39:12 +0000 (11:39 +0000)]
Fix an old-style doxygen comment.

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

11 years agoCleanup the formatting of this header. This removes the namespace indent
Chandler Carruth [Mon, 21 Jan 2013 10:08:42 +0000 (10:08 +0000)]
Cleanup the formatting of this header. This removes the namespace indent
and reformats a few constructors using clang-format. Only whitespace
changes here.

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

11 years agoRevert "[Object] .bss sections have no content. PR15005."
Michael J. Spencer [Mon, 21 Jan 2013 08:13:04 +0000 (08:13 +0000)]
Revert "[Object] .bss sections have no content. PR15005."

This reverts commit r173007.

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

11 years agoUse <0 checks in place of ==-1 because it results in simpler code.
Craig Topper [Mon, 21 Jan 2013 07:25:16 +0000 (07:25 +0000)]
Use <0 checks in place of ==-1 because it results in simpler code.

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

11 years agoUse MVT instead of EVT in LowerVECTOR_SHUFFLEtoBlend.
Craig Topper [Mon, 21 Jan 2013 07:19:54 +0000 (07:19 +0000)]
Use MVT instead of EVT in LowerVECTOR_SHUFFLEtoBlend.

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

11 years agoRemove trailing whitespace.
Craig Topper [Mon, 21 Jan 2013 06:57:59 +0000 (06:57 +0000)]
Remove trailing whitespace.

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

11 years ago[Object] .bss sections have no content. PR15005.
Michael J. Spencer [Mon, 21 Jan 2013 06:46:11 +0000 (06:46 +0000)]
[Object] .bss sections have no content. PR15005.

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

11 years agoFix some 80 column violations.
Craig Topper [Mon, 21 Jan 2013 06:21:54 +0000 (06:21 +0000)]
Fix some 80 column violations.

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

11 years agoMake helper method static.
Craig Topper [Mon, 21 Jan 2013 06:13:28 +0000 (06:13 +0000)]
Make helper method static.

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

11 years ago[Support] Make test C++03.
Michael J. Spencer [Mon, 21 Jan 2013 05:39:07 +0000 (05:39 +0000)]
[Support] Make test C++03.

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

11 years agoRemove the comma from the last enumerator to fix -pedantic warnings.
Chandler Carruth [Mon, 21 Jan 2013 02:17:36 +0000 (02:17 +0000)]
Remove the comma from the last enumerator to fix -pedantic warnings.

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

11 years agoIntroduce a generic interface for querying an operation's expected
Chandler Carruth [Mon, 21 Jan 2013 01:27:39 +0000 (01:27 +0000)]
Introduce a generic interface for querying an operation's expected
lowered cost.

Currently, this is a direct port of the logic implementing
isInstructionFree in CodeMetrics. The hope is that the interface can be
improved (f.ex. supporting un-formed instruction queries) and the
implementation abstracted so that as we have test cases and target
knowledge we can expose increasingly accurate heuristics to clients.

I'll start switching existing consumers over and kill off the routine in
CodeMetrics in subsequent commits.

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

11 years agoSupport/Compiler.h: MSC1600, aka VS2010, is not C++11-ready.
NAKAMURA Takumi [Mon, 21 Jan 2013 00:30:31 +0000 (00:30 +0000)]
Support/Compiler.h: MSC1600, aka VS2010, is not C++11-ready.

LLVM_HAS_CXX11_TYPETRAITS -- std::is_constructible
LLVM_HAS_CXX11_STDLIB -- std::unique_ptr

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

11 years agoDisable test that fails due to lack of std::true_type in C++03.
Benjamin Kramer [Sun, 20 Jan 2013 21:52:27 +0000 (21:52 +0000)]
Disable test that fails due to lack of std::true_type in C++03.

Michael, can this test be ported to C++03?

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

11 years agoConvert more EVT's to MVT's in the lowering methods.
Craig Topper [Sun, 20 Jan 2013 21:50:27 +0000 (21:50 +0000)]
Convert more EVT's to MVT's in the lowering methods.

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

11 years agoCapitalize lowerTRUNCATE so that it matches the other lower functions in this file...
Craig Topper [Sun, 20 Jan 2013 21:34:37 +0000 (21:34 +0000)]
Capitalize lowerTRUNCATE so that it matches the other lower functions in this file despite it not matching coding standards.

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

11 years agoRevert CostTable algorithm, will re-write
Renato Golin [Sun, 20 Jan 2013 20:57:20 +0000 (20:57 +0000)]
Revert CostTable algorithm, will re-write

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

11 years ago[Support] Port ErrorOr<T> from lld to C++03.
Michael J. Spencer [Sun, 20 Jan 2013 20:32:30 +0000 (20:32 +0000)]
[Support] Port ErrorOr<T> from lld to C++03.

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

11 years agoLoopVectorize: Fix a C++11 incompatibility.
Benjamin Kramer [Sun, 20 Jan 2013 20:29:52 +0000 (20:29 +0000)]
LoopVectorize: Fix a C++11 incompatibility.

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

11 years agoAdd instruction encodings / disassembly support for l2rus instructions.
Richard Osborne [Sun, 20 Jan 2013 18:51:15 +0000 (18:51 +0000)]
Add instruction encodings / disassembly support for l2rus instructions.

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

11 years agoAdd instruction encodings / disassembly support for l3r instructions.
Richard Osborne [Sun, 20 Jan 2013 18:37:49 +0000 (18:37 +0000)]
Add instruction encodings / disassembly support for l3r instructions.

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

11 years agoAdd instruction encodings / disassembler support for 2rus instructions.
Richard Osborne [Sun, 20 Jan 2013 17:22:43 +0000 (17:22 +0000)]
Add instruction encodings / disassembler support for 2rus instructions.

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

11 years agoAdd instruction encodings / disassembly support 3r instructions.
Richard Osborne [Sun, 20 Jan 2013 17:18:47 +0000 (17:18 +0000)]
Add instruction encodings / disassembly support 3r instructions.

It is not possible to distinguish 3r instructions from 2r / rus instructions
using only the fixed bits. Therefore if an instruction doesn't match the
2r / rus format try to decode it as a 3r instruction before returning Fail.

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

11 years agollvm/test/CodeGen/X86/win_ftol2.ll: Add -cpu=generic to appease valgrind.
NAKAMURA Takumi [Sun, 20 Jan 2013 15:40:02 +0000 (15:40 +0000)]
llvm/test/CodeGen/X86/win_ftol2.ll: Add -cpu=generic to appease valgrind.

On valgrind the processor is reported;
  Host CPU: athlon-fx

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

11 years agollvm/utils/valgrind/x86_64-pc-linux-gnu.supp: Add /usr/bin/cmp.
NAKAMURA Takumi [Sun, 20 Jan 2013 15:30:29 +0000 (15:30 +0000)]
llvm/utils/valgrind/x86_64-pc-linux-gnu.supp: Add /usr/bin/cmp.

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

11 years agoFix a build error.
Nadav Rotem [Sun, 20 Jan 2013 09:39:17 +0000 (09:39 +0000)]
Fix a build error.

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

11 years ago[docs] Update IRC information.
Michael J. Spencer [Sun, 20 Jan 2013 09:38:14 +0000 (09:38 +0000)]
[docs] Update IRC information.

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

11 years agoMake LowerVSETCC a static function and use MVT instead of EVT.
Craig Topper [Sun, 20 Jan 2013 09:02:22 +0000 (09:02 +0000)]
Make LowerVSETCC a static function and use MVT instead of EVT.

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

11 years agoRevert 172708.
Nadav Rotem [Sun, 20 Jan 2013 08:35:56 +0000 (08:35 +0000)]
Revert 172708.

The optimization handles esoteric cases but adds a lot of complexity both to the X86 backend and to other backends.
This optimization disables an important canonicalization of chains of SEXT nodes and makes SEXT and ZEXT asymmetrical.
Disabling the canonicalization of consecutive SEXT nodes into a single node disables other DAG optimizations that assume
that there is only one SEXT node. The AVX mask optimizations is one example. Additionally this optimization does not update the cost model.

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

11 years agoChanged IRBuilder::CreateZExtOrTrunc and IRBuilder::CreateSExtOrTrunc so they also...
Michael Gottesman [Sun, 20 Jan 2013 07:33:26 +0000 (07:33 +0000)]
Changed IRBuilder::CreateZExtOrTrunc and IRBuilder::CreateSExtOrTrunc so they also work with vectors.

I also changed the name of a variable in IRBuilder::CreateFPExtOrFPTrunc to
match the names used in its two matching brethern as well.

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

11 years agoUpdate the gcc-loops benchmark
Nadav Rotem [Sun, 20 Jan 2013 07:01:04 +0000 (07:01 +0000)]
Update the gcc-loops benchmark

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

11 years agoUpdate the linpack benchmark with different array sizes.
Nadav Rotem [Sun, 20 Jan 2013 06:52:47 +0000 (06:52 +0000)]
Update the linpack benchmark with different array sizes.

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

11 years agoLoopVectorizer: Implement a new heuristics for selecting the unroll factor.
Nadav Rotem [Sun, 20 Jan 2013 05:24:29 +0000 (05:24 +0000)]
LoopVectorizer: Implement a new heuristics for selecting the unroll factor.
We ignore the cpu frontend and focus on pipeline utilization. We do this because we
don't have a good way to estimate the loop body size at the IR level.

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

11 years agoChange the cpu type in the test.
Nadav Rotem [Sun, 20 Jan 2013 05:20:56 +0000 (05:20 +0000)]
Change the cpu type in the test.

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

11 years agoMore copy editing.
Michael Gottesman [Sun, 20 Jan 2013 05:12:35 +0000 (05:12 +0000)]
More copy editing.

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

11 years agoDoxygenified and copy edited BasicBlock.h.
Michael Gottesman [Sun, 20 Jan 2013 05:03:42 +0000 (05:03 +0000)]
Doxygenified and copy edited BasicBlock.h.

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

11 years agoDoxygenified Argument.h and performed some copy editing of the documentation.
Michael Gottesman [Sun, 20 Jan 2013 05:03:39 +0000 (05:03 +0000)]
Doxygenified Argument.h and performed some copy editing of the documentation.

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

11 years agoConverted all method comments in IRBuilder.h to use doxygen style comments.
Michael Gottesman [Sun, 20 Jan 2013 05:03:37 +0000 (05:03 +0000)]
Converted all method comments in IRBuilder.h to use doxygen style comments.

This implies changing method documentation from the following style:

/// MethodName - Method description...

to

/// \brief Method description...

ala the LLVM Style Guide.

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