oota-llvm.git
13 years agoARM vector compare to zero instruction assembly parsing support.
Jim Grosbach [Thu, 11 Aug 2011 23:51:13 +0000 (23:51 +0000)]
ARM vector compare to zero instruction assembly parsing support.

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

13 years agoFix mismatched tag.
Eli Friedman [Thu, 11 Aug 2011 23:48:52 +0000 (23:48 +0000)]
Fix mismatched tag.

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

13 years agoRevision to Atomics guide, per Chris's comments.
Eli Friedman [Thu, 11 Aug 2011 23:44:25 +0000 (23:44 +0000)]
Revision to Atomics guide, per Chris's comments.

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

13 years agoA slew of unit tests for the recent LoopInfo::updateUnloop feature
Andrew Trick [Thu, 11 Aug 2011 23:38:09 +0000 (23:38 +0000)]
A slew of unit tests for the recent LoopInfo::updateUnloop feature
checked in at r137276 and r137341.

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

13 years agoAllow loop unrolling to get known trip counts from ScalarEvolution.
Andrew Trick [Thu, 11 Aug 2011 23:36:16 +0000 (23:36 +0000)]
Allow loop unrolling to get known trip counts from ScalarEvolution.

SCEV unrolling can unroll loops with arbitrary induction variables. It
is a prerequisite for -disable-iv-rewrite performance. It is also
easily handles loops of arbitrary structure including multiple exits
and is generally more robust.

This is under a temporary option to avoid affecting default
behavior for the next couple of weeks. It is needed so that I can
checkin unit tests for updateUnloop.

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

13 years agoRemove the InterferenceResult class.
Jakob Stoklund Olesen [Thu, 11 Aug 2011 22:46:06 +0000 (22:46 +0000)]
Remove the InterferenceResult class.

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

13 years agoEliminate the last use of InterferenceResult.
Jakob Stoklund Olesen [Thu, 11 Aug 2011 22:46:04 +0000 (22:46 +0000)]
Eliminate the last use of InterferenceResult.

The Query class now holds two iterators instead of an InterferenceResult
instance. The iterators are used as bookmarks for repeated
collectInterferingVRegs calls.

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

13 years agoEnclose directive .cprestore with .set macro and nomacro to silence assembler
Akira Hatanaka [Thu, 11 Aug 2011 22:42:31 +0000 (22:42 +0000)]
Enclose directive .cprestore with .set macro and nomacro to silence assembler
warning.

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

13 years agoFix tests per now-correct encoding as of r137371.
Jim Grosbach [Thu, 11 Aug 2011 22:31:48 +0000 (22:31 +0000)]
Fix tests per now-correct encoding as of r137371.

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

13 years agoRemove no-longer-true comments. These are for the assembler, also.
Jim Grosbach [Thu, 11 Aug 2011 22:30:30 +0000 (22:30 +0000)]
Remove no-longer-true comments. These are for the assembler, also.

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

13 years agoARM STRT assembly parsing and encoding.
Jim Grosbach [Thu, 11 Aug 2011 22:18:00 +0000 (22:18 +0000)]
ARM STRT assembly parsing and encoding.

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

13 years agoMake the USAT16 operand decoder auto-generate-able.
Owen Anderson [Thu, 11 Aug 2011 22:10:11 +0000 (22:10 +0000)]
Make the USAT16 operand decoder auto-generate-able.

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

13 years agoAdd another accidentally omitted predicate operand.
Owen Anderson [Thu, 11 Aug 2011 22:08:38 +0000 (22:08 +0000)]
Add another accidentally omitted predicate operand.

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

13 years agoAdd missing predicate operand on SMLA and friends.
Owen Anderson [Thu, 11 Aug 2011 22:05:38 +0000 (22:05 +0000)]
Add missing predicate operand on SMLA and friends.

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

13 years agoARM load shifted register pre-index fix shift value asm parser encoding.
Jim Grosbach [Thu, 11 Aug 2011 22:05:09 +0000 (22:05 +0000)]
ARM load shifted register pre-index fix shift value asm parser encoding.

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

