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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Andrew Trick [Wed, 10 Aug 2011 04:22:26 +0000 (04:22 +0000)]
Cleanup. Make ScalarEvolution an explicit argument of the
SimplifyIndVar utility since it is required.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137202
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 10 Aug 2011 04:01:31 +0000 (04:01 +0000)]
SimplifyIndVar: make foldIVUser iterative to fold a chain of operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137199
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 10 Aug 2011 03:51:58 +0000 (03:51 +0000)]
Update CMake build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137198
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 10 Aug 2011 03:46:27 +0000 (03:46 +0000)]
Added a SimplifyIndVar utility to simplify induction variable users
based on ScalarEvolution without changing the induction variable phis.
This utility is the main tool of IndVarSimplifyPass, but the pass also
restructures induction variables in strange ways that are sensitive to
pass ordering. This provides a way for other loop passes to simplify
new uses of induction variables created during transformation. The
utility may be used by any pass that preserves ScalarEvolution. Soon
LoopUnroll will use it.
The net effect in this checkin is to cleanup the IndVarSimplify pass
by factoring out the SimplifyIndVar algorithm into a standalone utility.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137197
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 10 Aug 2011 01:59:05 +0000 (01:59 +0000)]
Cleanup. Added LoopBlocksDFS::perform for simple clients.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137195
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Wed, 10 Aug 2011 01:54:17 +0000 (01:54 +0000)]
Fix a bug in vpermilps mask checking. Fix PR10560
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137194
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 10 Aug 2011 01:10:17 +0000 (01:10 +0000)]
Remove the build_unwind function from the OCaml bindings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137193
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 10 Aug 2011 01:10:08 +0000 (01:10 +0000)]
Preserve the name for this variant of IRBuilder::CreateCall
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137192
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 10 Aug 2011 00:49:12 +0000 (00:49 +0000)]
Cleanup. Avoid relying on specialization of std::distance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137191
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 10 Aug 2011 00:28:10 +0000 (00:28 +0000)]
Fix the LoopUnroller to handle nontrivial loops and partial unrolling.
These are not individual bug fixes. I had to rewrite a good chunk of
the unroller to make it sane. I think it was getting lucky on trivial
completely unrolled loops with no early exits. I included some fairly
simple unit tests for partial unrolling. I didn't do much stress
testing, so it may not be perfect, but should be usable now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137190
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 10 Aug 2011 00:03:03 +0000 (00:03 +0000)]
Push GPRnopc through a large number of instruction definitions to tighten operand decoding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137189
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 10 Aug 2011 00:02:39 +0000 (00:02 +0000)]
Update comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137188
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 9 Aug 2011 23:59:05 +0000 (23:59 +0000)]
clang is the new black.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137187
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 9 Aug 2011 23:49:21 +0000 (23:49 +0000)]
Trim an unneeded header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137184
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 9 Aug 2011 23:41:44 +0000 (23:41 +0000)]
Promote VMOVS to VMOVD when possible.
On Cortex-A8, we use the NEON v2f32 instructions for f32 arithmetic. For
better latency, we also send D-register copies down the NEON pipeline by
translating them to vorr instructions.
This patch promotes even S-register copies to D-register copies when
possible so they can also go down the NEON pipeline. Example:
vldr.32 s0, LCPI0_0
loop:
vorr d1, d0, d0
loop2:
...
vadd.f32 d1, d1, d16
The vorr instruction looked like this after regalloc:
%S2<def> = COPY %S0, %D1<imp-def>
Copies involving odd S-registers, and copies that don't define the full
D-register are left alone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137182
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 9 Aug 2011 23:33:27 +0000 (23:33 +0000)]
Tighten operand checking of register-shifted-register operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137180
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Tue, 9 Aug 2011 23:27:13 +0000 (23:27 +0000)]
Add 256-bit support for v8i32, v4i64 and v4f64 ISD::SELECT. Fix PR10556
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137179
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Tue, 9 Aug 2011 23:26:12 +0000 (23:26 +0000)]
Fix minor typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137177
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 9 Aug 2011 23:25:42 +0000 (23:25 +0000)]
Tighten operand checking on memory barrier instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137176
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 9 Aug 2011 23:13:05 +0000 (23:13 +0000)]
VMCore/BasicBlock.cpp: Don't assume BasicBlock::iterator might end with a non-PHInode Instruction in successors.
Frontends(eg. clang) might pass incomplete form of IR, to step off the way beyond iterator end. In the case I had met, it took infinite loop due to meeting bogus PHInode.
Thanks to Jay Foad and John McCall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137175
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 9 Aug 2011 23:12:56 +0000 (23:12 +0000)]
Fix whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137174
91177308-0d34-0410-b5e6-
96231b3b80d8