oota-llvm.git
11 years agoAdd AArch64 CRC32 instructions
Tim Northover [Wed, 6 Feb 2013 09:13:13 +0000 (09:13 +0000)]
Add AArch64 CRC32 instructions

These instructions are a late addition to the architecture, and may
yet end up behind an optional attribute, but for now they're available
at all times.

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

11 years agoAdd icache prefetch operations to AArch64
Tim Northover [Wed, 6 Feb 2013 09:04:56 +0000 (09:04 +0000)]
Add icache prefetch operations to AArch64

This adds hints to the various "prfm" instructions so that they can
affect the instruction cache as well as the data cache.

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

11 years agoInitial submission for the attribute group feature.
Bill Wendling [Wed, 6 Feb 2013 06:52:58 +0000 (06:52 +0000)]
Initial submission for the attribute group feature.

Attribute groups are of the form:

  #0 = attributes { noinline "no-sse" "cpu"="cortex-a8" alignstack=4 }

Target-dependent attributes are represented as strings. Attributes can have
optional values associated with them. E.g., the "cpu" attribute has the value
"cortex-a8".

Target-independent attributes are listed as enums inside the attribute classes.

Multiple attribute groups can be referenced by the same object. In that case,
the attributes are merged together.

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

11 years agoRemove extra blank line between closing curly brace and 'else'
Craig Topper [Wed, 6 Feb 2013 06:50:38 +0000 (06:50 +0000)]
Remove extra blank line between closing curly brace and 'else'

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

11 years agoRemove unused private field to suppress a build warning.
Craig Topper [Wed, 6 Feb 2013 06:48:10 +0000 (06:48 +0000)]
Remove unused private field to suppress a build warning.

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

11 years agoAlphabetize the function attributes.
Bill Wendling [Wed, 6 Feb 2013 06:22:58 +0000 (06:22 +0000)]
Alphabetize the function attributes.

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

11 years agoARM: Use MCTargetAsmParser::validateTargetOperandClass().
Jim Grosbach [Wed, 6 Feb 2013 06:00:11 +0000 (06:00 +0000)]
ARM: Use MCTargetAsmParser::validateTargetOperandClass().

Use the validateTargetOperandClass() hook to match literal '#0' operands in
InstAlias definitions. Previously this required per-instruction C++ munging of the
operand list, but not is handled as a natural part of the matcher. Much better.

No additional tests are required, as the pre-existing tests for these instructions
exercise the new behaviour as being functionally equivalent to the old.

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

11 years agoAllow targets to add custom asm operand matching logic.
Jim Grosbach [Wed, 6 Feb 2013 06:00:06 +0000 (06:00 +0000)]
Allow targets to add custom asm operand matching logic.

For example, ARM has several instructions with a literal '#0' immediate in the syntax
that's not represented as an actual operand. The asm matcher is expected a token
operand, but the parser will have created an immediate operand. This is currently
handled by dedicated per-instruction C++ munging of the ParsedAsmOperand list, but
will be better handled by this hook.

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

11 years agoFailing builds because a private class member is not being used after
Eli Bendersky [Wed, 6 Feb 2013 05:37:46 +0000 (05:37 +0000)]
Failing builds because a private class member is not being used after
initialization is one of the reasons I consider -werror to be shoddy.

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

11 years agoRemove this test in the meantime, since it won't pass on Atom. Atom uses lea
Eli Bendersky [Wed, 6 Feb 2013 03:15:00 +0000 (03:15 +0000)]
Remove this test in the meantime, since it won't pass on Atom. Atom uses lea
to move the stack pointer in prologs/epilogs. I will fix the test and add it
back later.

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

11 years agoAdd virtual desctructor to FrameEntry to avoid error on delete-non-virtual-dtor
Eli Bendersky [Wed, 6 Feb 2013 03:08:02 +0000 (03:08 +0000)]
Add virtual desctructor to FrameEntry to avoid error on delete-non-virtual-dtor

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