13 years agoDataTypes.h.cmake: Tweak INT32_MIN for MSVC. MSC treats -2147483648 as -(2147483648U).
NAKAMURA Takumi [Thu, 11 Aug 2011 21:59:55 +0000 (21:59 +0000)]
DataTypes.h.cmake: Tweak INT32_MIN for MSVC. MSC treats -2147483648 as -(2147483648U).

It caused an unexpected behavior since r137254.

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

13 years agoHandle new register classes in Thumb2 mode. Should fix the ARM buildbots.
Owen Anderson [Thu, 11 Aug 2011 21:52:38 +0000 (21:52 +0000)]
Handle new register classes in Thumb2 mode.  Should fix the ARM buildbots.

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

13 years agoMaking SEL decodings auto-generate-able.
Owen Anderson [Thu, 11 Aug 2011 21:50:56 +0000 (21:50 +0000)]
Making SEL decodings auto-generate-able.

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

13 years agoAdd a dag combine to xform 256-bit shuffles into simple vector
Bruno Cardoso Lopes [Thu, 11 Aug 2011 21:50:44 +0000 (21:50 +0000)]
Add a dag combine to xform 256-bit shuffles into simple vector
inserts and extracts. This simple combine makes us generate only 1
instruction instead of 11 in the v8 case.

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

13 years agoFix the test added by Nadav in r137308. Make it more strict:
Bruno Cardoso Lopes [Thu, 11 Aug 2011 21:50:35 +0000 (21:50 +0000)]
Fix the test added by Nadav in r137308. Make it more strict:
1) check for the "v" version of movaps
2) add a couple of CHECK-NOT to guarantee the behavior
3) move to a more appropriate test file

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

13 years agoTidy up comment.
Jim Grosbach [Thu, 11 Aug 2011 21:41:59 +0000 (21:41 +0000)]
Tidy up comment.

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

13 years agoARM STRHT assembly parsing and encoding.
Jim Grosbach [Thu, 11 Aug 2011 21:39:41 +0000 (21:39 +0000)]
ARM STRHT assembly parsing and encoding.

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

13 years agoFix decoding support for STREXD and LDREXD.
Owen Anderson [Thu, 11 Aug 2011 21:34:58 +0000 (21:34 +0000)]
Fix decoding support for STREXD and LDREXD.

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

13 years agoRemove more dead code.
Jakob Stoklund Olesen [Thu, 11 Aug 2011 21:18:34 +0000 (21:18 +0000)]
Remove more dead code.

collectInterferingVRegs will be the primary function for interference
checks.

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

13 years agoARM STRH assembly parsing and encoding.
Jim Grosbach [Thu, 11 Aug 2011 21:17:22 +0000 (21:17 +0000)]
ARM STRH assembly parsing and encoding.

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

13 years agoFix typos in comments, and delete an unused function.
Dan Gohman [Thu, 11 Aug 2011 21:06:32 +0000 (21:06 +0000)]
Fix typos in comments, and delete an unused function.

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

13 years agoAdd isIndirectBranch flag.
Akira Hatanaka [Thu, 11 Aug 2011 21:05:37 +0000 (21:05 +0000)]
Add isIndirectBranch flag.

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

13 years agoPrivatize an unused part of the LiveIntervalUnion::Query interface.
Jakob Stoklund Olesen [Thu, 11 Aug 2011 21:00:42 +0000 (21:00 +0000)]
Privatize an unused part of the LiveIntervalUnion::Query interface.

No clients are iterating over interference overlaps.

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

13 years agoFix decoding for indexed STRB and LDRB. Fixes <rdar://problem/9926161>.
Owen Anderson [Thu, 11 Aug 2011 20:47:56 +0000 (20:47 +0000)]
Fix decoding for indexed STRB and LDRB.  Fixes <rdar://problem/9926161>.

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

