oota-llvm.git
12 years agoHandle expressions of the form _GLOBAL_OFFSET_TABLE_-symbol the same way gas
Rafael Espindola [Sat, 10 Dec 2011 02:28:43 +0000 (02:28 +0000)]
Handle expressions of the form _GLOBAL_OFFSET_TABLE_-symbol the same way gas
does. The _GLOBAL_OFFSET_TABLE_ is still magical in that we get a R_386_GOTPC,
but it doesn't change the immediate in the same way as when the expression
has no right hand side symbol.

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

12 years agoLSR: ignore strides in outer loops.
Andrew Trick [Sat, 10 Dec 2011 00:25:00 +0000 (00:25 +0000)]
LSR: ignore strides in outer loops.

Since we're not rewriting IVs in other loops, there's not much reason
to consider their stride when generating formulae.
This should reduce the number of useless formulas considered by LSR.

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

12 years agoARM add some more pre-UAL VFP mnemonics for convenience when porting old code.
Jim Grosbach [Sat, 10 Dec 2011 00:01:02 +0000 (00:01 +0000)]
ARM add some more pre-UAL VFP mnemonics for convenience when porting old code.

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

12 years agoSplats can contain undef's; make sure to handle them correctly. PR11526.
Eli Friedman [Fri, 9 Dec 2011 23:54:42 +0000 (23:54 +0000)]
Splats can contain undef's; make sure to handle them correctly.  PR11526.

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

12 years agoARM add some pre-UAL VFP mnemonics for convenience when porting old code.
Jim Grosbach [Fri, 9 Dec 2011 23:34:09 +0000 (23:34 +0000)]
ARM add some pre-UAL VFP mnemonics for convenience when porting old code.

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

12 years agounittests/Support/Path.cpp: [recursive_directory_iterator] Work around for end iterator.
NAKAMURA Takumi [Fri, 9 Dec 2011 23:20:03 +0000 (23:20 +0000)]
unittests/Support/Path.cpp: [recursive_directory_iterator] Work around for end iterator.

FIXME: It should be more robust.

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

12 years agoAdd dump method for debugging.
Bill Wendling [Fri, 9 Dec 2011 23:18:34 +0000 (23:18 +0000)]
Add dump method for debugging.

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

12 years agoRandom cleanups. No description changes.
Bill Wendling [Fri, 9 Dec 2011 22:41:40 +0000 (22:41 +0000)]
Random cleanups. No description changes.

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

12 years agoARM allows '' syntax, not just '#imm' for assembly.
Jim Grosbach [Fri, 9 Dec 2011 22:25:03 +0000 (22:25 +0000)]
ARM allows '' syntax, not just '#imm' for assembly.

Backwards compatibility with 'gas'. #imm is the preferered and documented
syntax, but lots of existing code uses the '$' prefix, so we should
support it if we can.

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

12 years ago[asan] call __asan_init from .preinit_array. This simplifies __asan_init vs malloc...
Kostya Serebryany [Fri, 9 Dec 2011 22:09:32 +0000 (22:09 +0000)]
[asan] call __asan_init from .preinit_array. This simplifies __asan_init vs malloc chicken-and-egg situation on Android and probably on other flavours of Linux. Patch by eugenis@google.com.

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

12 years agoARM assembly aliases for BIC<-->AND (immediate).
Jim Grosbach [Fri, 9 Dec 2011 22:02:17 +0000 (22:02 +0000)]
ARM assembly aliases for BIC<-->AND (immediate).

When the immediate operand of an AND or BIC instruction isn't representable
in the immediate field of the instruction, but the bitwise negation of the
immediate is, assemble the instruction as the inverse operation instead
with the inverted immediate as the operand.

rdar://10550057

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

12 years agoUpdate test to something more sensible.
Evan Cheng [Fri, 9 Dec 2011 21:54:10 +0000 (21:54 +0000)]
Update test to something more sensible.

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

12 years agoARM NEON data type aliases for VBIC(register).
Jim Grosbach [Fri, 9 Dec 2011 21:46:04 +0000 (21:46 +0000)]
ARM NEON data type aliases for VBIC(register).

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