11 years agoTweak check to avoid integer overflow (for insanely large alignments)
Evan Cheng [Wed, 6 Feb 2013 02:06:33 +0000 (02:06 +0000)]
Tweak check to avoid integer overflow (for insanely large alignments)

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

11 years agoAdd a 'StringRef' version of hasAttribute.
Bill Wendling [Wed, 6 Feb 2013 01:33:42 +0000 (01:33 +0000)]
Add a 'StringRef' version of hasAttribute.

Fix the 'operator==' and 'hasAttributes' queries to take into account
target-dependent attributes.

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

11 years agoAdd methods to merge an AttrBuilder into another builder.
Bill Wendling [Wed, 6 Feb 2013 01:16:00 +0000 (01:16 +0000)]
Add methods to merge an AttrBuilder into another builder.

This is useful when parsing an object that references multiple attribute groups.

N.B. If both builders have alignments specified, then they should match!

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

11 years agoAttempt to recover gdb bot after r174445.
Manman Ren [Wed, 6 Feb 2013 00:59:41 +0000 (00:59 +0000)]
Attempt to recover gdb bot after r174445.

Failure: undefined symbol 'Lline_table_start0'.
Root-cause: we use a symbol subtraction to calculate at_stmt_list, but
the line table entries are not dumped in the assembly.
Fix: use zero instead of a symbol subtraction for Compile Unit 0.

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

11 years agoFix some formatting & add comments, following Eric's review
Eli Bendersky [Wed, 6 Feb 2013 00:20:38 +0000 (00:20 +0000)]
Fix some formatting & add comments, following Eric's review

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

11 years agoAdd the target-dependent (string) attributes from the AttrBuilder to the AttributeSet.
Bill Wendling [Tue, 5 Feb 2013 23:48:36 +0000 (23:48 +0000)]
Add the target-dependent (string) attributes from the AttrBuilder to the AttributeSet.

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

11 years agoAdd missing file to CMake list
Eli Bendersky [Tue, 5 Feb 2013 23:37:18 +0000 (23:37 +0000)]
Add missing file to CMake list

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

11 years agoTest for r174446
Eli Bendersky [Tue, 5 Feb 2013 23:31:48 +0000 (23:31 +0000)]
Test for r174446

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

11 years agoInitial support for DWARF CFI parsing and dumping in LLVM
Eli Bendersky [Tue, 5 Feb 2013 23:30:58 +0000 (23:30 +0000)]
Initial support for DWARF CFI parsing and dumping in LLVM

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

11 years agoBe consistent about the field name - AddressSize, not PointerSize. Add
Eli Bendersky [Tue, 5 Feb 2013 23:26:02 +0000 (23:26 +0000)]
Be consistent about the field name - AddressSize, not PointerSize. Add
a setter and fix some comments.

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

11 years agoPreprocess Apple llvmCore headers to reflect NDEBUG setting. <rdar://12568983>
Bob Wilson [Tue, 5 Feb 2013 22:59:42 +0000 (22:59 +0000)]
Preprocess Apple llvmCore headers to reflect NDEBUG setting. <rdar://12568983>

If an Apple llvmCore build is done without assertions, and a client uses
the llvmCore headers with assertions enabled, or vice versa, then things will
break because some of the structure sizes in the API are different.  Use the
unifdef tool to make the headers unconditionally match the way the llvmCore
libraries were built.

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

11 years agoRevert "[Support][ErrorOr] Add support for convertable types."
Andrew Trick [Tue, 5 Feb 2013 22:50:20 +0000 (22:50 +0000)]
Revert "[Support][ErrorOr] Add support for convertable types."

This reverts commit a33e1fafac7fedb1b080ef07ddf9ad6ddff3a830.

This unit test crashes on Darwon. It needs to be temporarily reverted
to unblock the test infrastructure.

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

11 years agoConvert to storing the attribute's internals as enums, integers, and strings.
Bill Wendling [Tue, 5 Feb 2013 22:37:24 +0000 (22:37 +0000)]
Convert to storing the attribute's internals as enums, integers, and strings.

The stuff we're handing are all enums (Attribute::AttrKind), integers and
strings. Don't convert them to Constants, which is an unnecessary step here. The
rest of the changes are mostly mechanical.

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