13 years agoRemove some dead code.
Jakob Stoklund Olesen [Thu, 11 Aug 2011 20:41:41 +0000 (20:41 +0000)]
Remove some dead code.

The InterferenceResult iterator turned out to be less important than we
thought it would be.  LiveIntervalUnion clients want higher level
information, like the list of interfering virtual registers.

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

13 years agoTidy up. Remove unused template parameter.
Jim Grosbach [Thu, 11 Aug 2011 20:41:13 +0000 (20:41 +0000)]
Tidy up. Remove unused template parameter.

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

13 years agoImprove operand validation for Thumb2 addressing modes.
Owen Anderson [Thu, 11 Aug 2011 20:40:40 +0000 (20:40 +0000)]
Improve operand validation for Thumb2 addressing modes.

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

13 years agoARM STRD assembly parsing and encoding.
Jim Grosbach [Thu, 11 Aug 2011 20:28:23 +0000 (20:28 +0000)]
ARM STRD assembly parsing and encoding.

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

13 years agoFix for LoopInfo::updateUnloop. Remove subloop blocks from former
Andrew Trick [Thu, 11 Aug 2011 20:27:32 +0000 (20:27 +0000)]
Fix for LoopInfo::updateUnloop. Remove subloop blocks from former
ancestor loops.

I have a unit test that depends on scev-unroll, which unfortunately
isn't checked in. But I will check it in when I can.

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

13 years agoContinue to tighten decoding by performing more operand validation.
Owen Anderson [Thu, 11 Aug 2011 20:21:46 +0000 (20:21 +0000)]
Continue to tighten decoding by performing more operand validation.

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

13 years agoTidy up.
Jim Grosbach [Thu, 11 Aug 2011 20:13:35 +0000 (20:13 +0000)]
Tidy up.

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

13 years agoARM STRBT assembly parsing and encoding.
Jim Grosbach [Thu, 11 Aug 2011 20:04:56 +0000 (20:04 +0000)]
ARM STRBT assembly parsing and encoding.

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

13 years agoAdd FIXME.
Jim Grosbach [Thu, 11 Aug 2011 19:43:42 +0000 (19:43 +0000)]
Add FIXME.

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

13 years agoARM STRB assembly parsing and encoding tests.
Jim Grosbach [Thu, 11 Aug 2011 19:42:58 +0000 (19:42 +0000)]
ARM STRB assembly parsing and encoding tests.

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

13 years agoFix a copy/paste error so that LDRB(register) actually gets tested.
Jim Grosbach [Thu, 11 Aug 2011 19:34:23 +0000 (19:34 +0000)]
Fix a copy/paste error so that LDRB(register) actually gets tested.

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

13 years agoARM STR(register) assembly parsing and encoding tests.
Jim Grosbach [Thu, 11 Aug 2011 19:26:17 +0000 (19:26 +0000)]
ARM STR(register) assembly parsing and encoding tests.

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

13 years agoARM STR(immediate) assembly parsing and encoding.
Jim Grosbach [Thu, 11 Aug 2011 19:22:40 +0000 (19:22 +0000)]
ARM STR(immediate) assembly parsing and encoding.

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

13 years agoTighten decoding of addrmode2 instructions to reject more UNPREDICTABLE cases.
Owen Anderson [Thu, 11 Aug 2011 19:00:18 +0000 (19:00 +0000)]
Tighten decoding of addrmode2 instructions to reject more UNPREDICTABLE cases.

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

13 years agoFix PR10492 by teaching MOVHLPS and MOVLPS mask matching to be more strict.
Bruno Cardoso Lopes [Thu, 11 Aug 2011 18:59:13 +0000 (18:59 +0000)]
Fix PR10492 by teaching MOVHLPS and MOVLPS mask matching to be more strict.

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

13 years agoTighten operand decoding of addrmode2 instruction. The offset register cannot be PC.
Owen Anderson [Thu, 11 Aug 2011 18:55:42 +0000 (18:55 +0000)]
Tighten operand decoding of addrmode2 instruction.  The offset register cannot be PC.

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