12 years agoARM assembly parsing and encoding for VLD2 with writeback.
Jim Grosbach [Fri, 9 Dec 2011 21:28:25 +0000 (21:28 +0000)]
ARM assembly parsing and encoding for VLD2 with writeback.

Refactor the instructions into fixed writeback and register-stride
writeback variants to simplify the offset operand (no more optional
register operand using reg0). This is a simpler representation and allows
the assembly parser to more easily handle these instructions.

Add tests for the instruction variants now supported.

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

12 years agoSplitBlockPredecessors uses ArrayRef instead of Data and Size.
Jakub Staszak [Fri, 9 Dec 2011 21:19:53 +0000 (21:19 +0000)]
SplitBlockPredecessors uses ArrayRef instead of Data and Size.

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

12 years ago[fast-isel] Add support for selecting insertvalue.
Chad Rosier [Fri, 9 Dec 2011 20:09:54 +0000 (20:09 +0000)]
[fast-isel] Add support for selecting insertvalue.
rdar://10530851

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

12 years agoHandle reloc_signed_4byte in here. Not doing so was a regression from my
Rafael Espindola [Fri, 9 Dec 2011 19:57:29 +0000 (19:57 +0000)]
Handle reloc_signed_4byte in here. Not doing so was a regression from my
previous commit. It is strange that we see it in 32 bits. We already
have a fixme about it.

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

12 years agoUser a helper overload for a common pattern.
Jakob Stoklund Olesen [Fri, 9 Dec 2011 19:44:39 +0000 (19:44 +0000)]
User a helper overload for a common pattern.

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

12 years agoRevert r146041 et al. The FunctionPass doesn't take an address but the ID.
Bill Wendling [Fri, 9 Dec 2011 19:11:02 +0000 (19:11 +0000)]
Revert r146041 et al. The FunctionPass doesn't take an address but the ID.

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

12 years agoTidy up. Better base class factoring.
Jim Grosbach [Fri, 9 Dec 2011 19:07:20 +0000 (19:07 +0000)]
Tidy up. Better base class factoring.

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

12 years agoTidy up. Better base class factoring.
Jim Grosbach [Fri, 9 Dec 2011 18:54:11 +0000 (18:54 +0000)]
Tidy up. Better base class factoring.

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

12 years agoTweak debugging output.
Jakob Stoklund Olesen [Fri, 9 Dec 2011 18:20:35 +0000 (18:20 +0000)]
Tweak debugging output.

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

12 years agoThe second part of support for generating dwarf for assembly source files. This
Kevin Enderby [Fri, 9 Dec 2011 18:09:40 +0000 (18:09 +0000)]
The second part of support for generating dwarf for assembly source files.  This
generates the dwarf Compile Unit DIE and a dwarf subprogram DIE for each
non-temporary label.

The next part will be to get the clang driver to enable this when assembling
a .s file.  rdar://9275556

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

12 years agoThis is now implemented.
Benjamin Kramer [Fri, 9 Dec 2011 15:45:57 +0000 (15:45 +0000)]
This is now implemented.

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

12 years agoX86: Add patterns for the various rounding ops for SSE4.1 and AVX.
Benjamin Kramer [Fri, 9 Dec 2011 15:44:03 +0000 (15:44 +0000)]
X86: Add patterns for the various rounding ops for SSE4.1 and AVX.

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

12 years agoX86: Split (v)rounds[sd] into a normal and an intrinsic version.
Benjamin Kramer [Fri, 9 Dec 2011 15:43:55 +0000 (15:43 +0000)]
X86: Split (v)rounds[sd] into a normal and an intrinsic version.

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

12 years agoMove isUnpredicatedTerminator() default implementation to TargetInstrInfoImpl to...
Evan Cheng [Fri, 9 Dec 2011 06:41:08 +0000 (06:41 +0000)]
Move isUnpredicatedTerminator() default implementation to TargetInstrInfoImpl to break Target's dependency on CodeGen.

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

12 years agoRemove hasSSE1orAVX(). It's the same as hasXMM().
Evan Cheng [Fri, 9 Dec 2011 06:32:46 +0000 (06:32 +0000)]
Remove hasSSE1orAVX(). It's the same as hasXMM().

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