11 years agoMake sure the correct opcodes are used to SUB and ADD the stack
Eli Bendersky [Tue, 5 Feb 2013 21:53:29 +0000 (21:53 +0000)]
Make sure the correct opcodes are used to SUB and ADD the stack
pointer in function prologs/epilogs. The opcodes should depend on the
data model (LP64 vs. ILP32) rather than the architecture bit-ness.

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

11 years agoDwarf: support for LTO where a single object file can have multiple line tables
Manman Ren [Tue, 5 Feb 2013 21:52:47 +0000 (21:52 +0000)]
Dwarf: support for LTO where a single object file can have multiple line tables

We generate one line table for each compilation unit in the object file.
Reviewed by Eric and Kevin.

rdar://problem/13067005

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

11 years ago[mips] Do not use function CC_MipsN_VarArg unless the function being analyzed
Akira Hatanaka [Tue, 5 Feb 2013 21:18:11 +0000 (21:18 +0000)]
[mips] Do not use function CC_MipsN_VarArg unless the function being analyzed
is a vararg function.

The original code was examining flag OutputArg::IsFixed to determine whether
CC_MipsN_VarArg or CC_MipsN should be called. This is not correct, since this
flag is often set to false when the function being analyzed is a non-variadic
function.

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

11 years ago[objdump,readobj] Document the purpose and goals of each tool.
Michael J. Spencer [Tue, 5 Feb 2013 20:27:22 +0000 (20:27 +0000)]
[objdump,readobj] Document the purpose and goals of each tool.

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

11 years agoInstCombine: Fix and simplify the inttoptr side too.
Benjamin Kramer [Tue, 5 Feb 2013 20:22:40 +0000 (20:22 +0000)]
InstCombine: Fix and simplify the inttoptr side too.

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

11 years agoAdded missing newline to end of test case.
Michael Gottesman [Tue, 5 Feb 2013 19:39:44 +0000 (19:39 +0000)]
Added missing newline to end of test case.

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

11 years agoRemoved explicit inline as per the LLVM style guide.
Michael Gottesman [Tue, 5 Feb 2013 19:32:18 +0000 (19:32 +0000)]
Removed explicit inline as per the LLVM style guide.

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

11 years agoReapply r174343, with a fix for a scary DAG combine bug where it failed to differenti...
Owen Anderson [Tue, 5 Feb 2013 19:24:39 +0000 (19:24 +0000)]
Reapply r174343, with a fix for a scary DAG combine bug where it failed to differentiate between the alignment of the
base point of a load, and the overall alignment of the load.  This caused infinite loops in DAG combine with the
original application of this patch.

ORIGINAL COMMIT LOG:
When the target-independent DAGCombiner inferred a higher alignment for a load,
it would replace the load with one with the higher alignment.  However, it did
not place the new load in the worklist, which prevented later DAG combines in
the same phase (for example, target-specific combines) from ever seeing it.

This patch corrects that oversight, and updates some tests whose output changed
due to slightly different DAGCombine outputs.

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

11 years agoInstCombine: Harden code to work with vectors of pointers and simplify it a bit.
Benjamin Kramer [Tue, 5 Feb 2013 19:21:56 +0000 (19:21 +0000)]
InstCombine: Harden code to work with vectors of pointers and simplify it a bit.

Found by running instcombine on a fabricated test case for the constant folder.

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

11 years agoHexagon: Use TFR_cond with cmpb.[eq,gt,gtu] to handle
Jyotsna Verma [Tue, 5 Feb 2013 19:20:45 +0000 (19:20 +0000)]
Hexagon: Use TFR_cond with cmpb.[eq,gt,gtu] to handle
         zext( set[ne,eq,gt,ugt] (...) ) type of dag patterns.

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

11 years agoConstantFolding: Fix a crash when encoutering a truncating inttoptr.
Benjamin Kramer [Tue, 5 Feb 2013 19:04:36 +0000 (19:04 +0000)]
ConstantFolding: Fix a crash when encoutering a truncating inttoptr.

