Kevin Enderby
4964b6a4e2
Fix the encoding of the armv7m (MClass) for MSR registers other than aspr,
...
iaspr, espr and xpsr which also needed to have 0b10 in their mask encoding bits.
llvm-svn: 158560
2012-06-15 22:14:44 +00:00
Manman Ren
7ffcd63dea
ARM: optimization for sub+abs.
...
This patch will optimize abs(x-y)
FROM
sub, movs, rsbmi
TO
subs, rsbmi
For abs, we will use cmp instead of movs. This is necessary because we already
have an existing peephole pass which optimizes away cmp following sub.
rdar: 11633193
llvm-svn: 158551
2012-06-15 21:32:12 +00:00
Kay Tiong Khoo
a419828b83
*fixed to separate mnemonic from operands with tab
...
llvm-svn: 158543
2012-06-15 21:04:21 +00:00
Andrew Trick
9d4c6e3d2f
LSR: fix expansion of scaled reg in non-address type formulae.
...
For non-address users, Base and Scaled registers are not specially
associated to fit an address mode, so SCEVExpander should apply normal
expansion rules. Otherwise we may sink computation into inner loops
that have already been optimized.
llvm-svn: 158537
2012-06-15 20:07:29 +00:00
Andrew Trick
6d4d71a482
LSR fix: "Special" users are just like "Basic" users but allow -1 scale.
...
llvm-svn: 158536
2012-06-15 20:07:26 +00:00
Bill Wendling
2487af64b0
Remove assignments which aren't used afterwards.
...
llvm-svn: 158535
2012-06-15 19:30:42 +00:00
Bill Wendling
3305b9c843
Remove assignments which aren't used afterwards.
...
llvm-svn: 158534
2012-06-15 19:28:20 +00:00
Pete Cooper
d64dbc9162
Allow SROA to split up an array of vectors into multiple vectors, even when the vectors are dynamically indexed
...
llvm-svn: 158529
2012-06-15 18:07:29 +00:00
Rafael Espindola
9a1bc0fa81
Some optimizations done by globalopt are safe only for internal linkage, not
...
linkonce linkage. For example, it is not valid to add unnamed_addr.
This also fixes a crash in g++.dg/opt/static5.C.
llvm-svn: 158528
2012-06-15 18:00:24 +00:00
Jakob Stoklund Olesen
6fd22231ba
Preserve <undef> flags in ARMExpandPseudo.
...
This probably mostly shows up in bugpoint-generated code.
llvm-svn: 158527
2012-06-15 17:46:54 +00:00
Jakob Stoklund Olesen
919b38424e
Use regunit liveness in RegisterCoalescer when it is available.
...
We only do very limited physreg coalescing now, but we still merge
virtual registers into reserved registers.
llvm-svn: 158526
2012-06-15 17:36:48 +00:00
Rafael Espindola
9efec1f548
Factor macro argument parsing into helper methods and add support for .irp.
...
Patch extracted from a larger one by the PaX team. I added the testcases
and tightened error handling a bit.
llvm-svn: 158523
2012-06-15 14:02:34 +00:00
Bill Wendling
33d8ca2ddc
Free the allocated filename. Found by clang static analyzer.
...
llvm-svn: 158513
2012-06-15 09:11:47 +00:00
Duncan Sands
8f0f616a54
Fix issues (infinite loop and/or crash) with self-referential instructions, for
...
example degenerate phi nodes and binops that use themselves in unreachable code.
Thanks to Charles Davis for the testcase that uncovered this can of worms.
llvm-svn: 158508
2012-06-15 08:37:50 +00:00
Craig Topper
19cfb998fd
Move AVX version of convert instructions that write to GPRs to the Op1 table.
...
llvm-svn: 158497
2012-06-15 07:02:58 +00:00
Marshall Clow
0ee85444ac
Had a closing brace inside an #ifdef -- oops!
...
llvm-svn: 158485
2012-06-15 01:15:47 +00:00
Marshall Clow
49e964c47f
Adding acessors to COFFObjectFile so that clients can get at the (non-generic) bits
...
llvm-svn: 158484
2012-06-15 01:08:25 +00:00
Pete Cooper
f7d46afa61
Recommit r158407: Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access. Now with additional fix and test for indexing into a vector inside a struct
...
llvm-svn: 158479
2012-06-14 23:53:53 +00:00
Rafael Espindola
41f1be2080
Implement the isSafeToDiscardIfUnused predicate and use it in globalopt and
...
globaldce. Globaldce was already removing linkonce globals, but globalopt was
not.
llvm-svn: 158476
2012-06-14 22:48:13 +00:00
Pete Cooper
e1c5e7bf9f
Move X86::VCVTTSD2SIrr from the 2 operand to 1 operand MemRegOp table.
...
Can someone with more knowledge of this please look at other entries
to see if others need moved.
llvm-svn: 158474
2012-06-14 22:12:58 +00:00
Akira Hatanaka
5e9724637e
Fix coding style violations. Remove white spaces and tabs.
...
llvm-svn: 158471
2012-06-14 21:10:56 +00:00
Akira Hatanaka
d1b2b96ed5
1. introduce MipsPat in place of Pat in order to exclude those from
...
being used by Mips16 or Micro Mips
2. clean up a few lines too long encountered
Patch by Reed Kotler.
llvm-svn: 158470
2012-06-14 21:03:23 +00:00
Akira Hatanaka
93c5168e49
Make machine verifier check the first instruction of the last bundle instead of
...
the last instruction of a basic block.
llvm-svn: 158468
2012-06-14 20:51:13 +00:00
Lang Hames
a4512782f7
Make comment slightly more helpful.
...
llvm-svn: 158467
2012-06-14 20:37:15 +00:00
Pete Cooper
75c1521e67
Revert r158454: Allow SROA to look at a vector type... Its breaking the vectorise buildbot
...
This reverts commit 12c1f86ffa731e2952c80d2cc577000c96b8962c.
llvm-svn: 158462
2012-06-14 18:32:52 +00:00
Andrew Trick
bef78f6714
misched: disable SSA check pending PR13112.
...
llvm-svn: 158461
2012-06-14 17:48:49 +00:00
Stepan Dyatkovskiy
bb6d2dc9da
SmallMap, FlatArrayMap::copyFrom
...
Replaced memcpy with std::copy, since the first one may work improperly with non POD data.
llvm-svn: 158457
2012-06-14 16:59:43 +00:00
David Blaikie
51b8e0f412
Remove/modify C backend references from LLVM documentation.
...
Patch by Wei-Ren Chen.
llvm-svn: 158456
2012-06-14 16:52:55 +00:00
David Blaikie
4194d74903
Remove C backend reference from the FAQ.
...
llvm-svn: 158455
2012-06-14 16:43:11 +00:00
Pete Cooper
8bba872141
Recommit r158407: Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access. Now with additional fix and test for indexing into a vector inside a struct
...
llvm-svn: 158454
2012-06-14 16:38:13 +00:00
Duncan Sands
36ade32369
Clarify a bit that the types have to be the same. Came up on IRC.
...
llvm-svn: 158453
2012-06-14 14:58:28 +00:00
NAKAMURA Takumi
cf2652ae8c
MipsLongBranch.cpp: Tweak llvm::next() to appease msvc.
...
llvm-svn: 158446
2012-06-14 12:29:48 +00:00
Richard Barton
2a7d06a53e
Replace assertion failure for badly formatted CPS instrution with error message.
...
llvm-svn: 158445
2012-06-14 10:48:04 +00:00
Jush Lu
6dd02e5fe3
Cleanup whitespace.
...
llvm-svn: 158443
2012-06-14 06:08:19 +00:00
Manman Ren
797e146fae
Revert: test/CodeGen/ARM/iabs.ll in r158441
...
Sorry that I accidently checked in this file with my previous commit.
llvm-svn: 158442
2012-06-14 06:04:02 +00:00
Manman Ren
e3471c0bdf
InstCombine: fix a bug when combining (fcmp cc0 x, y) && (fcmp cc1 x, y).
...
uno && ueq was converted to ueq, it should be converted to uno.
llvm-svn: 158441
2012-06-14 05:57:42 +00:00
Akira Hatanaka
1d6b061ade
Test case for MIPS long branch pass.
...
llvm-svn: 158438
2012-06-14 02:12:21 +00:00
Akira Hatanaka
012069bb89
Fix Mips/CMakeLists.txt.
...
llvm-svn: 158437
2012-06-14 01:23:55 +00:00
Akira Hatanaka
70ebace503
Add file MipsLongBranch.cpp.
...
llvm-svn: 158436
2012-06-14 01:22:24 +00:00
Akira Hatanaka
6bdcfb22d7
Fix test cases.
...
llvm-svn: 158435
2012-06-14 01:21:00 +00:00
Akira Hatanaka
7ea45292fb
Remove code in MipsAsmPrinter and MipsMCInstLower.
...
llvm-svn: 158434
2012-06-14 01:20:12 +00:00
Akira Hatanaka
0d20b51ff7
Add long branch expansion pass for MIPS.
...
llvm-svn: 158433
2012-06-14 01:19:35 +00:00
Akira Hatanaka
19512459e6
Add AT to the list of registers clobbered by branches so that it is available
...
as a scratch register when they are expanded to long branches.
llvm-svn: 158432
2012-06-14 01:17:59 +00:00
Akira Hatanaka
fb3c87c739
In MipsRegisterInfo::eliminateFrameIndex, call Mips::loadImmediate
...
to load an immediate that does not fit into 16-bit.
llvm-svn: 158431
2012-06-14 01:17:36 +00:00
Akira Hatanaka
415903692b
In MipsFrameLowering::emitPrologue and emitEpilogue, call Mips::loadImmediate
...
to load an immediate that does not fit into 16-bit. Also, take into
consideration the global base register slot on the stack when computing the
stack size.
llvm-svn: 158430
2012-06-14 01:17:13 +00:00
Akira Hatanaka
8f2f845215
Define function MipsInstrInfo::GetInstSizeInBytes, which will be called to
...
compute the size of basic blocks in a function. Also, define a function which
emits a series of instructions to load an immediate.
llvm-svn: 158429
2012-06-14 01:16:45 +00:00
Akira Hatanaka
afa4622baf
In MipsISelDAGToDAG.cpp, store the global base register to a stack frame object.
...
Long-branches need access to the global base register to get the destination
address.
llvm-svn: 158428
2012-06-14 01:16:15 +00:00
Akira Hatanaka
2784db9e87
Add methods to MipsFunctionInfo for initializing and accessing the stack frame
...
object for the global base register.
This is the first of a series of patches which implements long branch expansion
for MIPS.
llvm-svn: 158427
2012-06-14 01:15:36 +00:00
Akira Hatanaka
2f3e3d6ece
Bundle jump/branch instructions with the instructions in the delay slot in
...
delay slot filler pass of MIPS, per suggestion of Jakob Stoklund Olesen.
This change, along with the fix in r158154, enables machine verification
to be run after delay slot filling.
llvm-svn: 158426
2012-06-13 23:25:52 +00:00
Chandler Carruth
e63fe55776
Group the 'unsigned' members after the pointer to avoid 4 bytes of
...
padding on x86-64.
llvm-svn: 158421
2012-06-13 21:44:07 +00:00