12 years agoAdd -unroll-runtime for unrolling loops with run-time trip counts.
Andrew Trick [Fri, 9 Dec 2011 06:19:40 +0000 (06:19 +0000)]
Add -unroll-runtime for unrolling loops with run-time trip counts.

Patch by Brendon Cahoon!

This extends the existing LoopUnroll and LoopUnrollPass. Brendon
measured no regressions in the llvm test suite with -unroll-runtime
enabled. This implementation works by using the existing loop
unrolling code to unroll the loop by a power-of-two (default 8). It
generates an if-then-else sequence of code prior to the loop to
execute the extra iterations before entering the unrolled loop.

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

12 years agoForgot setting -march.
Evan Cheng [Fri, 9 Dec 2011 06:15:00 +0000 (06:15 +0000)]
Forgot setting -march.

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

12 years agoFix InitializeNativeTargetAsmParser in CMake builds by defining the
Chandler Carruth [Fri, 9 Dec 2011 03:31:58 +0000 (03:31 +0000)]
Fix InitializeNativeTargetAsmParser in CMake builds by defining the
appropriate macro. Patch by Alexey Prokhin. Fixes PR11498.

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

12 years agoHandle the case of the magical _GLOBAL_OFFSET_TABLE_ showing up in a
Rafael Espindola [Fri, 9 Dec 2011 03:03:58 +0000 (03:03 +0000)]
Handle the case of the magical _GLOBAL_OFFSET_TABLE_ showing up in a
symbol difference. This matches gas behavior and fixes PR11513.

We still don't handle _GLOBAL_OFFSET_TABLE_ in data sections.

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

12 years agoTypo.
Chad Rosier [Fri, 9 Dec 2011 02:00:44 +0000 (02:00 +0000)]
Typo.

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

12 years agoRename WrapperPIC. It is now used for both pic and static.
Akira Hatanaka [Fri, 9 Dec 2011 01:53:17 +0000 (01:53 +0000)]
Rename WrapperPIC. It is now used for both pic and static.

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

12 years agojalr should use t9 ($25) for indirect calls regardless of the relocation model
Akira Hatanaka [Fri, 9 Dec 2011 01:45:12 +0000 (01:45 +0000)]
jalr should use t9 ($25) for indirect calls regardless of the relocation model
specified.

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

12 years agoFix comment.
Devang Patel [Fri, 9 Dec 2011 01:25:04 +0000 (01:25 +0000)]
Fix comment.

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

12 years agoUpdate stale comment.
Devang Patel [Fri, 9 Dec 2011 01:18:48 +0000 (01:18 +0000)]
Update stale comment.

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

12 years agoFix a couple of logic bugs in TargetLowering::SimplifyDemandedBits. PR11514.
Eli Friedman [Fri, 9 Dec 2011 01:16:26 +0000 (01:16 +0000)]
Fix a couple of logic bugs in TargetLowering::SimplifyDemandedBits.  PR11514.

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

12 years agounittests/SupportTests: Fix test. pop modifies the current entry, thus the
Michael J. Spencer [Fri, 9 Dec 2011 01:14:41 +0000 (01:14 +0000)]
unittests/SupportTests: Fix test. pop modifies the current entry, thus the
dontlookhere check must be after it.

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

12 years agounittests/SupportTests: Add some outs()'s to debug the issues on some bots.
Michael J. Spencer [Fri, 9 Dec 2011 00:45:09 +0000 (00:45 +0000)]
unittests/SupportTests: Add some outs()'s to debug the issues on some bots.
I have run these tests under many configurations on the exact same OS as
the failures, and I can't reproduce them :(.

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

12 years agoRevert r146184. I am seeing performance regression cause by this patch in one test...
Devang Patel [Thu, 8 Dec 2011 23:52:00 +0000 (23:52 +0000)]
Revert r146184. I am seeing performance regression cause by this patch in one test case.

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

12 years agoARM convenience aliases for VSQRT.
Jim Grosbach [Thu, 8 Dec 2011 22:51:25 +0000 (22:51 +0000)]
ARM convenience aliases for VSQRT.

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

12 years agoSupport/FileSystem: Implement recursive_directory_iterator and make
Michael J. Spencer [Thu, 8 Dec 2011 22:50:09 +0000 (22:50 +0000)]
Support/FileSystem: Implement recursive_directory_iterator and make
directory_iterator preserve InputIterator semantics on copy.

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