This was introduced in r173293.

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

11 years agoLoop Vectorizer: Refactor code to compute vectorized memory instruction cost
Arnold Schwaighofer [Tue, 5 Feb 2013 18:46:41 +0000 (18:46 +0000)]
Loop Vectorizer: Refactor code to compute vectorized memory instruction cost

Introduce a helper class that computes the cost of memory access instructions.
No functionality change intended.

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

11 years agoHexagon: Add testcase for post-increment store instructions.
Jyotsna Verma [Tue, 5 Feb 2013 18:23:51 +0000 (18:23 +0000)]
Hexagon: Add testcase for post-increment store instructions.

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

11 years ago[SjLj Prepare] When demoting an invoke instructions to the stack, if the normal
Chad Rosier [Tue, 5 Feb 2013 18:23:10 +0000 (18:23 +0000)]
[SjLj Prepare] When demoting an invoke instructions to the stack, if the normal
edge is critical, then split it so we can insert the store.
rdar://13126179

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

11 years agoRemove liveout lists from MachineRegisterInfo.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:21:56 +0000 (18:21 +0000)]
Remove liveout lists from MachineRegisterInfo.

All targets are now adding return value registers as implicit uses on
return instructions, and there is no longer a need for the live out
lists.

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

11 years agoRemove special-casing of return blocks for liveness.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:21:52 +0000 (18:21 +0000)]
Remove special-casing of return blocks for liveness.

Now that return value registers are return instruction uses, there is no
need for special treatment of return blocks.

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

11 years agoMove MRI liveouts to AArch64 return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:21:49 +0000 (18:21 +0000)]
Move MRI liveouts to AArch64 return instructions.

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

11 years agoMove MRI liveouts to XCore return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:21:46 +0000 (18:21 +0000)]
Move MRI liveouts to XCore return instructions.

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

11 years agoMove MRI liveouts to Sparc return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:16:58 +0000 (18:16 +0000)]
Move MRI liveouts to Sparc return instructions.

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

11 years agoHexagon: Use multiclass for absolute addressing mode stores.
Jyotsna Verma [Tue, 5 Feb 2013 18:15:34 +0000 (18:15 +0000)]
Hexagon: Use multiclass for absolute addressing mode stores.

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

11 years agoMove MRI liveouts to MSP430 return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:12:06 +0000 (18:12 +0000)]
Move MRI liveouts to MSP430 return instructions.

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

11 years agoMove MRI liveouts to Mips return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:12:03 +0000 (18:12 +0000)]
Move MRI liveouts to Mips return instructions.

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

11 years agoMove MRI liveouts to PowerPC return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:12:00 +0000 (18:12 +0000)]
Move MRI liveouts to PowerPC return instructions.

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

11 years agoMove MRI liveouts to MBlaze return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:08:45 +0000 (18:08 +0000)]
Move MRI liveouts to MBlaze return instructions.

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

11 years agoMove MRI liveouts to Hexagon return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:08:43 +0000 (18:08 +0000)]
Move MRI liveouts to Hexagon return instructions.

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

11 years agoMove MRI liveouts to ARM return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:08:40 +0000 (18:08 +0000)]
Move MRI liveouts to ARM return instructions.

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

11 years agoAdd a test case for PR14750.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 18:04:15 +0000 (18:04 +0000)]
Add a test case for PR14750.

This was fixed by r174402.

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

11 years agoMove MRI liveouts to X86 return instructions.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 17:59:48 +0000 (17:59 +0000)]
Move MRI liveouts to X86 return instructions.

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

11 years ago[MC] Bundle alignment: Invalidate relaxed fragments
Derek Schuff [Tue, 5 Feb 2013 17:55:27 +0000 (17:55 +0000)]
[MC] Bundle alignment: Invalidate relaxed fragments

Currently, when a fragment is relaxed, its size is modified, but its
offset is not (it gets laid out as a side effect of checking whether
it needs relaxation), then all subsequent fragments are invalidated
because their offsets need to change. When bundling is enabled,
relaxed fragments need to get laid out again, because the increase in
size may push it over a bundle boundary. So instead of only
invalidating subsequent fragments, also invalidate the fragment that
gets relaxed, which causes it to get laid out again.