13 years agoCorrect immediate range for shifter operands. Patch by James Molloy, with additional...
Owen Anderson [Thu, 11 Aug 2011 18:41:59 +0000 (18:41 +0000)]
Correct immediate range for shifter operands.  Patch by James Molloy, with additional encoding fixes added by me.

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

13 years agoPlug a memory leak.
Benjamin Kramer [Thu, 11 Aug 2011 18:39:28 +0000 (18:39 +0000)]
Plug a memory leak.

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

13 years agoImprove error checking in the new ARM disassembler. Patch by James Molloy.
Owen Anderson [Thu, 11 Aug 2011 18:24:51 +0000 (18:24 +0000)]
Improve error checking in the new ARM disassembler.  Patch by James Molloy.

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

13 years agoARM push of a single register encodes as pre-indexed STR.
Jim Grosbach [Thu, 11 Aug 2011 18:07:11 +0000 (18:07 +0000)]
ARM push of a single register encodes as pre-indexed STR.

Per the ARM ARM, a 'push' of a single register encodes as an STR,
not an STM.

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

13 years agoCleanup. Another thorough review by Nick!
Andrew Trick [Thu, 11 Aug 2011 17:54:58 +0000 (17:54 +0000)]
Cleanup. Another thorough review by Nick!

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

13 years agoARM pop of a single register encodes as post-indexed LDR.
Jim Grosbach [Thu, 11 Aug 2011 17:35:48 +0000 (17:35 +0000)]
ARM pop of a single register encodes as post-indexed LDR.

Per the ARM ARM, a 'pop' of a single register encodes as an LDR,
not an LDM.

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

13 years agoPTX: Add basic documentation to CodeGenerator.html
Justin Holewinski [Thu, 11 Aug 2011 17:34:16 +0000 (17:34 +0000)]
PTX: Add basic documentation to CodeGenerator.html

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

13 years agoAdd a comment, per Bruno's CR.
Nadav Rotem [Thu, 11 Aug 2011 17:05:47 +0000 (17:05 +0000)]
Add a comment, per Bruno's CR.

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

13 years ago[AVX] When joining two XMM registers into a YMM register, make sure that the
Nadav Rotem [Thu, 11 Aug 2011 16:49:36 +0000 (16:49 +0000)]
[AVX] When joining  two XMM registers into a YMM register, make sure that the
lower XMM register gets in first. This will allow the SUBREG pattern to
elliminate the first vector insertion.

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

13 years ago[AVX] If the data which is going to be saved is already in two XMM registers
Nadav Rotem [Thu, 11 Aug 2011 16:41:21 +0000 (16:41 +0000)]
[AVX] If the data which is going to be saved is already in two XMM registers
(for example, after integer operation), do not pack the registers into a YMM
before saving. Its better to save as two XMM registers.

Before:
                vinsertf128         $1, %xmm3, %ymm0, %ymm3
                vinsertf128         $0, %xmm1, %ymm3, %ymm1
                vmovaps              %ymm1, 416(%rsp)

After:
                vmovaps              %xmm3, 416+16(%rsp)
                vmovaps              %xmm1, 416(%rsp)

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

13 years agoadd missing colon, thanks peter.
Chris Lattner [Thu, 11 Aug 2011 16:15:10 +0000 (16:15 +0000)]
add missing colon, thanks peter.

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

13 years agofix PR10605 / rdar://9930964 by adding a pretty scary missed check.
Chris Lattner [Thu, 11 Aug 2011 06:26:54 +0000 (06:26 +0000)]
fix PR10605 / rdar://9930964 by adding a pretty scary missed check.
It's somewhat surprising anything works without this.  Before we would
compile the testcase into:

test:                                   # @test
movl $4, 8(%rdi)
movl 8(%rdi), %eax
orl %esi, %eax
cmpl $32, %edx
movl %eax, -4(%rsp)          # 4-byte Spill
je .LBB0_2

now we produce:

test:                                   # @test
movl 8(%rdi), %eax
movl $4, 8(%rdi)
orl %esi, %eax
cmpl $32, %edx
movl %eax, -4(%rsp)          # 4-byte Spill
je .LBB0_2

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

13 years agoCleanup: Remove Int_ CVTSS2SI* forms
Bruno Cardoso Lopes [Thu, 11 Aug 2011 02:52:36 +0000 (02:52 +0000)]
Cleanup: Remove Int_ CVTSS2SI* forms

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

13 years agoSplats for v8i32/v8f32 can be handled by VPERMILPSY. This was causing
Bruno Cardoso Lopes [Thu, 11 Aug 2011 02:49:44 +0000 (02:49 +0000)]
Splats for v8i32/v8f32 can be handled by VPERMILPSY. This was causing
infinite recursive calls in legalize. Fix PR10562

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

13 years agoUse the splat index to generate the desired shuffle. Otherwise we
Bruno Cardoso Lopes [Thu, 11 Aug 2011 02:49:41 +0000 (02:49 +0000)]
Use the splat index to generate the desired shuffle. Otherwise we
could only get undefs and the vector shuffle becomes an undef,
generating wrong code.

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

13 years agoFix X86TargetLowering::LowerExternalSymbol so that it actually works in non-trivial...
Eli Friedman [Thu, 11 Aug 2011 01:48:05 +0000 (01:48 +0000)]
Fix X86TargetLowering::LowerExternalSymbol so that it actually works in non-trivial cases.  This hasn't been an issue before because the function isn't normally called (but apparently is used to generate a tail-call to sin() on ELF x86-32 with PIC and SSE2).

Fixes PR9693.

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

13 years agoTypo.
Chad Rosier [Thu, 11 Aug 2011 00:22:48 +0000 (00:22 +0000)]
Typo.

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

13 years agoStay within 80 columns.
Devang Patel [Wed, 10 Aug 2011 23:58:09 +0000 (23:58 +0000)]
Stay within 80 columns.

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

13 years agoARM LDRT assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 23:43:54 +0000 (23:43 +0000)]
ARM LDRT assembly parsing and encoding.

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

13 years agoTidy up. 80 columns.
Jim Grosbach [Wed, 10 Aug 2011 23:23:47 +0000 (23:23 +0000)]
Tidy up. 80 columns.

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

13 years agoReapplying r136844.
Andrew Trick [Wed, 10 Aug 2011 23:22:57 +0000 (23:22 +0000)]
Reapplying r136844.

An algorithm for incrementally updating LoopInfo within a
LoopPassManager. The incremental update should be extremely cheap in
most cases and can be used in places where it's not feasible to
regenerate the entire loop forest.

- "Unloop" is a node in the loop tree whose last backedge has been removed.
- Perform reverse dataflow on the block inside Unloop to propagate the
  nearest loop from the block's successors.
- For reducible CFG, each block in unloop is visited exactly
  once. This is because unloop no longer has a backedge and blocks
  within subloops don't change parents.
- Immediate subloops are summarized by the nearest loop reachable from
  their exits or exits within nested subloops.
- At completion the unloop blocks each have a new parent loop, and
  each immediate subloop has a new parent.

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

13 years agoARM tests for LDRSHT assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 23:18:30 +0000 (23:18 +0000)]
ARM tests for LDRSHT assembly parsing and encoding.

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

13 years agoARM tests for LDRSH assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 23:12:25 +0000 (23:12 +0000)]
ARM tests for LDRSH assembly parsing and encoding.

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

13 years agoARM tests for LDRSBT assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 23:08:56 +0000 (23:08 +0000)]
ARM tests for LDRSBT assembly parsing and encoding.

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

13 years agoARM tests for LDRSB assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 23:06:44 +0000 (23:06 +0000)]
ARM tests for LDRSB assembly parsing and encoding.

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

13 years agoAdd FIXME.
Jim Grosbach [Wed, 10 Aug 2011 22:56:43 +0000 (22:56 +0000)]
Add FIXME.

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

