Hartmut Kaiser
a420cf3f77
Updated VC++ build system
...
llvm-svn: 43123
2007-10-18 12:31:51 +00:00
Gordon Henriksen
ea31de8dc1
Work around downrev gccs which do not inherit visibility of the
...
Registry<>::iterator member class.
llvm-svn: 43122
2007-10-18 11:53:05 +00:00
Gordon Henriksen
03368e85b8
Missing 'public' keyword.
...
llvm-svn: 43121
2007-10-18 11:31:21 +00:00
Bill Wendling
070aca5d25
Pointer arithmetic should be done with the index the same size as the pointer.
...
llvm-svn: 43120
2007-10-18 08:32:37 +00:00
Duncan Sands
cb7aca0dcb
Support for ADDC/SUBC.
...
llvm-svn: 43119
2007-10-18 08:22:16 +00:00
Evan Cheng
e6a41c066a
Really fix PR1734. Carefully track which register uses are sub-register uses by
...
traversing inverse register coalescing map.
llvm-svn: 43118
2007-10-18 07:49:59 +00:00
Evan Cheng
0b18ddf55a
Remove unnecessary include.
...
llvm-svn: 43117
2007-10-18 07:47:55 +00:00
Chris Lattner
84f3461c49
legalizing the ret operation on f64 shouldn't introduce a new
...
i64 bit convert needlessly.
llvm-svn: 43116
2007-10-18 06:17:07 +00:00
Owen Anderson
ca831a829d
Move Split<...>() into DomTreeBase. This should make the #include's of DominatorInternals.h
...
in CodeExtractor and LoopSimplify unnecessary.
Hartmut, could you confirm that this fixes the issues you were seeing?
llvm-svn: 43115
2007-10-18 05:13:52 +00:00
Devang Patel
9497767458
XFAIL for now.
...
llvm-svn: 43111
2007-10-18 00:48:43 +00:00
Ted Kremenek
da9639d1a7
Changed the return type of type-specific Allocate() methods to return
...
void*. This is hint that we are returning uninitialized memory rather
than a constructed object.
Patched ImutAVLTree to conform to this new interface.
llvm-svn: 43106
2007-10-18 00:30:14 +00:00
Evan Cheng
cdcc1d0444
Reverting r43070 for now. It's causing llc test failures.
...
llvm-svn: 43103
2007-10-17 23:51:13 +00:00
Bill Wendling
37f888e6e8
Test to make sure we don't generate unwind info for non-64-bit Objective-C.
...
llvm-svn: 43102
2007-10-17 23:14:56 +00:00
Ted Kremenek
603fbbfcb7
ImutAVLTree now allocates tree nodes from the BumpPtrAllocator using
...
the new type-aligned Allocate() method.
llvm-svn: 43100
2007-10-17 22:17:01 +00:00
Ted Kremenek
3830606dee
Removed inclusion of cassert, which is no longer needed.
...
llvm-svn: 43099
2007-10-17 22:12:14 +00:00
Ted Kremenek
27d207d2e7
Minor cosmetic cleanups in the calculation of alignments for
...
StringMapEntry objects. No functionality change.
llvm-svn: 43097
2007-10-17 22:09:45 +00:00
Ted Kremenek
02c3267039
Added template function alignof() which provides a clean
...
function-based interface to getting the alignment of a type.
llvm-svn: 43096
2007-10-17 22:08:55 +00:00
Gordon Henriksen
0ab3d27641
Reverting unnecessary commit of generated files.
...
llvm-svn: 43095
2007-10-17 21:36:08 +00:00
Gordon Henriksen
ef5d08f4ea
Switching TargetMachineRegistry to use the new generic Registry.
...
llvm-svn: 43094
2007-10-17 21:28:48 +00:00
Ted Kremenek
dbc8e043c2
Updated StringMap to use llvm::AlignOf to compute the alignment of map
...
entries.
llvm-svn: 43089
2007-10-17 21:13:50 +00:00
Ted Kremenek
a26294201f
Added member template functions to MallocAllocator and
...
BumpPtrAllocator that implement allocations that return a properly
typed pointer. For BumpPtrAllocator, the allocated memory is
automatically aligned to the minimum alignment of the type (as
calculated by llvm::AlignOf::Alignment).
llvm-svn: 43087
2007-10-17 21:10:21 +00:00
Ted Kremenek
391b728a99
Added llvm::AlignOf, a template class whose purpose is to portably
...
compute the minimum memory alignment of arbitrary types.
llvm-svn: 43086
2007-10-17 20:56:47 +00:00
Devang Patel
b3dac3f5d9
Do not raise free() call that is called through invoke instruction.
...
llvm-svn: 43083
2007-10-17 20:12:58 +00:00
Hartmut Kaiser
2f842e613f
Fixed linker errors (unresolved externals: split<>(...)) when compiling with VC++. Please review.
...
llvm-svn: 43081
2007-10-17 18:37:09 +00:00
Dan Gohman
d0806a0508
Don't mention -enable-unsafe-fp-math in LangRef.html, as that option is
...
assumed to globally mutate the spec.
llvm-svn: 43078
2007-10-17 18:05:13 +00:00
Dan Gohman
07159205dd
Define a helper function ConstantVector::getSplatValue for testing for
...
and working with broadcasted constants.
llvm-svn: 43076
2007-10-17 17:51:30 +00:00
Hartmut Kaiser
ec8a8d1f51
Updated VC++ build system.
...
Silenced some VC warnings.
I'm getting linker errors, though: unresolved externals:
llvm::Split<class llvm::BasicBlock *,struct llvm::GraphTraits<class llvm::BasicBlock *> >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
and
llvm::Split<struct llvm::Inverse<class llvm::BasicBlock *>,struct llvm::GraphTraits<struct llvm::Inverse<class llvm::BasicBlock *> > >(class llvm::DominatorTreeBase<class llvm::BasicBlock> &,class llvm::BasicBlock *)
Where are these defined?
llvm-svn: 43073
2007-10-17 14:56:40 +00:00
Dan Gohman
8f518b9875
Add support for ISD::SELECT in SplitVectorOp.
...
llvm-svn: 43072
2007-10-17 14:48:28 +00:00
Duncan Sands
d42c812f4a
Return Expand from getOperationAction for all extended
...
types. This is needed for SIGN_EXTEND_INREG at least.
It is not clear if this is correct for other operations.
On the other hand, for the various load/store actions
it seems to correct to return the type action, as is
currently done.
Also, it seems that SelectionDAG::getValueType can be
called for extended value types; introduce a map for
holding these, since we don't really want to extend
the vector to be 2^32 pointers long!
Generalize DAGTypeLegalizer::PromoteResult_TRUNCATE
and DAGTypeLegalizer::PromoteResult_INT_EXTEND to handle
the various funky possibilities that apints introduce,
for example that you can promote to a type that needs
to be expanded.
llvm-svn: 43071
2007-10-17 13:49:58 +00:00
Devang Patel
91ff13edcc
Apply "Instead of loading small c string constant, use integer constant directly" transformation while processing load instruction.
...
llvm-svn: 43070
2007-10-17 07:24:40 +00:00
Evan Cheng
0dde6e5761
Apply Chris' suggestions.
...
llvm-svn: 43069
2007-10-17 06:53:44 +00:00
Chris Lattner
12d5da49d3
Change fp to sint legalization on x86-32 to do 2 x i32
...
loads instead of 1 x i64 loads. This doesn't change any functionality yet.
llvm-svn: 43068
2007-10-17 06:17:29 +00:00
Chris Lattner
693cbeadff
fix some funny indentation, add comments.
...
llvm-svn: 43066
2007-10-17 06:02:13 +00:00
Evan Cheng
c8b5397000
One more extract_subreg coalescing bug fix.
...
llvm-svn: 43065
2007-10-17 05:29:37 +00:00
Evan Cheng
5cfc2c640f
Update comments.
...
llvm-svn: 43064
2007-10-17 02:16:40 +00:00
Evan Cheng
7587d1bd19
Yet another test case for extract_subreg coalescing crash.
...
llvm-svn: 43063
2007-10-17 02:15:06 +00:00
Evan Cheng
9b0a44a2ce
Fix MergeValueInAsValue(). It allows overlapping live ranges but should replace
...
their value numbers with the specified value number.
llvm-svn: 43062
2007-10-17 02:13:29 +00:00
Evan Cheng
a6fd8bc97e
Clean up code that calculate MBB live-in's.
...
llvm-svn: 43061
2007-10-17 02:12:22 +00:00
Evan Cheng
8b8c7c9927
Clean up code that calculate MBB live-in's.
...
llvm-svn: 43060
2007-10-17 02:10:22 +00:00
Owen Anderson
84490d44ec
Move splitBlock into DomTreeBase from DomTree.
...
llvm-svn: 43059
2007-10-17 02:03:17 +00:00
Devang Patel
8d818f5e80
Use immediate stores.
...
llvm-svn: 43055
2007-10-16 23:44:18 +00:00
Dale Johannesen
e5facd51cb
Disable attempts to constant fold PPC f128.
...
Remove the assumption that this will happen from
various places.
llvm-svn: 43053
2007-10-16 23:38:29 +00:00
Owen Anderson
7bcc28bf6c
Fix some formatting.
...
llvm-svn: 43049
2007-10-16 22:59:15 +00:00
Evan Cheng
8f644cef0f
Some clean up.
...
llvm-svn: 43043
2007-10-16 21:09:14 +00:00
Owen Anderson
4187801f85
Template DominatorTreeBase by node type. This is the next major step towards
...
having dominator information on MBB's.
llvm-svn: 43036
2007-10-16 19:59:25 +00:00
Evan Cheng
fab7ca89d5
Fix PR1734.
...
llvm-svn: 43035
2007-10-16 19:29:47 +00:00
Dale Johannesen
e43b960d3b
New test for svn rev 43033, radar 5538745.
...
llvm-svn: 43034
2007-10-16 18:10:14 +00:00
Dale Johannesen
e5530a35d4
Check for invalid cc's in f80 select.
...
llvm-svn: 43033
2007-10-16 18:09:08 +00:00
Chris Lattner
1366653e2f
Fix a bug handling frame references in ppc inline asm when the frame offset
...
doesn't fit into 16 bits.
llvm-svn: 43032
2007-10-16 18:00:18 +00:00
Duncan Sands
ce042d0bc0
Document the fact that the verifier currently requires the
...
top bit of a ValueType to be zero. Enforce this by ensuring
an assertion failure if someone tries to create a ValueType
without this property. I chose this minimal approach rather
than a more official integration of the notion of reserved
bits into ValueType because I'm hoping that the verifier will
be changed to no longer require this :)
llvm-svn: 43031
2007-10-16 13:34:11 +00:00
Duncan Sands
bbbfbe95f7
Initial infrastructure for arbitrary precision integer
...
codegen support. This should have no effect on codegen
for other types. Debatable bits: (1) the use (abuse?)
of a set in SDNode::getValueTypeList; (2) the length of
getTypeToTransformTo, which maybe should be refactored
with a non-inline part for extended value types.
llvm-svn: 43030
2007-10-16 09:56:48 +00:00
Duncan Sands
052c843559
Fixes due to lack of type-safety for ValueType: (1) ValueType
...
being passed instead of an opcode; (2) ValueType being passed
for isVolatile (!) in getLoad.
llvm-svn: 43028
2007-10-16 09:07:20 +00:00
Arnold Schwaighofer
b3d58b98d0
Correction to tail call optimization code. The new return address
...
was stored to the acutal stack slot before the parameters were
lowered to their stack slot. This could cause arguments to be
overwritten by the return address if the called function had less
parameters than the caller function. The update should remove the
last failing test case of llc-beta: SPASS.
llvm-svn: 43027
2007-10-16 09:05:00 +00:00
Evan Cheng
ecf62cb763
Code clean up.
...
llvm-svn: 43026
2007-10-16 08:04:24 +00:00
Chris Lattner
cece03dd89
implement promotion of select and select_cc, allowing MallocBench/gs to
...
work with type promotion on x86.
llvm-svn: 43025
2007-10-16 03:00:22 +00:00
Dan Gohman
9aa4fc5cd6
Teach IntrinsicLowering.cpp about the sin, cos, and pow intrinsics.
...
llvm-svn: 43020
2007-10-15 22:07:31 +00:00
Evan Cheng
04c44712d3
Make CalcLatency() non-recursive.
...
llvm-svn: 43017
2007-10-15 21:33:22 +00:00
Dan Gohman
a8656d4798
Fix a typo in a comment.
...
llvm-svn: 43016
2007-10-15 21:10:03 +00:00
Dan Gohman
d4f2165007
Document the -view-sunit-dags option.
...
llvm-svn: 43015
2007-10-15 21:07:59 +00:00
Dan Gohman
b6324c1243
Document the new llvm.sin, llvm.cos, and llvm.pow intrinsics. Feedback
...
is welcome!
llvm-svn: 43007
2007-10-15 20:30:11 +00:00
Chris Lattner
06a4954e6e
Change LowerFP_TO_SINT to create the specific code it needs instead of
...
unconditionally creating an i64 bitcast. With the future legalizer
design, operation legalization can't introduce new nodes with illegal
types.
This fixes the rest of olden on ppc32.
llvm-svn: 43005
2007-10-15 20:14:52 +00:00
Evan Cheng
7bcfd8f880
LowerFP_TO_SINT must not create a stack object if it's not needed.
...
llvm-svn: 43004
2007-10-15 20:11:21 +00:00
Devang Patel
324fe8904f
Add removeModuleProvider()
...
llvm-svn: 43002
2007-10-15 19:56:32 +00:00
Dan Gohman
e862243e1c
Reapply the fix in 42908 for this file. This changes the function names
...
from "test" to "foo" so that they don't match the grep -i ST.
llvm-svn: 43001
2007-10-15 19:22:17 +00:00
Ted Kremenek
7bbc582bb3
Fixed incorrect renaming of method name (forgot two characters).
...
llvm-svn: 42999
2007-10-15 19:15:48 +00:00
Ted Kremenek
fcce4f378f
Added more doxygen comments.
...
Renamed internal method of ImutAVLTree::RemoveMutableFlag to MarkImmutable.
Added enum for bit manipulation (more self-documentating).
llvm-svn: 42998
2007-10-15 18:52:34 +00:00
Evan Cheng
a5abba65b6
Fix PR1729: watch out for val# with no def.
...
llvm-svn: 42996
2007-10-15 18:33:50 +00:00
Chris Lattner
d6f7d44eae
Move CreateStackTemporary out to SelectionDAG
...
llvm-svn: 42995
2007-10-15 17:48:57 +00:00
Chris Lattner
9eb7a829e6
add a new CreateStackTemporary helper method.
...
llvm-svn: 42994
2007-10-15 17:47:20 +00:00
Chris Lattner
9d5b131e70
implement promotion of BR_CC operands, fixing bisort on ppc.
...
llvm-svn: 42992
2007-10-15 17:16:12 +00:00
Chris Lattner
8555e69def
updates from duncan
...
llvm-svn: 42991
2007-10-15 16:46:29 +00:00
Tanya Lattner
9486b19066
Fix run line.
...
llvm-svn: 42990
2007-10-15 16:35:13 +00:00
Devang Patel
80b1222274
New test.
...
llvm-svn: 42986
2007-10-15 15:41:07 +00:00
Devang Patel
bff4aea328
Achieve same result but use fewer lines of code.
...
llvm-svn: 42985
2007-10-15 15:31:35 +00:00
Neil Booth
9130551996
Fast-track obviously over-large and over-small exponents during decimal->
...
integer conversion. In some such cases this makes us one or two orders
of magnitude faster than NetBSD's libc. Glibc seems to have a similar
fast path.
Also, tighten up some upper bounds to save a bit of memory.
llvm-svn: 42984
2007-10-15 15:00:55 +00:00
Duncan Sands
f6977d9842
Fix some typos. Call getTypeToTransformTo rather than
...
getTypeToExpandTo. The difference is that
getTypeToExpandTo gives the final result of expansion
(eg: i128 -> i32 on a 32 bit machine) while
getTypeToTransformTo does just one step (i128 -> i64).
llvm-svn: 42982
2007-10-15 13:30:18 +00:00
Chris Lattner
3cfb56d489
One mundane change: Change ReplaceAllUsesOfValueWith to *optionally*
...
take a deleted nodes vector, instead of requiring it.
One more significant change: Implement the start of a legalizer that
just works on types. This legalizer is designed to run before the
operation legalizer and ensure just that the input dag is transformed
into an output dag whose operand and result types are all legal, even
if the operations on those types are not.
This design/impl has the following advantages:
1. When finished, this will *significantly* reduce the amount of code in
LegalizeDAG.cpp. It will remove all the code related to promotion and
expansion as well as splitting and scalarizing vectors.
2. The new code is very simple, idiomatic, and modular: unlike
LegalizeDAG.cpp, it has no 3000 line long functions. :)
3. The implementation is completely iterative instead of recursive, good
for hacking on large dags without blowing out your stack.
4. The implementation updates nodes in place when possible instead of
deallocating and reallocating the entire graph that points to some
mutated node.
5. The code nicely separates out handling of operations with invalid
results from operations with invalid operands, making some cases
simpler and easier to understand.
6. The new -debug-only=legalize-types option is very very handy :),
allowing you to easily understand what legalize types is doing.
This is not yet done. Until the ifdef added to SelectionDAGISel.cpp is
enabled, this does nothing. However, this code is sufficient to legalize
all of the code in 186.crafty, olden and freebench on an x86 machine. The
biggest issues are:
1. Vectors aren't implemented at all yet
2. SoftFP is a mess, I need to talk to Evan about it.
3. No lowering to libcalls is implemented yet.
4. Various operations are missing etc.
5. There are FIXME's for stuff I hax0r'd out, like softfp.
Hey, at least it is a step in the right direction :). If you'd like to help,
just enable the #ifdef in SelectionDAGISel.cpp and compile code with it. If
this explodes it will tell you what needs to be implemented. Help is
certainly appreciated.
Once this goes in, we can do three things:
1. Add a new pass of dag combine between the "type legalizer" and "operation
legalizer" passes. This will let us catch some long-standing isel issues
that we miss because operation legalization often obfuscates the dag with
target-specific nodes.
2. We can rip out all of the type legalization code from LegalizeDAG.cpp,
making it much smaller and simpler. When that happens we can then
reimplement the core functionality left in it in a much more efficient and
non-recursive way.
3. Once the whole legalizer is non-recursive, we can implement whole-function
selectiondags maybe...
llvm-svn: 42981
2007-10-15 06:10:22 +00:00
Chris Lattner
b193517eed
One xform performed by LegalizeDAG is transformation of "store of fp" to "store of int".
...
Make two changes:
1) only xform "store of f32" if i32 is a legal type for the target.
2) only xform "store of f64" if either i64 or i32 are legal for the target.
3) if i64 isn't legal, manually lower to 2 stores of i32 instead of letting a
later pass of legalize do it. This is ugly, but helps future changes I'm
about to commit.
llvm-svn: 42980
2007-10-15 05:46:06 +00:00
Chris Lattner
2b827fd70d
avoid an APFloat copy.
...
llvm-svn: 42979
2007-10-15 05:34:10 +00:00
Chris Lattner
90e0b271df
Add a (disabled by default) way to view the ID of a node.
...
llvm-svn: 42978
2007-10-15 05:32:43 +00:00
Chris Lattner
bfdebe33a0
remove dead enum, make setNodeId public.
...
llvm-svn: 42977
2007-10-15 05:30:55 +00:00
Chris Lattner
a2ebb9aadd
Fix 80 col violation
...
llvm-svn: 42976
2007-10-15 05:30:27 +00:00
Dale Johannesen
207bd4d90e
Handle PPC long double in CBackend.
...
llvm-svn: 42972
2007-10-15 01:05:37 +00:00
Chris Lattner
fbbe570994
remove misleading comment.
...
llvm-svn: 42970
2007-10-14 20:35:12 +00:00
Chris Lattner
ebe491ea9c
If a target doesn't have HasMULHU or HasUMUL_LOHI, ExpandOp would return
...
without lo/hi set. Fall through to making a libcall instead.
llvm-svn: 42969
2007-10-14 18:35:05 +00:00
Neil Booth
5fe658b21d
Consolidate logic for creating NaNs. Silence compiler warning.
...
llvm-svn: 42966
2007-10-14 10:39:51 +00:00
Neil Booth
06077e7c3c
Whether arithmetic is supported is a property of the semantics. Make it
...
so, and clean up the checks by putting them in an inline function.
llvm-svn: 42965
2007-10-14 10:29:28 +00:00
Neil Booth
4ed401b898
Separate out parsing of decimal number. Use this to only allocate
...
memory for the significand once up-front. Also ignore insignificant
trailing zeroes; this saves unnecessary multiplications later.
llvm-svn: 42964
2007-10-14 10:16:12 +00:00
Evan Cheng
d8771e915c
New test case.
...
llvm-svn: 42963
2007-10-14 10:15:03 +00:00
Evan Cheng
4099f4f91a
Unbreak x86-64.
...
llvm-svn: 42962
2007-10-14 10:09:39 +00:00
Evan Cheng
8d6da9142c
When coalescing an EXTRACT_SUBREG and the dst register is a physical register,
...
the source register will be coalesced to the super register of the LHS. Properly
merge in the live ranges of the resulting coalesced interval that were part of
the original source interval to the live interval of the super-register.
llvm-svn: 42961
2007-10-14 10:08:34 +00:00
Evan Cheng
cdf3609130
Revert 42908 for now.
...
llvm-svn: 42960
2007-10-14 05:57:21 +00:00
Dale Johannesen
2f6b6d6fb0
Fix type mismatch error in PPC Altivec (only causes
...
a problem when asserts are on). From vecLib.
llvm-svn: 42959
2007-10-14 01:58:32 +00:00
Dale Johannesen
19db093b35
Disable some compile-time optimizations on PPC
...
long double.
llvm-svn: 42958
2007-10-14 01:56:47 +00:00
Gordon Henriksen
a699c4dc65
Fixing a typo. Found by Kevin André!
...
llvm-svn: 42956
2007-10-14 00:34:53 +00:00
Duncan Sands
29af26f147
Clarify that fastcc has a problem with nested function
...
trampolines, rather than with nested functions themselves.
llvm-svn: 42955
2007-10-13 07:38:37 +00:00
Chris Lattner
f47e30627a
Enhance the truncstore optimization code to handle shifted
...
values and propagate demanded bits through them in simple cases.
This allows this code:
void foo(char *P) {
strcpy(P, "abc");
}
to compile to:
_foo:
ldrb r3, [r1]
ldrb r2, [r1, #+1]
ldrb r12, [r1, #+2]!
ldrb r1, [r1, #+1]
strb r1, [r0, #+3]
strb r2, [r0, #+1]
strb r12, [r0, #+2]
strb r3, [r0]
bx lr
instead of:
_foo:
ldrb r3, [r1, #+3]
ldrb r2, [r1, #+2]
orr r3, r2, r3, lsl #8
ldrb r2, [r1, #+1]
ldrb r1, [r1]
orr r2, r1, r2, lsl #8
orr r3, r2, r3, lsl #16
strb r3, [r0]
mov r2, r3, lsr #24
strb r2, [r0, #+3]
mov r2, r3, lsr #16
strb r2, [r0, #+2]
mov r3, r3, lsr #8
strb r3, [r0, #+1]
bx lr
testcase here: test/CodeGen/ARM/truncstore-dag-combine.ll
This also helps occasionally for X86 and other cases not involving
unaligned load/stores.
llvm-svn: 42954
2007-10-13 06:58:48 +00:00
Chris Lattner
2ce649ebea
new testcase
...
llvm-svn: 42953
2007-10-13 06:56:18 +00:00
Chris Lattner
5e6fe054a2
Add a simple optimization to simplify the input to
...
truncate and truncstore instructions, based on the
knowledge that they don't demand the top bits.
llvm-svn: 42952
2007-10-13 06:35:54 +00:00
Neil Booth
c799fe9ed9
If the power of 5 is exact, and the reciprocal exact, the error is zero not one half-ulps. This prevents an infinite loop in rare cases.
...
llvm-svn: 42950
2007-10-13 03:34:08 +00:00
Evan Cheng
f86204baf4
Fix test case.
...
llvm-svn: 42949
2007-10-13 03:14:06 +00:00
Evan Cheng
54bec86754
New tests.
...
llvm-svn: 42948
2007-10-13 03:10:54 +00:00
Evan Cheng
b63076504e
Local spiller optimization:
...
Turn this:
movswl %ax, %eax
movl %eax, -36(%ebp)
xorl %edi, -36(%ebp)
into
movswl %ax, %eax
xorl %edi, %eax
movl %eax, -36(%ebp)
by unfolding the load / store xorl into an xorl and a store when we know the
value in the spill slot is available in a register. This doesn't change the
number of instructions but reduce the number of times memory is accessed.
Also unfold some load folding instructions and reuse the value when similar
situation presents itself.
llvm-svn: 42947
2007-10-13 02:50:24 +00:00
Evan Cheng
7082dcf605
Change unfoldMemoryOperand(). User is now responsible for passing in the
...
register used by the unfolded instructions. User can also specify whether to
unfold the load, the store, or both.
llvm-svn: 42946
2007-10-13 02:35:06 +00:00
Evan Cheng
9490e0d078
Optionally create a MachineInstr without default implicit operands.
...
llvm-svn: 42945
2007-10-13 02:23:01 +00:00
Arnold Schwaighofer
e8d0bf2669
Correcting the corrections. Bad bad baaad emacs!
...
llvm-svn: 42935
2007-10-12 21:53:12 +00:00
Arnold Schwaighofer
1f0da1fefb
Corrected many typing errors. And removed 'nest' parameter handling
...
for fastcc from X86CallingConv.td. This means that nested functions
are not supported for calling convention 'fastcc'.
llvm-svn: 42934
2007-10-12 21:30:57 +00:00
Dan Gohman
e0ad9ea7cd
Fix this test to not depend on the assembly output containing something
...
that includes the string "st". This probably fixes the regression on
Darwin.
llvm-svn: 42932
2007-10-12 20:42:14 +00:00
Devang Patel
371e6ca690
Dest type is always i8 *. This allows some simplification.
...
Do not filter memmove.
llvm-svn: 42930
2007-10-12 20:10:21 +00:00
Gordon Henriksen
3fb03e4080
Fix ocaml bindings for picky linkers. :)
...
Thanks to Török Edvin for helping to track this down.
llvm-svn: 42927
2007-10-12 19:48:13 +00:00
Duncan Sands
a6286bd502
Due to the new tail call optimization, trampolines can no
...
longer be created for fastcc functions.
llvm-svn: 42925
2007-10-12 19:37:31 +00:00
Dale Johannesen
61c574fc51
ppc long double. Implement fabs and fneg.
...
llvm-svn: 42924
2007-10-12 19:02:17 +00:00
Evan Cheng
409fa443fc
Update.
...
llvm-svn: 42922
2007-10-12 18:22:55 +00:00
Chris Lattner
e6f1c3813d
don't use intptr_t without including it.
...
llvm-svn: 42921
2007-10-12 18:16:23 +00:00
Chris Lattner
ad618f66e6
Fix a bug in my patch last night that broke InstCombine/2007-10-12-Crash.ll
...
llvm-svn: 42920
2007-10-12 18:05:47 +00:00
Dale Johannesen
a1a4a9ebfa
Implement i64->ppcf128 conversions.
...
llvm-svn: 42919
2007-10-12 17:52:03 +00:00
Chris Lattner
4c461477bd
Make this compute the correct offset, handling alignment of the element
...
pointer correctly.
llvm-svn: 42918
2007-10-12 17:49:52 +00:00
Evan Cheng
1410b8512c
Did mean to leave this in. INSERT_SUBREG isn't being coalesced yet.
...
llvm-svn: 42916
2007-10-12 17:16:50 +00:00
Neil Booth
d502a82092
Remove duplicate comment.
...
llvm-svn: 42913
2007-10-12 16:05:57 +00:00
Neil Booth
b93d90e98c
Implement correctly-rounded decimal->binary conversion, i.e. conversion
...
from user input strings.
Such conversions are more intricate and subtle than they may appear;
it is unlikely I have got it completely right first time. I would
appreciate being informed of any bugs and incorrect roundings you
might discover.
llvm-svn: 42912
2007-10-12 16:02:31 +00:00
Neil Booth
e9dbe094aa
Remove a field that was never used.
...
llvm-svn: 42911
2007-10-12 15:35:10 +00:00
Neil Booth
146fdb3eeb
If we're trying to be arbitrary precision, unsigned char clearly won't cut it. Needed for dec->bin conversions.
...
llvm-svn: 42910
2007-10-12 15:33:27 +00:00
Neil Booth
7e74b17ad2
Don't attempt to mask no bits
...
llvm-svn: 42909
2007-10-12 15:31:31 +00:00
Dan Gohman
dc35bd79ca
Change the names used for internal labels to use the current
...
function symbol name instead of a codegen-assigned function
number.
Thanks Evan! :-)
llvm-svn: 42908
2007-10-12 14:53:36 +00:00
Dan Gohman
e3583817ac
Fix some corner cases with vectors in copyToRegs and copyFromRegs.
...
llvm-svn: 42907
2007-10-12 14:33:11 +00:00
Dan Gohman
4f056f3c10
Add support to SplitVectorOp for powi, where the second operand
...
is a scalar integer.
llvm-svn: 42906
2007-10-12 14:13:46 +00:00
Dan Gohman
8d978da3b0
Mark vector ctpop, cttz, and ctlz as Expand on x86.
...
llvm-svn: 42905
2007-10-12 14:09:42 +00:00
Dan Gohman
9013eaff9a
Mark vector pow, ctpop, cttz, and ctlz as Expand on PowerPC.
...
llvm-svn: 42904
2007-10-12 14:08:57 +00:00
Evan Cheng
11330f7526
Restrict EXTRACT_SUBREG coalescing to avoid negative performance impact.
...
llvm-svn: 42903
2007-10-12 09:15:53 +00:00
Evan Cheng
f8e28b152a
Doh.
...
llvm-svn: 42901
2007-10-12 09:10:27 +00:00
Evan Cheng
b83a379f4f
EXTRACT_SUBREG test case.
...
llvm-svn: 42900
2007-10-12 09:03:31 +00:00
Evan Cheng
aa2d6ef81d
EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like
...
(almost) a register copy. However, it always coalesced to the register of the
RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub-
register uses which adds subtle complications to load folding, spiller rewrite,
etc.
llvm-svn: 42899
2007-10-12 08:50:34 +00:00
Evan Cheng
89d5916921
Some clean up.
...
llvm-svn: 42898
2007-10-12 08:45:27 +00:00
Evan Cheng
6fd54fd19c
Cosmetic.
...
llvm-svn: 42897
2007-10-12 08:40:44 +00:00
Evan Cheng
2e3d609da6
Fix typos.
...
llvm-svn: 42896
2007-10-12 08:39:02 +00:00
Evan Cheng
09c0fe0a7f
Fold load / store into MOV32to32_ and MOV16to16_.
...
llvm-svn: 42895
2007-10-12 08:38:01 +00:00
Evan Cheng
f8c23f074b
Flag MOV32to32_ with EXTRACT_SUBREG. They should not be scheduled apart.
...
llvm-svn: 42894
2007-10-12 07:55:53 +00:00
Arnold Schwaighofer
9653e677d5
Added missing -march=x86 flag.
...
llvm-svn: 42893
2007-10-12 07:49:48 +00:00
Gabor Greif
5d8f7e0cc7
eliminate warning
...
llvm-svn: 42892
2007-10-12 07:44:54 +00:00
Chris Lattner
d8675e4915
Fix some 80 column violations.
...
Fix DecomposeSimpleLinearExpr to handle simple constants better.
Don't nuke gep(bitcast(allocation)) if the bitcast(allocation) will
fold the allocation. This fixes PR1728 and Instcombine/malloc3.ll
llvm-svn: 42891
2007-10-12 05:30:59 +00:00
Chris Lattner
3e99eb25ee
testcase for PR1728
...
llvm-svn: 42890
2007-10-12 05:29:53 +00:00
Chris Lattner
7119397fa1
make operator== work with non-equal sized bitvectors, as long as
...
the extra bits are all zeros. This allows "010" and "010000" to be
treated as equal.
llvm-svn: 42889
2007-10-12 03:48:59 +00:00
Dale Johannesen
05ff9e8cda
PPC long double. Implement a couple more conversions.
...
llvm-svn: 42888
2007-10-12 01:37:08 +00:00
Dan Gohman
be37007e64
Add intrinsics for sin, cos, and pow. These use llvm_anyfloat_ty, and so
...
may be overloaded with vector types. And add a testcase for codegen for
these.
llvm-svn: 42885
2007-10-12 00:01:22 +00:00
Dan Gohman
2a7de41682
Codegen support for vector intrinsics.
...
Factor out the code that expands the "nasty scalar code" for unrolling
vectors into a separate routine, teach it how to handle mixed
vector/scalar operands, as seen in powi, and use it for several operators,
including sin, cos, powi, and pow.
Add support in SplitVectorOp for fpow, fpowi and for several unary
operators.
llvm-svn: 42884
2007-10-11 23:57:53 +00:00
Dale Johannesen
6472eb63c2
Implement ppc long double->uint conversion.
...
Make ppc long double constants print.
llvm-svn: 42882
2007-10-11 23:32:15 +00:00
Dan Gohman
482732af9d
Set ISD::FPOW to Expand.
...
llvm-svn: 42881
2007-10-11 23:21:31 +00:00
Dan Gohman
fd66486950
Add runtime library names for pow.
...
llvm-svn: 42880
2007-10-11 23:09:10 +00:00
Dan Gohman
daee002438
Add an ISD::FPOW node type.
...
llvm-svn: 42879
2007-10-11 23:06:37 +00:00
Dan Gohman
3554448947
Add an explicit target triple to make this test behave as expected on
...
non-Apple hosts. And use the count script instead of wc + grep.
llvm-svn: 42878
2007-10-11 23:04:36 +00:00
Ted Kremenek
3b74526054
Provided accessors to internal allocator for ImutAVLTree and ImmutableSet.
...
Added postfix ++,-- support for ImmutableSet::iterator.
llvm-svn: 42877
2007-10-11 21:51:04 +00:00
Dale Johannesen
62f65edc32
Add missing argument to PALIGNR
...
llvm-svn: 42874
2007-10-11 20:58:37 +00:00
Gabor Greif
cb6832efe0
Fix an assertion abort on sparc. malloc(0) is allowed to
...
return NULL.
llvm-svn: 42871
2007-10-11 19:40:35 +00:00
Arnold Schwaighofer
9ccea99165
Added tail call optimization to the x86 back end. It can be
...
enabled by passing -tailcallopt to llc. The optimization is
performed if the following conditions are satisfied:
* caller/callee are fastcc
* elf/pic is disabled OR
elf/pic enabled + callee is in module + callee has
visibility protected or hidden
llvm-svn: 42870
2007-10-11 19:40:01 +00:00
Arnold Schwaighofer
29cfef59ff
Adding myself
...
llvm-svn: 42869
2007-10-11 18:54:49 +00:00
Dale Johannesen
007aa378ad
Next PPC long double bits. First cut at constants.
...
No compile-time support for constant operations yet,
just format transformations. Make readers and
writers work. Split constants into 2 doubles in
Legalize.
llvm-svn: 42865
2007-10-11 18:07:22 +00:00
Devang Patel
899cc56612
Lower memcpy if it makes sense.
...
llvm-svn: 42864
2007-10-11 17:21:57 +00:00
Chris Lattner
bbd5530754
make bitvector &= do the right thing if vectors have mismatched length.
...
llvm-svn: 42860
2007-10-11 06:12:33 +00:00
Chris Lattner
fc668d1233
Add a new use_iterator::atEnd() method, which allows us to shrink
...
pred_iterator down to a single ivar.
llvm-svn: 42859
2007-10-11 04:18:11 +00:00
Ted Kremenek
41eee516d7
Added iterators to ImmutableSet.
...
llvm-svn: 42851
2007-10-11 00:14:49 +00:00
Ted Kremenek
6a97cf6d65
Added some doxygen comments to ImmutableSet.
...
llvm-svn: 42850
2007-10-10 23:47:03 +00:00
Ted Kremenek
abd77cccb8
Removed uninformative assertions that catch problems that will
...
fire anyway at runtime due to a NULL dereference.
llvm-svn: 42848
2007-10-10 23:35:04 +00:00
Ted Kremenek
4d984579da
Removed "height" of an AVL tree node from its Profile. This is
...
implicitly captured by using the addresses of its children in the
profile.
llvm-svn: 42847
2007-10-10 23:32:01 +00:00
Ted Kremenek
4479f86c0f
Removed spurious forward declaration to a structure that will no longer be used.
...
llvm-svn: 42839
2007-10-10 20:45:34 +00:00
Ted Kremenek
45f3bb8239
Added some doxygen comments to a few methods of ImutAVLTree.
...
llvm-svn: 42837
2007-10-10 20:44:21 +00:00
Hartmut Kaiser
04bd66bd43
Updated VC++ build system.
...
llvm-svn: 42835
2007-10-10 19:50:09 +00:00
Ted Kremenek
6c5107ced1
Added preliminary support for iterators in ImutAVLTree.
...
Implemented ImutAVLTree::isEqual.
llvm-svn: 42833
2007-10-10 18:11:16 +00:00
Chris Lattner
d9c9c919da
Fix CodeGen/Generic/BasicInstrs.llx on sparc by marking divrem
...
illegal. Thanks to gabor for pointing this out!
llvm-svn: 42832
2007-10-10 18:10:57 +00:00
Ted Kremenek
0818f6e7e4
Renamed internal method "Create" of ImutAVLTree to "CreateNode".
...
llvm-svn: 42825
2007-10-10 16:27:33 +00:00
Duncan Sands
56ab90d3ad
Correct swapped arguments to getConstant.
...
llvm-svn: 42824
2007-10-10 09:54:50 +00:00
Bill Wendling
f7c7ed2740
Fix 80-column violations
...
llvm-svn: 42823
2007-10-10 05:45:59 +00:00
Dale Johannesen
666323eacd
Next PPC long double bits: ppcf128->i32 conversion.
...
Surprisingly complicated.
Adds getTargetNode for 2 outputs, no inputs (missing).
llvm-svn: 42822
2007-10-10 01:01:31 +00:00
Evan Cheng
a9830a04eb
Bad choice of variable name.
...
llvm-svn: 42821
2007-10-10 00:11:40 +00:00
Evan Cheng
ad55a6079a
Fix an extremely stupid bug that prevented first round of coalescing (physical registers only) from happening.
...
llvm-svn: 42820
2007-10-09 23:36:27 +00:00
Ted Kremenek
230c6cc516
Modified XCode project to contain...
...
ADT/DenseSet.h
ADT/ImmutableMap.h
ADT/ImmutableSet.h
llvm-svn: 42816
2007-10-09 21:49:49 +00:00
Chris Lattner
f5ea386698
Add new MemoryBuffer::getMemBufferCopy method.
...
llvm-svn: 42815
2007-10-09 21:46:38 +00:00
Devang Patel
1999d22b7f
Fix indentation.
...
llvm-svn: 42814
2007-10-09 21:41:00 +00:00
Ted Kremenek
12bfa1ccbc
Added implementation of immutable (functional) maps and sets, as
...
implemented on top of a functional AVL tree. The AVL balancing code
is inspired by the OCaml implementation of Map, which also uses a functional
AVL tree.
Documentation is currently limited and cleanups are planned, but this code
compiles and has been tested.
llvm-svn: 42813
2007-10-09 21:38:09 +00:00
Devang Patel
2af23f976b
Do not walk invalid iterator.
...
llvm-svn: 42812
2007-10-09 21:31:36 +00:00
Devang Patel
530f975cf0
Add LLVMFoldingBuilder
...
llvm-svn: 42806
2007-10-09 19:49:19 +00:00
Dan Gohman
850ff11022
Remove an unnecessary friend declaration.
...
llvm-svn: 42805
2007-10-09 18:39:48 +00:00
Chris Lattner
fc16c0a026
update prototype, fixing build error
...
llvm-svn: 42789
2007-10-09 16:27:44 +00:00
Dan Gohman
66966403ce
Pass argc by value, not by reference, since it isn't modified.
...
llvm-svn: 42788
2007-10-09 16:04:57 +00:00
Dan Gohman
e8c8ef5234
LowerIntegerDivOrRem no longer exists.
...
llvm-svn: 42787
2007-10-09 15:45:13 +00:00
Dan Gohman
51554bf30e
Fix grammar in a comment.
...
llvm-svn: 42786
2007-10-09 15:44:37 +00:00
Dan Gohman
6d28778bfd
This is done.
...
llvm-svn: 42785
2007-10-09 15:42:21 +00:00
Dan Gohman
678387a299
These two tests now require only two multiply instructions,
...
instead of four.
llvm-svn: 42784
2007-10-09 15:39:37 +00:00
Evan Cheng
82bc90ac60
Under 64-bit mode use LEA64_32r instead of LEA64r to save a byte.
...
llvm-svn: 42783
2007-10-09 07:14:53 +00:00
Chris Lattner
38d49f5d90
Fix problems where DenseMap used operator!= instead of correctly
...
calling the traits implementation of isEqual.
llvm-svn: 42782
2007-10-09 05:42:12 +00:00
Chris Lattner
5c50f59690
Change a #include into a forward declaration
...
llvm-svn: 42781
2007-10-09 03:40:30 +00:00
Bruno Cardoso Lopes
66d9572ced
Position Independent Code (PIC) support [3]
...
llvm-svn: 42780
2007-10-09 03:15:11 +00:00
Bruno Cardoso Lopes
35d86e60b6
Position Independent Code (PIC) support [2]
...
- Added a function to hold the stack location
where GP must be stored during LowerCALL
- AsmPrinter now emits directives based on
relocation type
- PIC_ set to default relocation type (same as GCC)
llvm-svn: 42779
2007-10-09 03:01:19 +00:00
Bruno Cardoso Lopes
5cef9cfd09
Position Independent Code (PIC) support [1]
...
- Modified instruction format to handle pseudo instructions
- Added LoadAddr SDNode to load symbols.
llvm-svn: 42778
2007-10-09 02:55:31 +00:00
Evan Cheng
3b3e6097a3
Update test.
...
llvm-svn: 42775
2007-10-08 22:20:32 +00:00
Evan Cheng
f5ec10b64c
Bug fix. X86 was emitting redundant setcc and test instructions before a conditional move.
...
llvm-svn: 42774
2007-10-08 22:16:29 +00:00
Dan Gohman
5942e5a5fb
Call getFunctionNumber() instead of referencing FunctionNumber directly,
...
for consistency.
llvm-svn: 42769
2007-10-08 21:27:12 +00:00
Dan Gohman
ac546cc28f
Mark the prefetch intrinsic as IntrWriteArgMem, instead of the
...
default of IntrWriteMem, to at least indicate that it doesn't
"capture" the argument pointer.
llvm-svn: 42768
2007-10-08 21:15:07 +00:00
Dan Gohman
a24b431b27
These two tests now require only three multiply instructions,
...
instead of four.
llvm-svn: 42765
2007-10-08 20:48:12 +00:00
Chris Lattner
104c48ab8f
Various improvements to the documentation, contributed by
...
Joshua Haberman!
llvm-svn: 42763
2007-10-08 18:42:45 +00:00
Dan Gohman
a160361c85
Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} to
...
use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code
associated with these operators into target-independent in LegalizeDAG.cpp
and TargetLowering.cpp.
llvm-svn: 42762
2007-10-08 18:33:35 +00:00
Evan Cheng
18109c88c3
Allow x86 compare to be commutable by default.
...
llvm-svn: 42761
2007-10-08 18:27:46 +00:00
Gordon Henriksen
44dd8fbd26
C and Objective Caml bindings for PHINode::addIncoming etc.
...
llvm-svn: 42760
2007-10-08 18:14:39 +00:00
Dan Gohman
5c6d0c3b99
DAGCombiner support for UDIVREM/SDIVREM and UMUL_LOHI/SMUL_LOHI.
...
Check if one of the two results unneeded so see if a simpler operator
could bs used. Also check to see if each of the two computations could be
simplified if they were split into separate operators. Factor out the code
that calls visit() so that it can be used for this purpose.
llvm-svn: 42759
2007-10-08 17:57:15 +00:00
Evan Cheng
4c73befe28
LLVM does not use the old style simple isel any more.
...
llvm-svn: 42758
2007-10-08 17:54:24 +00:00
Evan Cheng
acc8b68e5f
Remove debugging printf to get build going on x86-64.
...
llvm-svn: 42757
2007-10-08 17:49:43 +00:00
Dan Gohman
71f0d7d76e
When we start enabling SMUL_LOHI/UMUL_LOHI or SDIVREM/UDIVREM in
...
target-indepenent lowering, don't use them on PowerPC.
llvm-svn: 42755
2007-10-08 17:28:24 +00:00
Dan Gohman
b08c8bfe41
Add convenience overloads of SelectionDAG::getNode that take a SDVTList
...
and individual SDOperand operands.
llvm-svn: 42753
2007-10-08 15:49:58 +00:00
Dan Gohman
2c6a821fd7
Move the space in overview output for commands out of each of the
...
commands and into the common code.
llvm-svn: 42752
2007-10-08 15:45:12 +00:00
Dan Gohman
afedc063ab
Simplify getIntPtrType, allowing it to work for arbitrary pointer sizes.
...
llvm-svn: 42751
2007-10-08 15:16:25 +00:00
Dan Gohman
5e79a6108f
Use correct parentheses with the '&& "..."' idiom in an assert.
...
llvm-svn: 42750
2007-10-08 15:13:30 +00:00
Dan Gohman
fadf40a655
In -debug mode, dump SelectionDAGs both before and after the
...
optimization passes.
llvm-svn: 42749
2007-10-08 15:12:17 +00:00
Dan Gohman
ea3c73629f
Fix grammar in a comment.
...
llvm-svn: 42748
2007-10-08 15:10:04 +00:00
Dan Gohman
13ab93efde
Add explicit keywords.
...
llvm-svn: 42747
2007-10-08 15:08:41 +00:00
Neil Booth
49c6aab7b8
Use APInt::tcExtract. It's cleaner, and works :)
...
llvm-svn: 42746
2007-10-08 14:39:42 +00:00
Neil Booth
b618216e56
Add a new function tcExtract for extracting a bignum from an
...
arbitrary range of bits embedded in the middle of another bignum.
This kind of operation is desirable in many cases of software
floating point, e.g. converting bignum integers to floating point
numbers of fixed precision (you want to extract the precision most
significant bits).
Elsewhere, add an assertion, and exit the shift functions early if
the shift count is zero.
llvm-svn: 42745
2007-10-08 13:47:12 +00:00
Gordon Henriksen
acf684315e
Fixed downrev Ocaml compatibility.
...
llvm-svn: 42744
2007-10-08 12:16:59 +00:00
Owen Anderson
74529b7d5f
Begin the process of allowing DomTree on MBB's. Step One: template DomTreeNode by making it a typedef of a templated DomTreeNodeBase.
...
llvm-svn: 42743
2007-10-08 07:44:39 +00:00
Evan Cheng
21a58a72c5
Kill cycle of an live range is always the last use index + 1.
...
llvm-svn: 42742
2007-10-08 06:59:30 +00:00
Chris Lattner
bcd30bb0cd
Allow passes to just pass up "FunctionPass(&ID)" instead of "FunctionPass((intptr_t)&ID)"
...
llvm-svn: 42741
2007-10-08 03:45:44 +00:00
Gordon Henriksen
783f7bbabd
C and Objective Caml bindings for getFunction and getNamedGlobal. Also enhanced
...
the Objective Caml 'declare_*' functions to behave more or less like
getOrInsertFunction.
llvm-svn: 42740
2007-10-08 03:45:09 +00:00
Chris Lattner
b20757d578
disable this entirely: it is causing use of invalidated iterators and infinite looping.
...
llvm-svn: 42739
2007-10-07 22:00:31 +00:00
Chris Lattner
8dd66ab3b2
Fix many regressions on x86 by avoiding dereferencing the end iterator.
...
llvm-svn: 42738
2007-10-07 21:53:12 +00:00
Chris Lattner
7cdae91966
Finish off PR1723, by working around some strange compiler bug.
...
llvm-svn: 42737
2007-10-07 17:57:10 +00:00
Gordon Henriksen
751ebf7b9a
C and Objective Caml bindings for GlobalVariable::isConstant.
...
llvm-svn: 42736
2007-10-07 17:31:42 +00:00
Neil Booth
03f58ab706
Add back convertFromSignExtendedInteger.
...
llvm-svn: 42735
2007-10-07 12:15:41 +00:00
Neil Booth
ba205229e7
Now that convertFromUnsignedParts has a sane, constant interface,
...
convertFromZeroExtendedInteger can be simplified as it doesn't need
to make a copy of the source bignum.
llvm-svn: 42734
2007-10-07 12:10:57 +00:00
Neil Booth
6c1c8588ae
Reimplement convertFromUnsignedInteger so it is passed a const bignum.
...
It used to modify its argument in-place.
This interface is saner and the implementation more efficient. It will
be needed for decimal->binary conversion.
llvm-svn: 42733
2007-10-07 12:07:53 +00:00
Neil Booth
5f00973393
convertFromInteger, as originally written, expected sign-extended
...
input. APInt unfortunately zero-extends signed integers, so Dale
modified the function to expect zero-extended input. Make this
assumption explicit in the function name.
llvm-svn: 42732
2007-10-07 11:45:55 +00:00
Neil Booth
d3985924f4
combineLostFractions does not need to be a member function
...
llvm-svn: 42729
2007-10-07 08:51:21 +00:00
Daniel Berlin
fb6a79cdd5
Some more problems noticed by Curtis
...
llvm-svn: 42717
2007-10-07 04:47:57 +00:00
Gordon Henriksen
ffb4876cfb
C and Objective Caml bindings for PATypeHolder.
...
llvm-svn: 42713
2007-10-07 00:13:35 +00:00
Gordon Henriksen
c3d661a0ee
Bindings for the verifier.
...
llvm-svn: 42707
2007-10-06 21:00:36 +00:00
Gordon Henriksen
8689fa69e2
Deleting some unnecessary glue.
...
llvm-svn: 42702
2007-10-06 17:10:44 +00:00
Gordon Henriksen
fc560cef9a
Adopting a uniform naming convention for type constructors in
...
bindings (part le deux).
llvm-svn: 42701
2007-10-06 16:56:09 +00:00
Anton Korobeynikov
67ac2de8bf
Oops, I really wanted to commit this part also :)
...
llvm-svn: 42700
2007-10-06 16:39:43 +00:00
Anton Korobeynikov
c59496f737
Move merge code into new helper function.
...
llvm-svn: 42699
2007-10-06 16:17:49 +00:00
Gordon Henriksen
ed7beaa3fa
Adopting a uniform naming convention for type constructors in bindings.
...
llvm-svn: 42698
2007-10-06 16:05:20 +00:00
Gordon Henriksen
1046c73d12
Adopting a uniform naming convention for constant constructors in bindings.
...
llvm-svn: 42697
2007-10-06 15:11:06 +00:00
Gordon Henriksen
7ce3176696
Adding C and Ocaml bindings for ConstantExpr.
...
llvm-svn: 42696
2007-10-06 14:29:36 +00:00
Anton Korobeynikov
8d8f94c278
Include DataTypes.h to provide intptr_t type. This fixes OpenBSD compilation of this file.
...
Inspired by Laurence Tratt's patch
llvm-svn: 42695
2007-10-06 13:07:11 +00:00
Evan Cheng
0de312dd7d
Reapply 42677.
...
llvm-svn: 42692
2007-10-06 08:19:55 +00:00
Evan Cheng
8ff5335bb6
Oops. Forgot this.
...
llvm-svn: 42691
2007-10-06 08:09:29 +00:00
Neil Booth
32897f5eb0
Cleaner, more general exponent output.
...
llvm-svn: 42690
2007-10-06 07:29:25 +00:00
Chris Lattner
2a9bcb9ea7
silence warnings in no-assert build.
...
llvm-svn: 42687
2007-10-06 06:13:42 +00:00
Chris Lattner
82217bd155
revert evan's patch until the header is committed
...
llvm-svn: 42686
2007-10-06 06:08:17 +00:00
Evan Cheng
f4b5d491df
Added DAG xforms. e.g.
...
(vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr)
(vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32 load $addr)
Remove x86 specific patterns.
llvm-svn: 42677
2007-10-06 02:46:29 +00:00
Dale Johannesen
f864ac96d8
Next powerpc long double bits. Comparisons work,
...
although not well, and shortening FP converts.
llvm-svn: 42672
2007-10-06 01:24:11 +00:00
Dale Johannesen
bcfa7c1255
Make test work on non-x86 hosts.
...
llvm-svn: 42671
2007-10-06 01:22:39 +00:00
Neil Booth
c8b650ab14
Fix and clarify some comments.
...
llvm-svn: 42670
2007-10-06 00:43:45 +00:00
Neil Booth
0ea72a9a91
Generalize tcFullMultiply so that the operands can be of differing
...
part widths. Also, return the number of parts actually required to
hold the result's value.
Remove an over-cautious condition from rounding of float->hex conversion.
llvm-svn: 42669
2007-10-06 00:24:48 +00:00
Gordon Henriksen
1d0d24c4fd
Wrapping Value::dump.
...
llvm-svn: 42668
2007-10-06 00:08:49 +00:00
Gordon Henriksen
7330acdec7
Removing the silly CHelpers header by rolling wrap and unwrap into the C
...
bindings headers themselves, hidden behind #ifdef __cplusplus.
llvm-svn: 42666
2007-10-05 23:59:36 +00:00
Evan Cheng
5ee9cf6bca
Test case for 3-address conversion.
...
llvm-svn: 42664
2007-10-05 23:33:09 +00:00
Evan Cheng
1151ffde70
Commute x86 cmove instructions by swapping the operands and change the condition
...
to its inverse.
Testing this as llcbeta
llvm-svn: 42661
2007-10-05 23:13:21 +00:00
Evan Cheng
42a13757de
This is done.
...
llvm-svn: 42656
2007-10-05 22:34:59 +00:00
Evan Cheng
484cab7a2f
Enable convertToThreeAddress for X86 by default.
...
llvm-svn: 42655
2007-10-05 22:31:10 +00:00
Devang Patel
a69f987b66
Fix bug in updating dominance frontier after loop
...
unswitch when frontier includes basic blocks that
are not inside loop.
llvm-svn: 42654
2007-10-05 22:29:34 +00:00
Evan Cheng
d3ccf00870
INC64_32r -> LEA64_32r is better than INC64_32r -> LEA32r, but it still can
...
cause performance degradation.
llvm-svn: 42653
2007-10-05 21:55:32 +00:00
Evan Cheng
fa2c828687
In 64-bit mode, avoid using leal with 32-bit 32-bit address size, e.g.
...
leal 1(%ecx), %edi, which requires 67H prefix.
llvm-svn: 42647
2007-10-05 20:34:26 +00:00
Dale Johannesen
c0154c06d6
First round of ppc long double. call/return and
...
basic arithmetic works.
Rename RTLIB long double functions to distinguish
different flavors of long double; the lib functions
have different names, alas.
llvm-svn: 42644
2007-10-05 20:04:43 +00:00
Evan Cheng
aac0f8e351
Add support to convert more 64-bit instructions to 3-address instructions.
...
llvm-svn: 42642
2007-10-05 18:20:36 +00:00
Evan Cheng
97eba74a52
ADC and SBB uses EFLAGS.
...
llvm-svn: 42640
2007-10-05 17:59:57 +00:00
Chris Lattner
f85527e131
Mark count method const.
...
llvm-svn: 42639
2007-10-05 17:40:38 +00:00
Dan Gohman
43c29dce18
Change a few more spaces to tabs in assembly output.
...
llvm-svn: 42638
2007-10-05 15:58:41 +00:00
Dan Gohman
b074f23dff
Change a space to a tab in the assembly output of a .globl directive
...
for consistency.
llvm-svn: 42637
2007-10-05 15:54:58 +00:00
Dan Gohman
12334acbfb
Legalize support for MUL_LOHI and DIVREM.
...
llvm-svn: 42636
2007-10-05 14:17:22 +00:00
Dan Gohman
2682bb6df2
Fix a typo in a comment.
...
llvm-svn: 42635
2007-10-05 14:11:58 +00:00
Dan Gohman
1a77dfba15
Provide names for MUL_LOHI and DIVREM operators.
...
llvm-svn: 42634
2007-10-05 14:11:04 +00:00
Dan Gohman
3c2c1c3cce
SMUL_LOHI and UMUL_LOHI are commutative.
...
llvm-svn: 42633
2007-10-05 14:09:33 +00:00
Dan Gohman
5b89b1ef8f
Define target-indepenent SDNode types for multiply and divide that
...
produce two results.
llvm-svn: 42632
2007-10-05 14:07:56 +00:00
Duncan Sands
99452793ac
Fix typo in comment.
...
llvm-svn: 42631
2007-10-05 10:37:00 +00:00
Evan Cheng
a8a9c15e30
Testing convertToThreeeAddress as X86 llcbeta.
...
llvm-svn: 42630
2007-10-05 08:04:01 +00:00
Daniel Berlin
f86366ec2d
Fix intersectWithComplement bug noticed by Curtis Dunham
...
Optimize |= case for empty RHS
llvm-svn: 42629
2007-10-05 05:10:53 +00:00
Evan Cheng
90a4185b5f
New test case.
...
llvm-svn: 42628
2007-10-05 01:44:22 +00:00
Evan Cheng
84d0ebc10a
Chain producing nodes cannot be moved, not chain reading nodes.
...
llvm-svn: 42627
2007-10-05 01:42:35 +00:00
Evan Cheng
991cf47221
Oops. Didn't mean to leave this in.
...
llvm-svn: 42626
2007-10-05 01:39:40 +00:00
Evan Cheng
79e9713b11
If a node that defines a physical register that is expensive to copy. The
...
scheduler will try a number of tricks in order to avoid generating the
copies. This may not be possible in case the node produces a chain value
that prevent movement. Try unfolding the load from the node before to allow
it to be moved / cloned.
llvm-svn: 42625
2007-10-05 01:39:18 +00:00
Evan Cheng
a851e2b92e
Added storeRegToAddr, loadRegFromAddr, and unfoldMemoryOperand's.
...
llvm-svn: 42624
2007-10-05 01:34:55 +00:00
Evan Cheng
6912b50958
Not needed any more.
...
llvm-svn: 42623
2007-10-05 01:34:14 +00:00
Evan Cheng
1ef9edce5f
Forgot these.
...
llvm-svn: 42622
2007-10-05 01:33:45 +00:00
Evan Cheng
f4cf5dcdd2
- Added a few target hooks to generate load / store instructions from / to any
...
address (not just from / to frameindexes).
- Added target hooks to unfold load / store instructions / SDNodes into separate
load, data processing, store instructions / SDNodes.
llvm-svn: 42621
2007-10-05 01:32:41 +00:00
Evan Cheng
4852303bdb
Add a variant of getTargetNode() that takes a vector of MVT::ValueType.
...
llvm-svn: 42620
2007-10-05 01:10:49 +00:00
Evan Cheng
fd11ef4665
Silence a warning.
...
llvm-svn: 42619
2007-10-05 01:09:32 +00:00
Daniel Berlin
f5009110bf
Fix the previous bug a slightly different way (by modifying how find_next works)
...
llvm-svn: 42613
2007-10-04 21:27:17 +00:00
Daniel Berlin
c1973961c9
Fix off by one error in iterator
...
llvm-svn: 42612
2007-10-04 21:18:20 +00:00
Bill Wendling
eaa909f08e
Support Objective C++ too.
...
llvm-svn: 42610
2007-10-04 18:47:25 +00:00
Bill Wendling
c20518d0df
Added testcase for creation of metadata with null pointers.
...
llvm-svn: 42609
2007-10-04 18:46:06 +00:00
Chris Lattner
1f2b5f0e13
add a note.
...
llvm-svn: 42607
2007-10-04 15:47:27 +00:00
Bill Wendling
2fba4a85ea
un-XFAIL this test.
...
llvm-svn: 42606
2007-10-04 09:33:08 +00:00
Daniel Berlin
ffffead7df
It helps a lot when you check for the end of your list before randomly
...
dereferencing things.
llvm-svn: 42605
2007-10-04 05:29:36 +00:00
Daniel Berlin
2738730c0f
Make SparseBitVector::set actually work properly when sets are not in ascending or descending order.
...
llvm-svn: 42604
2007-10-04 05:25:51 +00:00
Gordon Henriksen
14d7680b00
Do use the actual ocaml stdlib (not the install dir) to find the
...
caml/*.h headers.
llvm-svn: 42599
2007-10-04 00:07:50 +00:00
Neil Booth
8f1946fa22
Add APFloat -> hexadecimal string conversion, as per %a and %A in C99.
...
Useful for diagnostics and debugging.
llvm-svn: 42598
2007-10-03 22:26:02 +00:00
Owen Anderson
8313e75ea7
Completely merge the implementation details of DomTree and PostDomTree.
...
Also, add a FIXME for a bug in PostDomTree calculation I noticed while writing this,
llvm-svn: 42593
2007-10-03 21:25:45 +00:00
Owen Anderson
87337924d5
Add a GraphTraits partial specialization to make the inverse of an inverse be the same as the underlying graph.
...
llvm-svn: 42592
2007-10-03 21:24:38 +00:00
Devang Patel
3574759d85
Fix 80 col violation.
...
llvm-svn: 42591
2007-10-03 21:17:43 +00:00
Devang Patel
e192e32577
Refactor code in a separate method.
...
llvm-svn: 42590
2007-10-03 21:16:08 +00:00
Chris Lattner
99f6ab7e4c
Add initial iterator support for folding set.
...
llvm-svn: 42589
2007-10-03 21:12:09 +00:00
Chris Lattner
f0e5011d21
Clarify that shifts that are too large are undefined.
...
llvm-svn: 42588
2007-10-03 21:01:14 +00:00
Chris Lattner
8c41ed61d1
Simplify implementation of the FoldingSet circular list, a necessary step
...
to giving it iterators.
llvm-svn: 42586
2007-10-03 20:45:43 +00:00