This patch also fixes some trailing whitespace and fixes the
bundling-related debug output of MCFragments.

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

11 years agoDon't use MRI liveouts in R600.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 17:53:52 +0000 (17:53 +0000)]
Don't use MRI liveouts in R600.

Something very strange is going on with the output registers in this
target. Its ISelLowering code is inserting dangling CopyToReg nodes,
hoping that those physregs won't get clobbered before the RETURN.

This patch adds the output registers as implicit uses on RETURN
instructions in the custom emission pass. I'd much prefer to have those
CopyToReg nodes glued to the RETURNs, but I don't see how.

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

11 years agoAvoid using MRI::liveout_iterator for computing VRSAVEs.
Jakob Stoklund Olesen [Tue, 5 Feb 2013 17:40:36 +0000 (17:40 +0000)]
Avoid using MRI::liveout_iterator for computing VRSAVEs.

The liveout lists are about to be removed from MRI, this is the only
place they were used after register allocation.

Get the live out V registers directly from the return instructions
instead.

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

11 years agoSet the deployment target for Apple llvmCore builds. <rdar://problem/12712431>
Bob Wilson [Tue, 5 Feb 2013 17:29:03 +0000 (17:29 +0000)]
Set the deployment target for Apple llvmCore builds. <rdar://problem/12712431>

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

11 years agoFormat comments & clean whitespace
Eli Bendersky [Tue, 5 Feb 2013 17:10:07 +0000 (17:10 +0000)]
Format comments & clean whitespace

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

11 years agoR600: Fold remaining CONST_COPY after expand pseudo inst
Tom Stellard [Tue, 5 Feb 2013 17:09:16 +0000 (17:09 +0000)]
R600: Fold remaining CONST_COPY after expand pseudo inst

Patch by: Vincent Lejeune

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

11 years agoR600: improve inputs/interpolation handling
Tom Stellard [Tue, 5 Feb 2013 17:09:14 +0000 (17:09 +0000)]
R600: improve inputs/interpolation handling

Use one intrinsic for all sorts of interpolation.
Use two separate unexpanded instructions to represent INTERP_XY and _ZW -
this will allow to eliminate one part if it's not used.
Track liveness of special interpolation regs instead of reserving them -
this will allow to reuse those regs, lowering reg pressure.

Patch By: Vadim Girlin

v2[Vincent Lejeune]: Rebased against current llvm master

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174394 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoR600: Add tests for instruction predicates
Tom Stellard [Tue, 5 Feb 2013 17:09:13 +0000 (17:09 +0000)]
R600: Add tests for instruction predicates

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

11 years agoR600: Emit function name in the AsmPrinter
Tom Stellard [Tue, 5 Feb 2013 17:09:11 +0000 (17:09 +0000)]
R600: Emit function name in the AsmPrinter

Emitting the function name allows us to check for it in the FileCheck
tests so we can make sure FileCheck is checking the output of the
correct function.

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

11 years agoR600/SI: Add patterns for fcos and fsin.
Tom Stellard [Tue, 5 Feb 2013 17:09:10 +0000 (17:09 +0000)]
R600/SI: Add patterns for fcos and fsin.

Fixes 37 piglit tests and allows e.g. FlightGear to run with radeonsi.

Patch by: Michel Dänzer

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

11 years agoFix comments
Eli Bendersky [Tue, 5 Feb 2013 16:53:11 +0000 (16:53 +0000)]
Fix comments

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

11 years agoHexagon: Add V4 compare instructions. Enable relationship mapping
Jyotsna Verma [Tue, 5 Feb 2013 16:42:24 +0000 (16:42 +0000)]
Hexagon: Add V4 compare instructions. Enable relationship mapping
for the existing instructions.

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

11 years agoFix comment formatting
Eli Bendersky [Tue, 5 Feb 2013 16:40:22 +0000 (16:40 +0000)]
Fix comment formatting

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