12 years agoFix infinite loop in DSE when deleting a free in a reachable loop that's also
Nick Lewycky [Thu, 8 Dec 2011 22:36:35 +0000 (22:36 +0000)]
Fix infinite loop in DSE when deleting a free in a reachable loop that's also
trivially infinite.

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

12 years agoAdd 256-bit variant vmovss and vmovsd patterns. rdar://10538417
Evan Cheng [Thu, 8 Dec 2011 22:30:45 +0000 (22:30 +0000)]
Add 256-bit variant vmovss and vmovsd patterns. rdar://10538417

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

12 years agoRemove reference to dead GEPSplitterPass. PR11506.
Eli Friedman [Thu, 8 Dec 2011 22:28:17 +0000 (22:28 +0000)]
Remove reference to dead GEPSplitterPass.  PR11506.

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

12 years agoARM 64-bit VEXT assembly uses a .64 suffix, not .32, amazingly enough.
Jim Grosbach [Thu, 8 Dec 2011 22:19:04 +0000 (22:19 +0000)]
ARM 64-bit VEXT assembly uses a .64 suffix, not .32, amazingly enough.

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

12 years agoEnhance both TargetLibraryInfo and SelectionDAGBuilder so that the latter can use...
Owen Anderson [Thu, 8 Dec 2011 22:15:21 +0000 (22:15 +0000)]
Enhance both TargetLibraryInfo and SelectionDAGBuilder so that the latter can use the former to prevent the formation of libm SDNode's when  -fno-builtin is passed.

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

12 years agoARM VSHR implied destination operand form aliases.
Jim Grosbach [Thu, 8 Dec 2011 22:06:06 +0000 (22:06 +0000)]
ARM VSHR implied destination operand form aliases.

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

12 years agoAdd various missing AVX patterns which was causing crashes. Sadly, the generated
Evan Cheng [Thu, 8 Dec 2011 22:05:28 +0000 (22:05 +0000)]
Add various missing AVX patterns which was causing crashes. Sadly, the generated
code looks pretty bad compared to SSE.

rdar://10538793

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

12 years agoTidy up a bit.
Jim Grosbach [Thu, 8 Dec 2011 22:04:40 +0000 (22:04 +0000)]
Tidy up a bit.

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

12 years agoRefactor. No intentional functionality change.
Devang Patel [Thu, 8 Dec 2011 21:48:01 +0000 (21:48 +0000)]
Refactor. No intentional functionality change.

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

12 years agoAdd rather verbose stats for fast-isel failures.
Chad Rosier [Thu, 8 Dec 2011 21:37:10 +0000 (21:37 +0000)]
Add rather verbose stats for fast-isel failures.

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

12 years agoARM asm parser, just issue a warning for a duplicate reg in a list.
Jim Grosbach [Thu, 8 Dec 2011 21:34:20 +0000 (21:34 +0000)]
ARM asm parser, just issue a warning for a duplicate reg in a list.

For better 'gas' compatibility.

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

12 years agoFilter "sink to" candidate blocks sooner. This avoids unnecessary computation to...
Devang Patel [Thu, 8 Dec 2011 21:33:23 +0000 (21:33 +0000)]
Filter "sink to" candidate blocks sooner. This avoids unnecessary computation to determine whether the block dominates all uses or not.

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

12 years agoPass a GlobalAddress instead of an ExternalSymbol to LowerCallTo in
Akira Hatanaka [Thu, 8 Dec 2011 21:05:38 +0000 (21:05 +0000)]
Pass a GlobalAddress instead of an ExternalSymbol to LowerCallTo in
MipsTargetLowering::LowerGlobalTLSAddress. This is necessary to have
call16(__tls_get_addr) emitted instead of got_disp(__tls_get_addr) when the
target is Mips64.

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

12 years agoARM VSUB implied destination operand form aliases.
Jim Grosbach [Thu, 8 Dec 2011 20:56:26 +0000 (20:56 +0000)]
ARM VSUB implied destination operand form aliases.

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

12 years agoTidy up a bit.
Jim Grosbach [Thu, 8 Dec 2011 20:53:19 +0000 (20:53 +0000)]
Tidy up a bit.

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