13 years agoCleanup. Remove an extraneous GraphTraits specialization.
Andrew Trick [Wed, 10 Aug 2011 22:55:39 +0000 (22:55 +0000)]
Cleanup. Remove an extraneous GraphTraits specialization.

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

13 years agoARM tests for LDRHT assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 22:55:38 +0000 (22:55 +0000)]
ARM tests for LDRHT assembly parsing and encoding.

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

13 years agotest/CodeGen/X86/opt-shuff-tstore.ll: Add explicit -mtriple=x86_64-linux.
NAKAMURA Takumi [Wed, 10 Aug 2011 22:52:48 +0000 (22:52 +0000)]
test/CodeGen/X86/opt-shuff-tstore.ll: Add explicit -mtriple=x86_64-linux.

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

13 years agoARM tests for LDRH(register) assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 22:45:42 +0000 (22:45 +0000)]
ARM tests for LDRH(register) assembly parsing and encoding.

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

13 years agoARM LDRH(immediate) assembly parsing and encoding support.
Jim Grosbach [Wed, 10 Aug 2011 22:42:16 +0000 (22:42 +0000)]
ARM LDRH(immediate) assembly parsing and encoding support.

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

13 years agoAdd FIXME
Jim Grosbach [Wed, 10 Aug 2011 22:20:38 +0000 (22:20 +0000)]
Add FIXME

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

13 years agoARM LDRD(register) assembly parsing and encoding.
Jim Grosbach [Wed, 10 Aug 2011 21:56:18 +0000 (21:56 +0000)]
ARM LDRD(register) assembly parsing and encoding.

Add support for literal encoding of #-0 along the way.

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

13 years agoDistinguish between two copies of one inlined variable. Take 2.
Devang Patel [Wed, 10 Aug 2011 21:50:54 +0000 (21:50 +0000)]
Distinguish between two copies of one inlined variable. Take 2.

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

13 years agoWhile extending definition range of a debug variable, consult lexical scopes also...
Devang Patel [Wed, 10 Aug 2011 21:25:34 +0000 (21:25 +0000)]
While extending definition range of a debug variable, consult lexical scopes also. There is no point extending debug variable out side its lexical block. This provides 6x compile time speedup in some cases.

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

13 years agoRevert unintentional parts of previous check-in.
Devang Patel [Wed, 10 Aug 2011 21:16:49 +0000 (21:16 +0000)]
Revert unintentional parts of previous check-in.

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

13 years agoStart using LexicalScopes utility. No intetional functionality change.
Devang Patel [Wed, 10 Aug 2011 20:55:27 +0000 (20:55 +0000)]
Start using LexicalScopes utility. No intetional functionality change.

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

13 years agoFix typo. Not quite sure how that slipped in there.
Jim Grosbach [Wed, 10 Aug 2011 20:49:18 +0000 (20:49 +0000)]
Fix typo. Not quite sure how that slipped in there.

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

13 years agoARM LDRD(immediate) assembly parsing and encoding support.
Jim Grosbach [Wed, 10 Aug 2011 20:29:19 +0000 (20:29 +0000)]
ARM LDRD(immediate) assembly parsing and encoding support.

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

13 years agoChanges per Jeffrey's comments.
Eli Friedman [Wed, 10 Aug 2011 20:17:43 +0000 (20:17 +0000)]
Changes per Jeffrey's comments.

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

13 years agoFix the test. Add cpu target.
Nadav Rotem [Wed, 10 Aug 2011 19:49:19 +0000 (19:49 +0000)]
Fix the test. Add cpu target.

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

13 years agoWhen performing a truncating store, it is sometimes possible to rearrange the
Nadav Rotem [Wed, 10 Aug 2011 19:30:14 +0000 (19:30 +0000)]
When performing a truncating store, it is sometimes possible to rearrange the
data in-register prior to saving to memory.  When we reorder the data in memory
we prevent the need to save multiple scalars to memory, making a single regular
store.

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