11 years agoFix signed-unsigned comparison warning.
Tim Northover [Tue, 5 Feb 2013 16:40:06 +0000 (16:40 +0000)]
Fix signed-unsigned comparison warning.

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

11 years agoSupport: ensure proper state in ErrorOr copy ctors before calling 'get'
Meador Inge [Tue, 5 Feb 2013 15:41:27 +0000 (15:41 +0000)]
Support: ensure proper state in ErrorOr copy ctors before calling 'get'

Some paths through the copy constructors for 'ErrorOr' were calling
'get' when 'HasError' and 'IsValid' were not properly initialized.
Depending on what happened to be in memory for those member variables
the asserts in 'get' might incorrectly fire.  Fixed by ensuring that
the member variables in question are always initialized before calling
'get'.

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

11 years agoFormatting.
NAKAMURA Takumi [Tue, 5 Feb 2013 15:32:16 +0000 (15:32 +0000)]
Formatting.

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

11 years agollvm/test/Transforms/LoopVectorize/X86/vector_ptr_load_store.ll: "-debug" requires...
NAKAMURA Takumi [Tue, 5 Feb 2013 15:32:10 +0000 (15:32 +0000)]
llvm/test/Transforms/LoopVectorize/X86/vector_ptr_load_store.ll: "-debug" requires +Asserts.

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

11 years agoLoop Vectorizer: Handle pointer stores/loads in getWidestType()
Arnold Schwaighofer [Tue, 5 Feb 2013 15:08:02 +0000 (15:08 +0000)]
Loop Vectorizer: Handle pointer stores/loads in getWidestType()

In the loop vectorizer cost model, we used to ignore stores/loads of a pointer
type when computing the widest type within a loop. This meant that if we had
only stores/loads of pointers in a loop we would return a widest type of 8bits
(instead of 32 or 64 bit) and therefore a vector factor that was too big.

Now, if we see a consecutive store/load of pointers we use the size of a pointer
(from data layout).

This problem occured in SingleSource/Benchmarks/Shootout-C++/hash.cpp (reduced
test case is the first test in vector_ptr_load_store.ll).

radar://13139343

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

11 years agoFix remaining StringRef abuse.
Tim Northover [Tue, 5 Feb 2013 15:01:51 +0000 (15:01 +0000)]
Fix remaining StringRef abuse.

This should fix the valgrind buildbot failure.

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

11 years agoRevert r174343, "When the target-independent DAGCombiner inferred a higher alignment...
NAKAMURA Takumi [Tue, 5 Feb 2013 14:44:16 +0000 (14:44 +0000)]
Revert r174343, "When the target-independent DAGCombiner inferred a higher alignment for a load,"

It caused hangups in compiling clang/lib/Parse/ParseDecl.cpp and clang/lib/Driver/Tools.cpp in stage2 on some hosts.

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

11 years agoLink .ARM.exidx with corresponding text section.
Logan Chien [Tue, 5 Feb 2013 14:18:59 +0000 (14:18 +0000)]
Link .ARM.exidx with corresponding text section.

The sh_link in the ELF section header of .ARM.exidx should
be filled with the section index of the corresponding text
section.

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

11 years agoARM cost model: Cost for scalar integer casts and floating point conversions
Arnold Schwaighofer [Tue, 5 Feb 2013 14:05:55 +0000 (14:05 +0000)]
ARM cost model: Cost for scalar integer casts and floating point conversions

Also adds some costs for vector integer float conversions.

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

11 years agoFix formatting in AArch64 backend.
Tim Northover [Tue, 5 Feb 2013 13:24:56 +0000 (13:24 +0000)]
Fix formatting in AArch64 backend.

This should fix three purely whitespace issues:
    + 80 column violations.
    + Tab characters.
    + TableGen brace placement.

No functional changes.

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

11 years agoRemove cyclic dependency in AArch64 libraries
Tim Northover [Tue, 5 Feb 2013 13:24:47 +0000 (13:24 +0000)]
Remove cyclic dependency in AArch64 libraries