12 years agoDon't explicitly marked libm rounding ops as legal on SSE4.1/AVX. There don't seem...
Owen Anderson [Thu, 8 Dec 2011 20:51:38 +0000 (20:51 +0000)]
Don't explicitly marked libm rounding ops as legal on SSE4.1/AVX.  There don't seem to be patterns for these, so I don't know why they were marked legal in the first place.
Fixes failures caused by r146171.

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

12 years agoARM VQADD implied destination operand form aliases.
Jim Grosbach [Thu, 8 Dec 2011 20:49:43 +0000 (20:49 +0000)]
ARM VQADD implied destination operand form aliases.

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

12 years agoARM a few more VMUL implied destination operand form aliases.
Jim Grosbach [Thu, 8 Dec 2011 20:42:35 +0000 (20:42 +0000)]
ARM a few more VMUL implied destination operand form aliases.

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

12 years agoImplement 64-bit support for thread local storage handling.
Akira Hatanaka [Thu, 8 Dec 2011 20:34:32 +0000 (20:34 +0000)]
Implement 64-bit support for thread local storage handling.

- Modify lowering of global TLS address nodes.
- Modify isel of ThreadPointer.
- Wrap target global TLS address nodes that are operands of loads with WrapperPIC.
- Remove Mips-specific DAG nodes TlsGd, TprelHi and TprelLo, which can be
  substituted with other existing nodes.

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

12 years agoTeach SelectionDAG to match more calls to libm functions onto existing SDNodes. ...
Owen Anderson [Thu, 8 Dec 2011 19:32:14 +0000 (19:32 +0000)]
Teach SelectionDAG to match more calls to libm functions onto existing SDNodes.  Mark these nodes as illegal by default, unless the target declares otherwise.

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

12 years agoARM assembler support for register name aliases.
Jim Grosbach [Thu, 8 Dec 2011 19:27:38 +0000 (19:27 +0000)]
ARM assembler support for register name aliases.

rdar://10550084

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

12 years agoMake MachineInstr instruction property queries more flexible. This change all
Evan Cheng [Thu, 8 Dec 2011 19:23:10 +0000 (19:23 +0000)]
Make MachineInstr instruction property queries more flexible. This change all
clients to decide whether to look inside bundled instructions and whether
the query should return true if any / all bundled instructions have the
queried property.

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

12 years agoAdd test for r146163.
Evan Cheng [Thu, 8 Dec 2011 19:21:39 +0000 (19:21 +0000)]
Add test for r146163.

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

12 years agoMany of the SSE patterns should not be selected when AVX is available. This led to...
Evan Cheng [Thu, 8 Dec 2011 19:00:42 +0000 (19:00 +0000)]
Many of the SSE patterns should not be selected when AVX is available. This led to the following code in X86Subtarget.cpp

  if (HasAVX)
    X86SSELevel = NoMMXSSE;

This is so patterns that are predicated on hasSSE3, etc. would not be selected when avx is available. Instead, the AVX variant is selected.
However, this breaks instructions which do not have AVX variants.

The right way to fix this is for the SSE but not-AVX patterns to predicate on something like hasSSE3() && !hasAVX().
Then we can take out the hack in X86Subtarget.cpp. Patterns which do not have AVX variants do not need to change.

However, we need to audit all the patterns before we make the change. This patch is workaround that fixes one specific case,
the prefetch instructions. rdar://10538297

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

12 years agoRevert r146143, "Fix bug 9905: Failure in code selection for llvm intrinsics
Daniel Dunbar [Thu, 8 Dec 2011 17:32:18 +0000 (17:32 +0000)]
Revert r146143, "Fix bug 9905: Failure in code selection for llvm intrinsics
sqrt/exp (fix for FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP,
FEXP2).", it is failing tests.

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

12 years agotest/CodeGen/X86/vec_compare-2.ll: Add explicit -mtriple=i686-linux.
NAKAMURA Takumi [Thu, 8 Dec 2011 15:24:09 +0000 (15:24 +0000)]
test/CodeGen/X86/vec_compare-2.ll: Add explicit -mtriple=i686-linux.

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