13 years agoProvide utility to extract and use lexical scoping information from machine instructions.
Devang Patel [Wed, 10 Aug 2011 19:04:06 +0000 (19:04 +0000)]
Provide utility to extract and use lexical scoping information from machine instructions.

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

13 years agoAdd initial support for decoding NEON instructions in Thumb2 mode.
Owen Anderson [Wed, 10 Aug 2011 19:01:10 +0000 (19:01 +0000)]
Add initial support for decoding NEON instructions in Thumb2 mode.

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

13 years agoMake Record Name an Init
David Greene [Wed, 10 Aug 2011 18:27:46 +0000 (18:27 +0000)]
Make Record Name an Init

Use an Init (ultimately a StringInit) to represent the Record name.
This allows the name to be composed by standard TableGen operators.
This will enable us to get rid of the ugly #NAME# hack processing and
naturally replace it with operators.  It also increases flexibility
and power of the TableGen language by allowing record identifiers to
be computed dynamically.

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

13 years agoAdd getAsUnquotedString
David Greene [Wed, 10 Aug 2011 18:27:45 +0000 (18:27 +0000)]
Add getAsUnquotedString

Add a method to return an Init as an unquoted string.  This primarily
affects StringInit where we return the value without surrounding it
with quotes.

This is in preparation for removing the ugly #NAME# hack and replacing
it with standard TabelGen operators.

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

13 years agoComments. Thanks for the spell check Nick!
Andrew Trick [Wed, 10 Aug 2011 18:07:05 +0000 (18:07 +0000)]
Comments. Thanks for the spell check Nick!

Also, my apologies for spoiling the autocomplete on SimplifyInstructions.cpp. I couldn't think of a better filename.

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

13 years agoThe following X86 pattern is incorrect:
Bruno Cardoso Lopes [Wed, 10 Aug 2011 17:45:17 +0000 (17:45 +0000)]
The following X86 pattern is incorrect:
def : Pat<(X86Movss VR128:$src1,
                   (bc_v4i32 (v2i64 (load addr:$src2)))),
          (MOVLPSrm VR128:$src1, addr:$src2)>;
This matches a MOVSS dag with a MOVLPS instruction. However, MOVSS will replace only the low 32 bits of the register, while the MOVLPS instruction will replace the low 64 bits. A testcase is added and illustrates the bug and also modified the one that was already present. Patch by Tanya Lattner.

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

13 years agoWhitespace.
Eli Friedman [Wed, 10 Aug 2011 17:39:11 +0000 (17:39 +0000)]
Whitespace.

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

13 years agoTabs --> spaces.
Owen Anderson [Wed, 10 Aug 2011 17:38:05 +0000 (17:38 +0000)]
Tabs --> spaces.

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

13 years agoCleanups based on Nick Lewycky's feedback.
Owen Anderson [Wed, 10 Aug 2011 17:36:48 +0000 (17:36 +0000)]
Cleanups based on Nick Lewycky's feedback.

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

13 years agoRewrite some ARM InstrInfo functions to be most accepting of arbitrary register subcl...
Owen Anderson [Wed, 10 Aug 2011 17:21:20 +0000 (17:21 +0000)]
Rewrite some ARM InstrInfo functions to be most accepting of arbitrary register subclasses.  Hopefully this fixes some buildbots.

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

13 years agoAdd support for the R and Q constraints.
Rafael Espindola [Wed, 10 Aug 2011 16:26:42 +0000 (16:26 +0000)]
Add support for the R and Q constraints.

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

13 years agoClarify a comment.
Bob Wilson [Wed, 10 Aug 2011 05:02:22 +0000 (05:02 +0000)]
Clarify a comment.

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

13 years agoInvoke SimplifyIndVar when we partially unroll a loop. Fixes PR10534.
Andrew Trick [Wed, 10 Aug 2011 04:29:49 +0000 (04:29 +0000)]
Invoke SimplifyIndVar when we partially unroll a loop. Fixes PR10534.

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