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
Akira Hatanaka
0435101a38
Implement a DAGCombine in MipsISelLowering.cpp which transforms the following
...
pattern:
(add v0, (add v1, abs_lo(tjt))) => (add (add v0, v1), abs_lo(tjt))
"tjt" is a TargetJumpTable node.
llvm-svn: 158419
2012-06-13 20:33:18 +00:00
Akira Hatanaka
fef6359b1c
Set a higher value for maxStoresPerMemcpy in MipsISelLowering.cpp.
...
llvm-svn: 158414
2012-06-13 19:33:32 +00:00
Akira Hatanaka
cf4210f6d7
Simplify CreateLoadLR and CreateStoreLR in MipsISelLowering.cpp.
...
llvm-svn: 158413
2012-06-13 19:06:08 +00:00
Akira Hatanaka
25f2f1feba
Implement fastcc calling convention for MIPS.
...
llvm-svn: 158410
2012-06-13 18:06:00 +00:00
Richard Osborne
96c0be7351
Fix pattern for MKMSK instruction.
...
llvm-svn: 158409
2012-06-13 17:59:12 +00:00
Pete Cooper
ce49530fba
Revert "Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access"
...
This reverts commit 51786e0aaec76b973205066bd44f7f427b21969f.
llvm-svn: 158408
2012-06-13 17:55:22 +00:00
Pete Cooper
efba533f47
Allow SROA to look at a vector type and see if the offset is out of range to be replaced with a scalar access
...
llvm-svn: 158407
2012-06-13 17:30:34 +00:00
Argyrios Kyrtzidis
7345b735e8
Fix building ThreadLocal.cpp with --disable-threads.
...
llvm-svn: 158405
2012-06-13 16:30:06 +00:00
Kay Tiong Khoo
b631f7fd59
*typo: Cyles changed to Cycles
...
llvm-svn: 158404
2012-06-13 15:53:04 +00:00
Rafael Espindola
a0d94f4f75
Use LTO_CODEGEN_PIC_MODEL_DYNAMIC for PIE. This requirest a git version of
...
gold to work. Since the enum value LDPO_PIE has just been added to plugin-api.h,
use a numeric constant for now so that we don't require an unreleased
version of gold to build.
llvm-svn: 158402
2012-06-13 13:30:24 +00:00
Duncan Sands
d3ece28940
It is possible for several constants which aren't individually absorbing to
...
combine to the absorbing element. Thanks to nbjoerg on IRC for pointing this
out.
llvm-svn: 158399
2012-06-13 12:15:56 +00:00
Duncan Sands
5f04c03e66
When linearizing a multiplication, return at once if we see a factor of zero,
...
since then the entire expression must equal zero (similarly for other operations
with an absorbing element). With this in place a bunch of reassociate code for
handling constants is dead since it is all taken care of when linearizing. No
intended functionality change.
llvm-svn: 158398
2012-06-13 09:42:13 +00:00
Craig Topper
b2299168d3
Fix intrinsics for XOP frczss/sd instructions. These instructions only take one source register and zero the upper bits of the destination rather than preserving them.
...
llvm-svn: 158396
2012-06-13 07:18:53 +00:00
Hal Finkel
021ce0f07b
Add another missing 64-bit itinerary definition for the PPC A2 core.
...
llvm-svn: 158393
2012-06-13 05:55:09 +00:00
Manman Ren
d462a5158d
SimplifyCFG: fold unconditional branch to its predecessor if profitable.
...
This patch extends FoldBranchToCommonDest to fold unconditional branches.
For unconditional branches, we fold them if it is easy to update the phi nodes
in the common successors.
rdar://10554090
llvm-svn: 158392
2012-06-13 05:43:29 +00:00
Jakob Stoklund Olesen
3815bb6f62
Eliminate struct TableGenBackend.
...
TableGen backends are simply written as functions now.
Patch by Sean Silva!
llvm-svn: 158389
2012-06-13 05:15:49 +00:00
Akira Hatanaka
36f518fd08
Clean up trailing blanks in Mips16InstrFormats.td
...
Patch by Reed Kotler.
llvm-svn: 158382
2012-06-13 02:42:47 +00:00
Akira Hatanaka
c118cf7c71
disable use of directive .set nomicromips
...
until this directive is pushed in gas to open source fsf
Patch by Reed Kotler.
llvm-svn: 158381
2012-06-13 02:41:14 +00:00
Andrew Trick
1115f0067a
sched: fix latency of memory dependence chain edges for consistency.
...
For store->load dependencies that may alias, we should always use
TrueMemOrderLatency, which may eventually become a subtarget hook. In
effect, we should guarantee at least TrueMemOrderLatency on at least
one DAG path from a store to a may-alias load.
This should fix the standard mode as well as -enable-aa-sched-mi".
llvm-svn: 158380
2012-06-13 02:39:03 +00:00
Andrew Trick
858cf20add
sched: Avoid trivially redundant DAG edges. Take the one with higher latency.
...
llvm-svn: 158379
2012-06-13 02:39:00 +00:00
Akira Hatanaka
7e0382b71e
1. fix places where immed is used in place of imm to be consistent with
...
non mips16
2. fix some comments to change OPcode->EXTEND for extended instructions
Patch by Reed Kotler.
llvm-svn: 158378
2012-06-13 02:37:54 +00:00
Hal Finkel
ad66e9569f
Add some missing 64-bit itinerary definitions for the PPC A2 core.
...
llvm-svn: 158373
2012-06-12 20:32:29 +00:00
Duncan Sands
67465b09f1
Use DenseMap as SmallMap workaround rather than std::map, at Chandler's request.
...
llvm-svn: 158371
2012-06-12 20:26:43 +00:00
Duncan Sands
74fd0e6f20
Use std::map rather than SmallMap because SmallMap assumes that the value has
...
POD type, causing memory corruption when mapping to APInts with bitwidth > 64.
Merge another crash testcase into crash.ll while there.
llvm-svn: 158369
2012-06-12 20:16:51 +00:00
Chad Rosier
9734752b2c
[arm-fast-isel] Add support for -arm-long-calls.
...
Patch by Jush Lu <jush.msn@gmail.com>.
llvm-svn: 158368
2012-06-12 19:25:13 +00:00
Hal Finkel
a005be7ae7
Split out the PPC instruction class IntSimple from IntGeneral.
...
On the POWER7, adds and logical operations can also be handled
in the load/store pipelines. We'll call these IntSimple.
llvm-svn: 158366
2012-06-12 19:01:24 +00:00
David Blaikie
87a8e6af9f
Remove use of GNU extension to resolve Clang warning.
...
llvm-svn: 158364
2012-06-12 17:06:32 +00:00
Hal Finkel
6a80441b25
Fixes for PPC host detection and features.
...
POWER4 is a 64-bit CPU (better matched to the 970).
The g3 is really the 750 (no altivec), the g4+ is the 74xx (not the 750).
Patch by Andreas Tobler.
llvm-svn: 158363
2012-06-12 16:39:23 +00:00
Dmitri Gribenko
d12f46473a
Use correct syntax highliter in code blocks. Noticed by Sean Silva.
...
llvm-svn: 158359
2012-06-12 15:45:07 +00:00
Duncan Sands
5948d230e5
Now that Reassociate's LinearizeExprTree can look through arbitrary expression
...
topologies, it is quite possible for a leaf node to have huge multiplicity, for
example: x0 = x*x, x1 = x0*x0, x2 = x1*x1, ... rapidly gives a value which is x
raised to a vast power (the multiplicity, or weight, of x). This patch fixes
the computation of weights by correctly computing them no matter how big they
are, rather than just overflowing and getting a wrong value. It turns out that
the weight for a value never needs more bits to represent than the value itself,
so it is enough to represent weights as APInts of the same bitwidth and do the
right overflow-avoiding dance steps when computing weights. As a side-effect it
reduces the number of multiplies needed in some cases of large powers. While
there, in view of external uses (eg by the vectorizer) I made LinearizeExprTree
static, pushing the rank computation out into users. This is progress towards
fixing PR13021.
llvm-svn: 158358
2012-06-12 14:33:56 +00:00