12 years agoSrc2 and src3 were accidentally swapped for the FMA4 rr patterns. Undo this and fix...
Jan Sjödin [Thu, 8 Dec 2011 14:43:19 +0000 (14:43 +0000)]
Src2 and src3 were accidentally swapped for the FMA4 rr patterns. Undo this and fix the encoding.

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

12 years agoFix a bug in the integer-promotion of bitcast operations on vector types.
Nadav Rotem [Thu, 8 Dec 2011 13:10:01 +0000 (13:10 +0000)]
Fix a bug in the integer-promotion of bitcast operations on vector types.
We must not issue a bitcast operation for integer-promotion of vector types, because the
location of the values in the vector may be different.

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

12 years agoFix bug 9905: Failure in code selection for llvm intrinsics sqrt/exp (fix for FSQRT...
Stepan Dyatkovskiy [Thu, 8 Dec 2011 07:55:03 +0000 (07:55 +0000)]
Fix bug 9905: Failure in code selection for llvm intrinsics sqrt/exp (fix for FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP, FEXP2).

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

12 years agoMTCTR needs to be glued to BCTR so that CTR is not marked dead in MTCTR (another...
Hal Finkel [Thu, 8 Dec 2011 04:36:44 +0000 (04:36 +0000)]
MTCTR needs to be glued to BCTR so that CTR is not marked dead in MTCTR (another find by -verify-machineinstrs)

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

12 years agoReverting r145899 as it breaks clang self-hosting
Pete Cooper [Thu, 8 Dec 2011 03:24:10 +0000 (03:24 +0000)]
Reverting r145899 as it breaks clang self-hosting

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

12 years agoARM NEON two-operand aliases for VSHL(immediate).
Jim Grosbach [Thu, 8 Dec 2011 01:30:04 +0000 (01:30 +0000)]
ARM NEON two-operand aliases for VSHL(immediate).

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

12 years agoDrop the HasInlineAsm flag.
Jakob Stoklund Olesen [Thu, 8 Dec 2011 01:22:39 +0000 (01:22 +0000)]
Drop the HasInlineAsm flag.

It is not used any more. We are tracking inline assembly misalignments
directly through the BBInfo.Unalign and KnownBits fields.

A simple conservative size estimate is not good enough since it can
cause alignment padding to be underestimated.

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

12 years agoARM NEON two-operand aliases for VSHL(register).
Jim Grosbach [Thu, 8 Dec 2011 01:12:35 +0000 (01:12 +0000)]
ARM NEON two-operand aliases for VSHL(register).

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

12 years agoSimplify offset verification.
Jakob Stoklund Olesen [Thu, 8 Dec 2011 01:10:05 +0000 (01:10 +0000)]
Simplify offset verification.

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

12 years agoFix copy/past-o.
Jim Grosbach [Thu, 8 Dec 2011 01:02:26 +0000 (01:02 +0000)]
Fix copy/past-o.

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

12 years agoARM NEON two-operand aliases for VMUL.
Jim Grosbach [Thu, 8 Dec 2011 00:59:47 +0000 (00:59 +0000)]
ARM NEON two-operand aliases for VMUL.

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

12 years agoDon't include alignment padding in BBInfo.Size.
Jakob Stoklund Olesen [Thu, 8 Dec 2011 00:55:02 +0000 (00:55 +0000)]
Don't include alignment padding in BBInfo.Size.

Compute alignment padding before and after basic blocks dynamically.

Heed basic block alignment.

This simplifies bookkeeping because we don't have to constantly add and
remove padding from BBInfo.Size.  It also makes it possible to track the
extra known alignment bits we get after a tBR_JTr terminator and when
entering an aligned basic block.

This makes the ARMConstantIslandPass aware of aligned basic blocks.

It is tricky to model block alignment correctly when dealing with inline
assembly and tBR_JTr instructions that have variable size.  If inline
assembly turns out to be smaller than expected, that may cause following
alignment padding to be larger than expected.  This could cause constant
pool entries to move out of range.

To avoid that problem, we use the worst case alignment padding following
inline assembly. This may cause slightly suboptimal constant island
placement in aligned basic blocks following inline assembly.  Normal
functions should be unaffected.

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

12 years agoARM VFP support 'fmrs/fmsr' aliases for 'vldr'
Jim Grosbach [Thu, 8 Dec 2011 00:52:55 +0000 (00:52 +0000)]
ARM VFP support 'fmrs/fmsr' aliases for 'vldr'

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

12 years agoARM VFP support 'flds/fldd' aliases for 'vldr'
Jim Grosbach [Thu, 8 Dec 2011 00:49:29 +0000 (00:49 +0000)]
ARM VFP support 'flds/fldd' aliases for 'vldr'

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

12 years agoARM optional destination operand variants for VEXT instructions.
Jim Grosbach [Thu, 8 Dec 2011 00:43:47 +0000 (00:43 +0000)]
ARM optional destination operand variants for VEXT instructions.

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

12 years agoTidy up.
Jim Grosbach [Thu, 8 Dec 2011 00:41:54 +0000 (00:41 +0000)]
Tidy up.

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

12 years agoFix 80-column.
Chad Rosier [Thu, 8 Dec 2011 00:38:45 +0000 (00:38 +0000)]
Fix 80-column.
Simplify code.

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

12 years agoARM assembler aliases for "add Rd, #-imm" to "sub Rd, #imm".
Jim Grosbach [Thu, 8 Dec 2011 00:31:07 +0000 (00:31 +0000)]
ARM assembler aliases for "add Rd, #-imm" to "sub Rd, #imm".

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

12 years agoAdd Tsan annotations to the pass system.
Nick Lewycky [Thu, 8 Dec 2011 00:15:41 +0000 (00:15 +0000)]
Add Tsan annotations to the pass system.

Perhaps once(&func) should be hoisted into lib/Support.

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

12 years agoFix comments.
Chad Rosier [Thu, 8 Dec 2011 00:11:31 +0000 (00:11 +0000)]
Fix comments.

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

12 years agoEngineBuilder: support for custom TargetOptions. Fixes the
Peter Collingbourne [Wed, 7 Dec 2011 23:58:57 +0000 (23:58 +0000)]
EngineBuilder: support for custom TargetOptions.  Fixes the
ExceptionDemo example.

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

12 years agoFix comments.
Chad Rosier [Wed, 7 Dec 2011 23:57:55 +0000 (23:57 +0000)]
Fix comments.

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

12 years agoARM assembly, allow 'asl' as a synonym for 'lsl' in shifted-register operands.
Jim Grosbach [Wed, 7 Dec 2011 23:40:58 +0000 (23:40 +0000)]
ARM assembly, allow 'asl' as a synonym for 'lsl' in shifted-register operands.

For 'gas' compatibility.

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

12 years agoModify class ReadHardware and add definition of 64-bit version of instruction
Akira Hatanaka [Wed, 7 Dec 2011 23:31:26 +0000 (23:31 +0000)]
Modify class ReadHardware and add definition of 64-bit version of instruction
RDHWR.

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

12 years agoAdd newline.
Akira Hatanaka [Wed, 7 Dec 2011 23:26:03 +0000 (23:26 +0000)]
Add newline.

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

12 years agoAdd 64-bit HWR29 register.
Akira Hatanaka [Wed, 7 Dec 2011 23:23:52 +0000 (23:23 +0000)]
Add 64-bit HWR29 register.

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

12 years ago32 to 64-bit anyext pattern.
Akira Hatanaka [Wed, 7 Dec 2011 23:21:19 +0000 (23:21 +0000)]
32 to 64-bit anyext pattern.

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

12 years ago32 to 64-bit zext pattern.
Akira Hatanaka [Wed, 7 Dec 2011 23:14:41 +0000 (23:14 +0000)]
32 to 64-bit zext pattern.

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

12 years agoARM two-operand aliases for VAND/VEOR/VORR instructions.
Jim Grosbach [Wed, 7 Dec 2011 23:08:12 +0000 (23:08 +0000)]
ARM two-operand aliases for VAND/VEOR/VORR instructions.

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

12 years agoARM two-operand aliases for VADDW instructions.
Jim Grosbach [Wed, 7 Dec 2011 23:01:10 +0000 (23:01 +0000)]
ARM two-operand aliases for VADDW instructions.

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

12 years agoARM two-operand aliases for VADD instructions.
Jim Grosbach [Wed, 7 Dec 2011 22:52:54 +0000 (22:52 +0000)]
ARM two-operand aliases for VADD instructions.

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