This moves the bit twiddling and string fiddling functions required by other
parts of the backend into a separate library. Previously they resided in
AArch64Desc, which created a circular dependency between various components.

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

11 years agoThis patch that sets the Mips ELF header flag for
Jack Carter [Tue, 5 Feb 2013 09:30:03 +0000 (09:30 +0000)]
This patch that sets the Mips ELF header flag for
MicroMips architectures.

Contributer: Zoran Jovanovic

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

11 years agoThis patch that sets the EmitAlias flag in td files
Jack Carter [Tue, 5 Feb 2013 08:32:10 +0000 (08:32 +0000)]
This patch that sets the EmitAlias flag in td files
and enables the instruction printer to print aliased
instructions.

Due to usage of RegisterOperands a change in common
code (utils/TableGen/AsmWriterEmitter.cpp) is required
to get the correct register value if it is a RegisterOperand.

Contributer: Vladimir Medic

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

11 years ago[Support][ErrorOr] Add support for convertable types.
Michael J. Spencer [Tue, 5 Feb 2013 08:22:27 +0000 (08:22 +0000)]
[Support][ErrorOr] Add support for convertable types.

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

11 years agoAdd target-dependent versions of addAttribute/removeAttribute to AttrBuilder.
Bill Wendling [Tue, 5 Feb 2013 08:09:32 +0000 (08:09 +0000)]
Add target-dependent versions of addAttribute/removeAttribute to AttrBuilder.

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

11 years agoChanged in comment cxx -> C++. Thanks Richard Smith!.
Michael Gottesman [Tue, 5 Feb 2013 08:01:22 +0000 (08:01 +0000)]
Changed in comment cxx -> C++. Thanks Richard Smith!.

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

11 years agoThis patch changes a static_cast to dyn_cast
Jack Carter [Tue, 5 Feb 2013 07:47:41 +0000 (07:47 +0000)]
This patch changes a static_cast to dyn_cast
for MipsELFStreamer objects.

Contributer: Jack Carter

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

11 years agoConstruct a skeleton cu for each compile unit in the module, not just
Eric Christopher [Tue, 5 Feb 2013 07:32:03 +0000 (07:32 +0000)]
Construct a skeleton cu for each compile unit in the module, not just
for the first compile unit.

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

11 years agoAdd support for testing the output of the abbrev table for the
Eric Christopher [Tue, 5 Feb 2013 07:32:00 +0000 (07:32 +0000)]
Add support for testing the output of the abbrev table for the
skeleton CU as part of the DWARF5 split dwarf proposal.

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

11 years agoAdd support for emitting a stub DW_AT_GNU_dwo_id as part of the
Eric Christopher [Tue, 5 Feb 2013 07:31:55 +0000 (07:31 +0000)]
Add support for emitting a stub DW_AT_GNU_dwo_id as part of the
DWARF5 split dwarf proposal.

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

11 years agoUse the do-while(0) thing for this #define.
Bill Wendling [Tue, 5 Feb 2013 07:19:31 +0000 (07:19 +0000)]
Use the do-while(0) thing for this #define.

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

11 years agoPrint error messages from MemoryBuffer::getFile() in llvm-symbolizer
Alexey Samsonov [Tue, 5 Feb 2013 07:01:34 +0000 (07:01 +0000)]
Print error messages from MemoryBuffer::getFile() in llvm-symbolizer

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

11 years agoAdd code to GlobalVariable.h so that global variables marked as
Michael Gottesman [Tue, 5 Feb 2013 06:53:26 +0000 (06:53 +0000)]
Add code to GlobalVariable.h so that global variables marked as
externally_initialized return false for hasDefiniteInitializer and
hasUniqueInitializer.

rdar://12580965.

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

11 years agoWhen the target-independent DAGCombiner inferred a higher alignment for a load,
Owen Anderson [Tue, 5 Feb 2013 06:25:30 +0000 (06:25 +0000)]
When the target-independent DAGCombiner inferred a higher alignment for a load,
it would replace the load with one with the higher alignment.  However, it did
not place the new load in the worklist, which prevented later DAG combines in
the same phase (for example, target-specific combines) from ever seeing it.

