Bob Wilson
438a9a1367
Add Neon VCVT instructions for f32 <-> f16 conversions.
...
Clang is now providing intrinsics for these and so we need to support them
in the backend. Radar 8068427.
llvm-svn: 121902
2010-12-15 22:14:12 +00:00
Bob Wilson
1082705e72
Fix misspelled target triples in MC/ARM test commands.
...
llvm-svn: 121901
2010-12-15 22:14:01 +00:00
Dan Gohman
7c7b24af4d
Reapply r121886, and also update DecomposeGEPExpression to keep
...
it in sync.
llvm-svn: 121895
2010-12-15 20:49:55 +00:00
Jakob Stoklund Olesen
1fc1f0c4a0
Add SlotIndexes::getMBBRange() to get the range of a basic block in a single
...
lookup.
llvm-svn: 121893
2010-12-15 20:40:22 +00:00
Dan Gohman
4f6b802044
Revert r121886. DecomposeGEPExpression needs to be kept
...
in sync.
llvm-svn: 121892
2010-12-15 20:39:25 +00:00
Wesley Peck
2a376c535e
Lower the MBlaze target specific calling conventions for "interrupt_handler"
...
and "save_volatiles" correctly. This completes the custom calling convention
functionality changes for the MBlaze backend that were started in 121888.
llvm-svn: 121891
2010-12-15 20:27:28 +00:00
Wesley Peck
66ff11fc09
Adding target specific calling conventions to support the MBlaze GCC function
...
attributes "interrupt_handle" and "save_volatiles". Support for lowering these
correctly will be in an upcoming commit.
llvm-svn: 121888
2010-12-15 20:14:09 +00:00
Dan Gohman
8b09daa387
Strengthen GetUnderlyingObject using InstructionSimplify.
...
While LLVM's main design is that analysis code shouldn't
go out of its way to understand code which hasn't been
InstCombined, analysis utility routines like this can
find themselves being called in the middle of transform
passes when instcombine hasn't had a chance to run.
llvm-svn: 121886
2010-12-15 20:10:26 +00:00
Dan Gohman
295ba3ab26
Move Value::getUnderlyingObject to be a standalone
...
function so that it can live in Analysis instead of
VMCore.
llvm-svn: 121885
2010-12-15 20:02:24 +00:00
Wesley Peck
be7405993f
Add some special purpose register definitions to the MBlaze backend and cleanup some old, unused floating point register definitions.
...
llvm-svn: 121882
2010-12-15 19:35:36 +00:00
Owen Anderson
1bf81c7f14
Fix typo in r121875.
...
llvm-svn: 121880
2010-12-15 19:24:24 +00:00
Jim Grosbach
30e7f0d09e
Tweak a few pseudo-inst pattern base classes.
...
llvm-svn: 121878
2010-12-15 19:03:16 +00:00
Nick Lewycky
44b582fb69
Clean up some of LVI:
...
* mergeIn now uses constant folding for constants that are provably not-equal.
* sink some sanity checks from the get*() methods into the mark*() methods, to ensure that we never have a constant/notconstant ConstantInt
* some textual cleanups, whitespace changes, removing "else" after return, that sort of thing.
llvm-svn: 121877
2010-12-15 18:57:18 +00:00
Jim Grosbach
8278d5692a
The new t2LEApcrel* pseudo instructions need the size specified.
...
rdar://8768390
llvm-svn: 121876
2010-12-15 18:48:45 +00:00
Owen Anderson
202d654195
Implement cleanups suggested by Daniel.
...
llvm-svn: 121875
2010-12-15 18:48:27 +00:00
Dan Gohman
0b9ddf4485
Document some more AliasAnalysis infrastructure limitations.
...
llvm-svn: 121874
2010-12-15 18:45:20 +00:00
Jakob Stoklund Olesen
3cfea82733
Fix build.
...
llvm-svn: 121872
2010-12-15 18:07:48 +00:00
Jakob Stoklund Olesen
308656b955
Detect and enumerate bypass loops.
...
Bypass loops have the current live range live through, but contain no uses or
defs. Splitting around a bypass loop can free registers for other uses inside
the loop by spilling the split range.
llvm-svn: 121871
2010-12-15 17:49:52 +00:00
Jakob Stoklund Olesen
849388944e
Separate SplitAnalysis::getSplitLoops().
...
This method returns the set of loops with uses that are candidates for
splitting.
llvm-svn: 121870
2010-12-15 17:41:19 +00:00
Bob Wilson
3e4aa8ec69
Add a Neon intrinsic test generator.
...
This is still a WIP. It's already good enough to expose a few bugs, though.
llvm-svn: 121868
2010-12-15 16:58:45 +00:00
Bob Wilson
114df2f88a
Fix Neon intrinsic immediate range checking for some double-register operands.
...
Some quad-register intrinsics with lane operands only take a double-register
operand for the vector containing the lane. The valid range of lane numbers
is then half as big as you would expect from the quad-register type.
Note: This currently has no effect because those intrinsics are now handled
entirely in the header file using __builtin_shufflevector, which does its own
range checking, but I want to use this for generating tests.
llvm-svn: 121867
2010-12-15 16:58:42 +00:00
Duncan Sands
2699fb1072
Move Sub simplifications and additional Add simplifications out of
...
instcombine and into InstructionSimplify.
llvm-svn: 121861
2010-12-15 14:07:39 +00:00
Duncan Sands
a9b837f7c7
If we detect that the instruction we are simplifying is unreachable, arrange for
...
it to be replaced by undef rather than not replaced at all, the idea being that
this may reduce the amount of work done by whoever called InstructionSimplify.
llvm-svn: 121860
2010-12-15 11:02:22 +00:00
Frits van Bommel
83b7c3773f
Teach jump threading to "look through" a select when the branch direction of a terminator depends on it.
...
When it sees a promising select it now tries to figure out whether the condition of the select is known in any of the predecessors and if so it maps the operands appropriately.
llvm-svn: 121859
2010-12-15 09:51:20 +00:00
Bill Wendling
ab9df10ee5
Add fixups for Thumb LDR/STR instructions.
...
llvm-svn: 121858
2010-12-15 08:51:02 +00:00
Rafael Espindola
94d026d157
Relax alignment fragments.
...
With this we don't need the EffectiveSize field anymore. Without that field
LayoutFragment only updates offsets and we don't need to invalidate the
current fragment when it is relaxed (only the ones following it).
This is also a very small improvement in the accuracy of the layout info as
we now use the after relaxation size immediately.
llvm-svn: 121857
2010-12-15 08:45:53 +00:00
Rafael Espindola
f55f520a7a
Patch by David Meyer to avoid a O(N^2) behaviour when relaxing fragments.
...
Since we now don't update addresses so early, we might relax a bit more than
we need to. This is simillar to the issue in PR8467.
llvm-svn: 121856
2010-12-15 07:39:29 +00:00
Chris Lattner
63d08e3444
add another overflow idiom
...
llvm-svn: 121854
2010-12-15 07:28:58 +00:00
Chris Lattner
ec899c30d9
add a note about overflow idiom recognition.
...
llvm-svn: 121853
2010-12-15 07:25:55 +00:00
Rafael Espindola
102a0b7b74
Generalize an assert.
...
llvm-svn: 121851
2010-12-15 07:12:24 +00:00
Chris Lattner
82b8cda077
add a shift/imul missed optimization
...
llvm-svn: 121850
2010-12-15 07:10:43 +00:00
Chris Lattner
d2022fee87
add a note about a SPEC hack that gcc mainline does.
...
llvm-svn: 121849
2010-12-15 06:38:24 +00:00
Chris Lattner
81815cd4db
take care of some todos, transforming [us]mul_lohi into
...
a wider mul if the wider mul is legal.
llvm-svn: 121848
2010-12-15 06:04:19 +00:00
Chris Lattner
3bec2e7d0d
merge two tests
...
llvm-svn: 121847
2010-12-15 05:58:59 +00:00
Chris Lattner
746d6a1f60
when transforming a MULHS into a wider MUL, there is no need to SRA the
...
result, the top bits are truncated off anyway, just use SRL.
llvm-svn: 121846
2010-12-15 05:51:39 +00:00
Chris Lattner
1499119975
make qsort predicate more conformant by returning 0 for equal values.
...
llvm-svn: 121838
2010-12-15 04:52:41 +00:00
Chris Lattner
e1ee3c537d
various cleanups to tblgen, patch by Garrison Venn!
...
llvm-svn: 121837
2010-12-15 04:48:22 +00:00
Bill Wendling
0611f0ab0b
Add mention that we support FreeBSD/amd64.
...
llvm-svn: 121832
2010-12-15 01:35:55 +00:00
Kevin Enderby
6b3ae489f8
Add some more MC tests for ARM arithmetic instructions that update or don't
...
update the condition codes. These come from my test generator and are just
the ones that MC currently assembles correctly.
llvm-svn: 121830
2010-12-15 01:24:36 +00:00
Mikhail Glushenkov
7734f4702c
Copy-pastos.
...
llvm-svn: 121829
2010-12-15 01:22:34 +00:00
Mikhail Glushenkov
a1dff84381
Remove ConvertToMAttrImpl, it became too '-march'-specific.
...
llvm-svn: 121828
2010-12-15 01:22:29 +00:00
Mikhail Glushenkov
85f1ed369c
llvmc: Support -march arguments that should be forwarded to llc as -mcpu.
...
llvm-svn: 121827
2010-12-15 01:22:25 +00:00
Mikhail Glushenkov
8cf4959bf1
llvmc: Better -mfpu/-mcpu support for ARM & PPC.
...
llvm-svn: 121826
2010-12-15 01:22:20 +00:00
Mikhail Glushenkov
cc4f5dc841
llvmc: more complete -march table for ARM.
...
llvm-svn: 121825
2010-12-15 01:22:15 +00:00
Mikhail Glushenkov
62c42888bd
llvmc: Support -mabi/-mfloat-abi.
...
llvm-svn: 121824
2010-12-15 01:22:10 +00:00
Mikhail Glushenkov
04ca263355
llvmc: Forward -march/-mcpu/-mtune to as & ld.
...
llvm-svn: 121823
2010-12-15 01:22:05 +00:00
Mikhail Glushenkov
2e471b81da
llvmc: make switch options ZeroOrMore by default.
...
llvm-svn: 121822
2010-12-15 01:21:59 +00:00
Bill Wendling
258739db7e
Reapply r121808 now that the missing patterns have been supplied.
...
llvm-svn: 121820
2010-12-15 01:03:19 +00:00
Bill Wendling
2764f25c78
Add some missing patterns now that tLDRB and tLDRH are split into reg and
...
immediate versions.
llvm-svn: 121819
2010-12-15 00:58:57 +00:00
Owen Anderson
de42e1136e
Fix PR8790, another instance where unreachable code can cause instruction simplification to fail,
...
this case involve a select that simplifies to itself.
llvm-svn: 121817
2010-12-15 00:55:35 +00:00