This patch corrects that oversight, and updates some tests whose output changed
due to slightly different DAGCombine outputs.

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

11 years agoAdded LLVM Asm/Bitcode Reader/Writer support for new IR keyword externally_initialized.
Michael Gottesman [Tue, 5 Feb 2013 05:57:38 +0000 (05:57 +0000)]
Added LLVM Asm/Bitcode Reader/Writer support for new IR keyword externally_initialized.

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

11 years ago[Stack Alignment] emit warning instead of a hard error
Manman Ren [Mon, 4 Feb 2013 23:45:08 +0000 (23:45 +0000)]
[Stack Alignment] emit warning instead of a hard error

Per discussion in rdar://13127907, we should emit a hard error only if
people write code where the requested alignment is larger than achievable
and assumes the low bits are zeros. A warning should be good enough when
we are not sure if the source code assumes the low bits are zeros.

rdar://13127907

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

11 years agoInitial cleanups of the param-attribute code in the bitcode reader/writer.
Bill Wendling [Mon, 4 Feb 2013 23:32:23 +0000 (23:32 +0000)]
Initial cleanups of the param-attribute code in the bitcode reader/writer.

Rename the PARAMATTR_CODE_ENTRY to PARAMATTR_CODE_ENTRY_OLD. It will be replaced
by another encoding. Keep around the current LLVM attribute encoder/decoder
code, but move it to the bitcode directories so that no one's tempted to use
them.

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

11 years agoReplace global std::string with const char[]
Alexey Samsonov [Mon, 4 Feb 2013 15:55:26 +0000 (15:55 +0000)]
Replace global std::string with const char[]

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

11 years agoHexagon: Add V4 combine instructions and some more Def Pats for V2.
Jyotsna Verma [Mon, 4 Feb 2013 15:52:56 +0000 (15:52 +0000)]
Hexagon: Add V4 combine instructions and some more Def Pats for V2.

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

11 years agoDisable a couple more vector splat optimizations on PPC.
Benjamin Kramer [Mon, 4 Feb 2013 15:52:32 +0000 (15:52 +0000)]
Disable a couple more vector splat optimizations on PPC.

I didn't see those because the test case used "not grep". FileCheck the test and
XFAIL it, preserving the old optimization, so this can be fixed eventually.

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

11 years agoFix some abuses of StringRef
Tim Northover [Mon, 4 Feb 2013 15:44:38 +0000 (15:44 +0000)]
Fix some abuses of StringRef

We were taking a StringRef to a temporary result, which can go horribly wrong.

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

11 years agoX86: Open up some opportunities for constant folding by postponing shift lowering.
Benjamin Kramer [Mon, 4 Feb 2013 15:19:33 +0000 (15:19 +0000)]
X86: Open up some opportunities for constant folding by postponing shift lowering.

Fixes PR15141.

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

11 years agoX86: Simplify code. No functionality change.
Benjamin Kramer [Mon, 4 Feb 2013 15:19:25 +0000 (15:19 +0000)]
X86: Simplify code. No functionality change.

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

11 years agoSelectionDAG: Teach FoldConstantArithmetic how to deal with vectors.
Benjamin Kramer [Mon, 4 Feb 2013 15:19:18 +0000 (15:19 +0000)]
SelectionDAG: Teach FoldConstantArithmetic how to deal with vectors.

This required disabling a PowerPC optimization that did the following:
input:
x = BUILD_VECTOR <i32 16, i32 16, i32 16, i32 16>
lowered to:
tmp = BUILD_VECTOR <i32 8, i32 8, i32 8, i32 8>
x = ADD tmp, tmp

The add now gets folded immediately and we're back at the BUILD_VECTOR we
started from. I don't see a way to fix this currently so I left it disabled
for now.

Fix some trivially foldable X86 tests too.

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

11 years agoGive explicit suffix to integer constant over 32-bits.
Tim Northover [Mon, 4 Feb 2013 14:14:58 +0000 (14:14 +0000)]
Give explicit suffix to integer constant over 32-bits.

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