Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6b2c4f6143 
								
							 
						 
						
							
							
								
								instead of aborting on shifts of i1, just implicitly fold them.  
							
							 
							
							... 
							
							
							
							The dag combiner can produce a shift of i1 when folding icmp i1's.
llvm-svn: 53030 
							
						 
						
							2008-07-02 17:01:57 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								501f207bdf 
								
							 
						 
						
							
							
								
								No need to use std::distance.  We can just count the number of operands  
							
							 
							
							... 
							
							
							
							much more cheaply.
llvm-svn: 52990 
							
						 
						
							2008-07-01 22:34:11 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								fb19f9402b 
								
							 
						 
						
							
							
								
								Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating  
							
							 
							
							... 
							
							
							
							the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.
Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.
This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.
llvm-svn: 52943 
							
						 
						
							2008-07-01 00:05:16 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5c73a886b4 
								
							 
						 
						
							
							
								
								Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its  
							
							 
							
							... 
							
							
							
							purpose, and give it a custom SDNode subclass so that it doesn't
need to have line number, column number, filename string, and
directory string, all existing as individual SDNodes to be the
operands.
This was the only user of ISD::STRING, StringSDNode, etc., so
remove those and some associated code.
This makes stop-points considerably easier to read in
-view-legalize-dags output, and reduces overhead (creating new
nodes and copying std::strings into them) on code containing
debugging information.
llvm-svn: 52924 
							
						 
						
							2008-06-30 20:59:49 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								1ae6ef83ee 
								
							 
						 
						
							
							
								
								Revert the SelectionDAG optimization that makes  
							
							 
							
							... 
							
							
							
							it impossible to create a MERGE_VALUES node with
only one result: sometimes it is useful to be able
to create a node with only one result out of one of
the results of a node with more than one result, for
example because the new node will eventually be used
to replace a one-result node using ReplaceAllUsesWith,
cf X86TargetLowering::ExpandFP_TO_SINT.  On the other
hand, most users of MERGE_VALUES don't need this and
for them the optimization was valuable.  So add a new
utility method getMergeValues for creating MERGE_VALUES
nodes which by default performs the optimization.
Change almost everywhere to use getMergeValues (and
tidy some stuff up at the same time).
llvm-svn: 52893 
							
						 
						
							2008-06-30 10:19:09 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								da3db11db3 
								
							 
						 
						
							
							
								
								- Re-apply 52748 and friends with fix. GetConstantStringInfo() returns an empty string for ConstantAggregateZero case which surprises selectiondag.  
							
							 
							
							... 
							
							
							
							- Correctly handle memcpy from constant string which is zero-initialized.
llvm-svn: 52891 
							
						 
						
							2008-06-30 07:31:25 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								a7c583d584 
								
							 
						 
						
							
							
								
								Revert (52748 and friends):  
							
							 
							
							... 
							
							
							
							Move GetConstantStringInfo to lib/Analysis. Remove
string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.
This unbreaks llvm-gcc bootstrap.
llvm-svn: 52884 
							
						 
						
							2008-06-29 17:57:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3cffa471d9 
								
							 
						 
						
							
							
								
								Really fix the bootstrap failure.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52854 
							
						 
						
							2008-06-28 06:24:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1701328675 
								
							 
						 
						
							
							
								
								Add back the capability to include nul characters in strings with  
							
							 
							
							... 
							
							
							
							GetConstantStringInfo.  This will hopefully restore llvm-gcc to 
happy bootstrap land.
llvm-svn: 52851 
							
						 
						
							2008-06-28 05:33:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								735705bc3e 
								
							 
						 
						
							
							
								
								simplify this check, GetConstantStringInfo validates that a  
							
							 
							
							... 
							
							
							
							global is constant already.  No functionality change.
llvm-svn: 52812 
							
						 
						
							2008-06-27 03:18:41 +00:00  
						
					 
				
					
						
							
							
								 
								Eric Christopher
							
						 
						
							 
							
							
							
							
								
							
							
								d0ab9c47e6 
								
							 
						 
						
							
							
								
								Move GetConstantStringInfo to lib/Analysis. Remove  
							
							 
							
							... 
							
							
							
							string output routine from Constant. Update all
callers. Change debug intrinsic api slightly to
accomodate move of routine, these now return values
instead of strings.
llvm-svn: 52748 
							
						 
						
							2008-06-26 00:31:12 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								3fc2372d3a 
								
							 
						 
						
							
							
								
								- Fix a x86 vector isel bug: illegal transformation of a vector_shuffle into a  
							
							 
							
							... 
							
							
							
							shift.
- Add a readme entry for a missing vector_shuffle optimization that results in
  awful codegen.
llvm-svn: 52740 
							
						 
						
							2008-06-25 20:52:59 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								33ff5c8d0d 
								
							 
						 
						
							
							
								
								Add support for expanding PPC 128 bit floats.  
							
							 
							
							... 
							
							
							
							For this it is convenient to permit floats to
be used with EXTRACT_ELEMENT, so I tweaked
things to allow that.  I also added libcalls
for ppcf128 to i32 forms of FP_TO_XINT, since
they exist in libgcc and this case can certainly
occur (and does occur in the testsuite) - before
the i64 libcall was being used.  Also, the
XINT_TO_FP result seemed to be wrong when
the argument is an i128: the wrong fudge
factor was added (the i32 and i64 cases were
handled directly, but the i128 code fell
through to some generic softening code which
seemed to think it was i64 to f32!).  So I
fixed it by adding a fudge factor that I
found in my breakfast cereal.
llvm-svn: 52739 
							
						 
						
							2008-06-25 20:24:48 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								aa01afd47c 
								
							 
						 
						
							
							
								
								Remove the OrigVT member from AtomicSDNode, as it is redundant with  
							
							 
							
							... 
							
							
							
							the base SDNode's VTList.
llvm-svn: 52722 
							
						 
						
							2008-06-25 16:07:49 +00:00  
						
					 
				
					
						
							
							
								 
								Mon P Wang
							
						 
						
							 
							
							
							
							
								
							
							
								6a490371c9 
								
							 
						 
						
							
							
								
								Added MemOperands to Atomic operations since Atomics touches memory.  
							
							 
							
							... 
							
							
							
							Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub
llvm-svn: 52706 
							
						 
						
							2008-06-25 08:15:39 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								38c19aae38 
								
							 
						 
						
							
							
								
								Use clear() to zero an existing APInt.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52601 
							
						 
						
							2008-06-21 22:02:15 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								f88d50bfcc 
								
							 
						 
						
							
							
								
								add missing atomic intrinsic from gcc  
							
							 
							
							... 
							
							
							
							llvm-svn: 52270 
							
						 
						
							2008-06-14 05:48:15 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								bf17080ec2 
								
							 
						 
						
							
							
								
								Sometimes (rarely) nodes held in LegalizeTypes  
							
							 
							
							... 
							
							
							
							maps can be deleted.  This happens when RAUW
replaces a node N with another equivalent node
E, deleting the first node.  Solve this by
adding (N, E) to ReplacedNodes, which is already
used to remap nodes to replacements.  This means
that deleted nodes are being allowed in maps,
which can be delicate: the memory may be reused
for a new node which might get confused with the
old deleted node pointer hanging around in the
maps, so detect this and flush out maps if it
occurs (ExpungeNode).  The expunging operation
is expensive, however it never occurs during
a llvm-gcc bootstrap or anywhere in the nightly
testsuite.  It occurs three times in "make check":
Alpha/illegal-element-type.ll,
PowerPC/illegal-element-type.ll and
X86/mmx-shift.ll.  If expunging proves to be too
expensive then there are other more complicated
ways of solving the problem.
In the normal case this patch adds the overhead
of a few more map lookups, which is hopefully
negligable.
llvm-svn: 52214 
							
						 
						
							2008-06-11 11:42:12 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								11dd424539 
								
							 
						 
						
							
							
								
								Remove comparison methods for MVT.  The main cause  
							
							 
							
							... 
							
							
							
							of apint codegen failure is the DAG combiner doing
the wrong thing because it was comparing MVT's using
< rather than comparing the number of bits.  Removing
the < method makes this mistake impossible to commit.
Instead, add helper methods for comparing bits and use
them.
llvm-svn: 52098 
							
						 
						
							2008-06-08 20:54:56 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								f1123e58fc 
								
							 
						 
						
							
							
								
								Tighten up the abstraction slightly.  
							
							 
							
							... 
							
							
							
							llvm-svn: 52045 
							
						 
						
							2008-06-06 12:49:32 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								13237ac3b9 
								
							 
						 
						
							
							
								
								Wrap MVT::ValueType in a struct to get type safety  
							
							 
							
							... 
							
							
							
							and better control the abstraction.  Rename the type
to MVT.  To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits().  Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).
llvm-svn: 52044 
							
						 
						
							2008-06-06 12:08:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								976b1eee81 
								
							 
						 
						
							
							
								
								Fix a memcpy lowering bug. Even though the memcpy alignment is smaller than the desired alignment, the frame destination alignment may still be larger than the desired alignment. Don't change its alignment to something smaller.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51970 
							
						 
						
							2008-06-04 23:37:54 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								057240f4f0 
								
							 
						 
						
							
							
								
								Fold adds and subtracts of zero immediately, instead of waiting  
							
							 
							
							... 
							
							
							
							for dagcombine to do this.
llvm-svn: 51886 
							
						 
						
							2008-06-02 22:27:05 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								9a19f33842 
								
							 
						 
						
							
							
								
								Remove an unused variable.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51807 
							
						 
						
							2008-05-31 01:44:25 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								714663ab94 
								
							 
						 
						
							
							
								
								Expand small memmovs using inline code. Set the X86 threshold for expanding  
							
							 
							
							... 
							
							
							
							memmove to a more plausible value, now that it's actually being used.
llvm-svn: 51696 
							
						 
						
							2008-05-29 19:42:22 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								5e28227dbd 
								
							 
						 
						
							
							
								
								Implement vector shift up / down and insert zero with ps{rl}lq / ps{rl}ldq.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51667 
							
						 
						
							2008-05-29 08:22:04 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								698348dfac 
								
							 
						 
						
							
							
								
								Fix some constructs that gcc-4.4 warns about.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51591 
							
						 
						
							2008-05-27 11:50:51 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								6d5f120c5c 
								
							 
						 
						
							
							
								
								Generalize the new code in instcombine's ComputeNumSignBits for handling  
							
							 
							
							... 
							
							
							
							and/or to handle more cases (such as this add-sitofp.ll testcase), and
port it to selectiondag's ComputeNumSignBits.
llvm-svn: 51469 
							
						 
						
							2008-05-23 02:28:01 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								fe13618682 
								
							 
						 
						
							
							
								
								Port the fix for the select operator from instcombine's  
							
							 
							
							... 
							
							
							
							ComputeNumSignBits to SelectionDAG's ComputeNumSignBits.
llvm-svn: 51348 
							
						 
						
							2008-05-20 20:59:51 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ef377adca0 
								
							 
						 
						
							
							
								
								Make use of vector load and store operations to implement memcpy, memmove, and memset. Currently only X86 target is taking advantage of these.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51140 
							
						 
						
							2008-05-15 08:39:06 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3ab94df276 
								
							 
						 
						
							
							
								
								When bit-twiddling CondCode values for integer comparisons produces  
							
							 
							
							... 
							
							
							
							SETOEQ, is it does with (SETEQ & SETULE), map it to SETEQ.
llvm-svn: 51112 
							
						 
						
							2008-05-14 18:17:09 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1120279ae6 
								
							 
						 
						
							
							
								
								Instead of a vector load, shuffle and then extract an element. Load the element from address with an offset.  
							
							 
							
							... 
							
							
							
							pshufd $1, (%rdi), %xmm0
        movd %xmm0, %eax
=>
        movl 4(%rdi), %eax
llvm-svn: 51026 
							
						 
						
							2008-05-13 08:35:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								d78c400b5b 
								
							 
						 
						
							
							
								
								Clean up the use of static and anonymous namespaces. This turned up  
							
							 
							
							... 
							
							
							
							several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017 
							
						 
						
							2008-05-13 00:00:25 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								cfcb56091b 
								
							 
						 
						
							
							
								
								Add support for vicmp/vfcmp codegen, more legalize support coming.  
							
							 
							
							... 
							
							
							
							This is necessary to unbreak the build.
llvm-svn: 50988 
							
						 
						
							2008-05-12 19:40:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5a3eecdfd8 
								
							 
						 
						
							
							
								
								Fix a bug in the ComputeMaskedBits logic for multiply.  
							
							 
							
							... 
							
							
							
							llvm-svn: 50793 
							
						 
						
							2008-05-07 00:35:55 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								cf0e3acf16 
								
							 
						 
						
							
							
								
								Correct the value of LowBits in srem and urem handling in  
							
							 
							
							... 
							
							
							
							ComputeMaskedBits.
llvm-svn: 50692 
							
						 
						
							2008-05-06 00:51:48 +00:00  
						
					 
				
					
						
							
							
								 
								Mon P Wang
							
						 
						
							 
							
							
							
							
								
							
							
								3e58393c3d 
								
							 
						 
						
							
							
								
								Added addition atomic instrinsics and, or, xor, min, and max.  
							
							 
							
							... 
							
							
							
							llvm-svn: 50663 
							
						 
						
							2008-05-05 19:05:59 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								1962c2be6a 
								
							 
						 
						
							
							
								
								Fix a mistake in the computation of leading zeros for udiv.  
							
							 
							
							... 
							
							
							
							llvm-svn: 50591 
							
						 
						
							2008-05-02 21:30:02 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								2f83b47863 
								
							 
						 
						
							
							
								
								Fix a typo in a comment.  
							
							 
							
							... 
							
							
							
							llvm-svn: 50562 
							
						 
						
							2008-05-02 00:05:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								da44054867 
								
							 
						 
						
							
							
								
								Fix the SVOffset values for loads and stores produced by  
							
							 
							
							... 
							
							
							
							memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.
llvm-svn: 50359 
							
						 
						
							2008-04-28 17:15:20 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								72ec3f4562 
								
							 
						 
						
							
							
								
								Teach InstCombine's ComputeMaskedBits what SelectionDAG's  
							
							 
							
							... 
							
							
							
							ComputeMaskedBits knows about cttz, ctlz, and ctpop. Teach
SelectionDAG's ComputeMaskedBits what InstCombine's knows
about SRem. And teach them both some things about high bits
in Mul, UDiv, URem, and Sub. This allows instcombine and
dagcombine to eliminate sign-extension operations in
several new cases.
llvm-svn: 50358 
							
						 
						
							2008-04-28 17:02:21 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								aac27592f0 
								
							 
						 
						
							
							
								
								Check we aren't trying to convert PPC long double.  
							
							 
							
							... 
							
							
							
							This fixes the testsuite failure on ppcf128-4.ll.
llvm-svn: 49994 
							
						 
						
							2008-04-20 18:23:46 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								75c895dbc4 
								
							 
						 
						
							
							
								
								Remove the implicit conversion from SDOperandPtr to SDOperand*; this  
							
							 
							
							... 
							
							
							
							may fix a build error on Visual Studio.
llvm-svn: 49876 
							
						 
						
							2008-04-17 23:02:12 +00:00  
						
					 
				
					
						
							
							
								 
								Roman Levenstein
							
						 
						
							 
							
							
							
							
								
							
							
								a3ee1a38a3 
								
							 
						 
						
							
							
								
								Ongoing work on improving the instruction selection infrastructure:  
							
							 
							
							... 
							
							
							
							Rename SDOperandImpl back to SDOperand.
Introduce the SDUse class that represents a use of the SDNode referred by
an SDOperand. Now it is more similar to Use/Value classes.
Patch is approved by Dan Gohman.
llvm-svn: 49795 
							
						 
						
							2008-04-16 16:15:27 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5b61a288a7 
								
							 
						 
						
							
							
								
								Avoid creating MERGE_VALUES nodes for single values.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49676 
							
						 
						
							2008-04-14 18:43:25 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								2505d86783 
								
							 
						 
						
							
							
								
								Fix const-correctness issues with the SrcValue handling in the  
							
							 
							
							... 
							
							
							
							memory intrinsic expansion code.
llvm-svn: 49666 
							
						 
						
							2008-04-14 17:55:48 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								544ab2c50b 
								
							 
						 
						
							
							
								
								Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal  
							
							 
							
							... 
							
							
							
							on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.
Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.
This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.
Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.
This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.
llvm-svn: 49572 
							
						 
						
							2008-04-12 04:36:06 +00:00  
						
					 
				
					
						
							
							
								 
								Gabor Greif
							
						 
						
							 
							
							
							
							
								
							
							
								c422383e08 
								
							 
						 
						
							
							
								
								detabify  
							
							 
							
							... 
							
							
							
							llvm-svn: 49524 
							
						 
						
							2008-04-11 09:34:57 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3bc3ddd638 
								
							 
						 
						
							
							
								
								Rename MemOperand to MachineMemOperand. This was suggested by  
							
							 
							
							... 
							
							
							
							review feedback from Chris quite a while ago. No functionality
change.
llvm-svn: 49348 
							
						 
						
							2008-04-07 19:35:22 +00:00  
						
					 
				
					
						
							
							
								 
								Roman Levenstein
							
						 
						
							 
							
							
							
							
								
							
							
								51f532f92d 
								
							 
						 
						
							
							
								
								Re-commit of the r48822, where the infinite looping problem discovered  
							
							 
							
							... 
							
							
							
							by Dan Gohman is fixed.
llvm-svn: 49330 
							
						 
						
							2008-04-07 10:06:32 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								025cea1126 
								
							 
						 
						
							
							
								
								Backing out 48222 temporarily.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49124 
							
						 
						
							2008-04-03 03:13:16 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								35c7cdac07 
								
							 
						 
						
							
							
								
								Rename getAnyLoad to getLoad is suggested by Evan.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48914 
							
						 
						
							2008-03-28 09:45:24 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								f740509e58 
								
							 
						 
						
							
							
								
								Implement LegalizeTypes support for softfloat LOAD.  
							
							 
							
							... 
							
							
							
							In order to handle indexed nodes I had to introduce
a new constructor, and since I was there I factorized
the code in the various load constructors.
llvm-svn: 48894 
							
						 
						
							2008-03-27 20:23:40 +00:00  
						
					 
				
					
						
							
							
								 
								Roman Levenstein
							
						 
						
							 
							
							
							
							
								
							
							
								358e04a185 
								
							 
						 
						
							
							
								
								Use a linked data structure for the uses lists of an SDNode, just like  
							
							 
							
							... 
							
							
							
							LLVM Value/Use does and MachineRegisterInfo/MachineOperand does.
This allows constant time for all uses list maintenance operations.
The idea was suggested by Chris. Reviewed by Evan and Dan.
Patch is tested and approved by Dan.
On normal use-cases compilation speed is not affected. On very big basic
blocks there are compilation speedups in the range of 15-20% or even better. 
llvm-svn: 48822 
							
						 
						
							2008-03-26 12:39:26 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								df1690dc7c 
								
							 
						 
						
							
							
								
								Handle a special case xor undef, undef -> 0. Technically this should be transformed to undef. But this is such a common idiom (misuse) we are going to handle it.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48792 
							
						 
						
							2008-03-25 20:08:07 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								d8ea040c31 
								
							 
						 
						
							
							
								
								APIntify SelectionDAG's EXTRACT_ELEMENT code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48726 
							
						 
						
							2008-03-24 16:38:05 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								2fa75184f3 
								
							 
						 
						
							
							
								
								Another comments fixing  
							
							 
							
							... 
							
							
							
							llvm-svn: 48683 
							
						 
						
							2008-03-22 07:53:40 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								31604a62f6 
								
							 
						 
						
							
							
								
								Teach DAG combiner to commute commutable binary nodes in order to achieve sdisel CSE.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48673 
							
						 
						
							2008-03-22 01:55:50 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								d97eea372a 
								
							 
						 
						
							
							
								
								Introduce a new node for holding call argument  
							
							 
							
							... 
							
							
							
							flags.  This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines.  There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness.  As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.
llvm-svn: 48640 
							
						 
						
							2008-03-21 09:14:45 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								b72127ac4c 
								
							 
						 
						
							
							
								
								More APInt-ification.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48344 
							
						 
						
							2008-03-13 22:13:53 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								87de65fc29 
								
							 
						 
						
							
							
								
								Don't try to extract an i32 from an f64.  This  
							
							 
							
							... 
							
							
							
							getCopyToParts problem was noticed by the new
LegalizeTypes infrastructure.  In order to avoid
this kind of thing in the future I've added a
check that EXTRACT_ELEMENT is only used with
integers.  Once LegalizeTypes is up and running
most likely BUILD_PAIR and EXTRACT_ELEMENT can
be removed, in favour of using apints instead.
llvm-svn: 48294 
							
						 
						
							2008-03-12 20:30:08 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								e8fa50f63a 
								
							 
						 
						
							
							
								
								Correctly propagate thread-local flag from aliasee to alias. This fixes PR2137  
							
							 
							
							... 
							
							
							
							llvm-svn: 48257 
							
						 
						
							2008-03-11 22:38:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5c7bda440f 
								
							 
						 
						
							
							
								
								compile: double test() {}  
							
							 
							
							... 
							
							
							
							into:
_test:
	fldz
	ret
instead of:
_test:
	subl	$12, %esp
	#IMPLICIT_DEF %xmm0
	movsd	%xmm0, (%esp)
	fldl	(%esp)
	addl	$12, %esp
	ret
llvm-svn: 48213 
							
						 
						
							2008-03-11 06:21:08 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a1f25b0020 
								
							 
						 
						
							
							
								
								Teach SD some vector identities, allowing us to compile vec_set-9 into:  
							
							 
							
							... 
							
							
							
							_test3:
	movd	%rdi, %xmm1
	#IMPLICIT_DEF %xmm0
	punpcklqdq	%xmm1, %xmm0
	ret
instead of:
_test3:
	#IMPLICIT_DEF %rax
	movd	%rax, %xmm0
	movd	%rdi, %xmm1
	punpcklqdq	%xmm1, %xmm0
	ret
This is still not ideal.  There is no reason to two xmm regs.
llvm-svn: 48058 
							
						 
						
							2008-03-08 23:43:36 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								95cf661534 
								
							 
						 
						
							
							
								
								Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 48042 
							
						 
						
							2008-03-08 00:58:38 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								34173f0a43 
								
							 
						 
						
							
							
								
								80 col violation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47998 
							
						 
						
							2008-03-06 17:42:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a3cb090446 
								
							 
						 
						
							
							
								
								Constant fold SIGN_EXTEND_INREG with ashr not lshr.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47992 
							
						 
						
							2008-03-06 08:20:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								78e9cab229 
								
							 
						 
						
							
							
								
								Generalize FP constant shrinking optimization to apply to any vt  
							
							 
							
							... 
							
							
							
							except ppc long double.  This allows us to shrink constant pool
entries for x86 long double constants, which in turn allows us to
use flds/fldl instead of fldt.
llvm-svn: 47938 
							
						 
						
							2008-03-05 06:48:13 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								567d2e5b57 
								
							 
						 
						
							
							
								
								Rename isOperand() to isOperandOf() (and other similar methods). It always confuses me.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47872 
							
						 
						
							2008-03-04 00:41:45 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								10f34077f1 
								
							 
						 
						
							
							
								
								More APInt-ification.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47868 
							
						 
						
							2008-03-03 23:35:36 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								bd2fa566e4 
								
							 
						 
						
							
							
								
								More APInt-ification.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47746 
							
						 
						
							2008-02-29 01:47:35 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								f19609abe8 
								
							 
						 
						
							
							
								
								Convert the last remaining users of the non-APInt form of  
							
							 
							
							... 
							
							
							
							ComputeMaskedBits to use the APInt form, and remove the
non-APInt form.
llvm-svn: 47654 
							
						 
						
							2008-02-27 01:23:58 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								d7a258d325 
								
							 
						 
						
							
							
								
								Rename PrintableName to Name.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47629 
							
						 
						
							2008-02-26 21:47:57 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								c24ea4fb41 
								
							 
						 
						
							
							
								
								Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool  
							
							 
							
							... 
							
							
							
							would have been a Godsend here!
llvm-svn: 47625 
							
						 
						
							2008-02-26 21:11:01 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								9db0aa86d9 
								
							 
						 
						
							
							
								
								Avoid aborting on invalid shift counts.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47612 
							
						 
						
							2008-02-26 18:50:50 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								1f372edd97 
								
							 
						 
						
							
							
								
								Convert MaskedValueIsZero and all its users to use APInt. Also add  
							
							 
							
							... 
							
							
							
							a SignBitIsZero function to simplify a common use case.
llvm-svn: 47561 
							
						 
						
							2008-02-25 21:11:39 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								7254826c40 
								
							 
						 
						
							
							
								
								Better names as per Evan's request  
							
							 
							
							... 
							
							
							
							llvm-svn: 47435 
							
						 
						
							2008-02-21 16:11:38 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								95528943e9 
								
							 
						 
						
							
							
								
								Atomic op support.  If any gcc test uses __sync builtins, it might start failing on archs that haven't implemented them yet  
							
							 
							
							... 
							
							
							
							llvm-svn: 47430 
							
						 
						
							2008-02-21 06:45:13 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								e7b462b329 
								
							 
						 
						
							
							
								
								LegalizeTypes support for scalarizing a vector store  
							
							 
							
							... 
							
							
							
							and splitting extract_subvector.  This fixes nine
"make check" testcases, for example
2008-02-04-ExtractSubvector.ll and (partially)
CodeGen/Generic/vector.ll.
llvm-svn: 47384 
							
						 
						
							2008-02-20 17:38:09 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								b717fdaa7b 
								
							 
						 
						
							
							
								
								Use APInt::intersects.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47380 
							
						 
						
							2008-02-20 16:30:17 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								035eaacd1f 
								
							 
						 
						
							
							
								
								Update gcc 4.3 warnings fix patch with recent head changes  
							
							 
							
							... 
							
							
							
							llvm-svn: 47368 
							
						 
						
							2008-02-20 11:10:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2a8037b5f5 
								
							 
						 
						
							
							
								
								Fix an incredibly subtle bug exposed by Ted's change to APInt profiling.  
							
							 
							
							... 
							
							
							
							AddNodeIDNode does profiling for a ConstantSDNode, but so does 
SelectionDAG::getConstant.  This profiling should be moved to a common
static function in ConstantSDNode.
llvm-svn: 47359 
							
						 
						
							2008-02-20 06:28:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6200c225e0 
								
							 
						 
						
							
							
								
								- When DAG combiner is folding a bit convert into a BUILD_VECTOR, it should check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type.  
							
							 
							
							... 
							
							
							
							- X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC.
llvm-svn: 47290 
							
						 
						
							2008-02-18 23:04:32 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								9b254eed32 
								
							 
						 
						
							
							
								
								llvm.memory.barrier, and impl for x86 and alpha  
							
							 
							
							... 
							
							
							
							llvm-svn: 47204 
							
						 
						
							2008-02-16 01:24:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								558a3ba17f 
								
							 
						 
						
							
							
								
								Fix a miscompilation from Dan's recent apintification.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47128 
							
						 
						
							2008-02-14 18:48:56 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								7e22a5d8df 
								
							 
						 
						
							
							
								
								Allow the APInt form of ComputeMaskedBits to operate on i128 types.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47101 
							
						 
						
							2008-02-13 23:13:32 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								95d25d39d0 
								
							 
						 
						
							
							
								
								Avoid setting bits that aren't demanded.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47098 
							
						 
						
							2008-02-13 22:43:25 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								e1d9ee66ed 
								
							 
						 
						
							
							
								
								Simplify some logic in ComputeMaskedBits. And change ComputeMaskedBits  
							
							 
							
							... 
							
							
							
							to pass the mask APInt by value, not by reference. 
llvm-svn: 47096 
							
						 
						
							2008-02-13 22:28:48 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								f990faf23b 
								
							 
						 
						
							
							
								
								Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t.  
							
							 
							
							... 
							
							
							
							Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.
llvm-svn: 47039 
							
						 
						
							2008-02-13 00:35:47 +00:00  
						
					 
				
					
						
							
							
								 
								Ted Kremenek
							
						 
						
							 
							
							
							
							
								
							
							
								6f30a0798f 
								
							 
						 
						
							
							
								
								Added "Profile" method to APFloat for use with FoldingSet.  
							
							 
							
							... 
							
							
							
							Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary
objects to a profile via dispatch to FoldingSetTrait<T>::Profile().
Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their
functionality is now replaced using the above mentioned member template.
llvm-svn: 46957 
							
						 
						
							2008-02-11 17:24:50 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3a4be0fdef 
								
							 
						 
						
							
							
								
								Rename MRegisterInfo to TargetRegisterInfo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46930 
							
						 
						
							2008-02-10 18:45:23 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								56689502c1 
								
							 
						 
						
							
							
								
								Add truncate and AssertZext result expansion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46926 
							
						 
						
							2008-02-10 10:08:52 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								65f63eba2b 
								
							 
						 
						
							
							
								
								Change ConstantSDNode to store an APInt instead of a uint64_t, and  
							
							 
							
							... 
							
							
							
							begin adding some methods to use it this way.
llvm-svn: 46899 
							
						 
						
							2008-02-08 22:59:30 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								140a73efac 
								
							 
						 
						
							
							
								
								Avoid needlessly casting away const qualifiers.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46876 
							
						 
						
							2008-02-08 03:26:46 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								16d4bc3dc0 
								
							 
						 
						
							
							
								
								Follow Chris' suggestion; change the PseudoSourceValue accessors  
							
							 
							
							... 
							
							
							
							to return pointers instead of references, since this is always what
is needed.
llvm-svn: 46857 
							
						 
						
							2008-02-07 18:41:25 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								2d489b5081 
								
							 
						 
						
							
							
								
								Re-apply the memory operand changes, with a fix for the static  
							
							 
							
							... 
							
							
							
							initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.
llvm-svn: 46827 
							
						 
						
							2008-02-06 22:27:42 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								87fbd66f9f 
								
							 
						 
						
							
							
								
								Fix PR1975: dag isel emitter produces patterns that isel wrong flag result.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46776 
							
						 
						
							2008-02-05 22:50:29 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ac3cd69add 
								
							 
						 
						
							
							
								
								Typo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46725 
							
						 
						
							2008-02-04 23:10:38 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b2b9d6f0fb 
								
							 
						 
						
							
							
								
								Change the 'global modification' APIs in SelectionDAG to take a new  
							
							 
							
							... 
							
							
							
							DAGUpdateListener object pointer instead of just returning a vector 
of deleted nodes.  This makes the interfaces more efficient (no more
allocating a vector [at least a malloc], filling it in, then walking
it) and more clean.  This also allows the client to be notified of
nodes that are *changed* but not deleted.
llvm-svn: 46677 
							
						 
						
							2008-02-03 06:49:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7685891aa3 
								
							 
						 
						
							
							
								
								Generalize the SDOperand->SDOperand form of  
							
							 
							
							... 
							
							
							
							SelectionDAG::ReplaceAllUsesWith to handle replacement of
an SDOperand with *any* sdoperand, not just one for a node with
a single result.  Note that this has a horrible FIXME'd hack in it
to work around PR1975.  This should be removed when PR1975 is fixed.
llvm-svn: 46674 
							
						 
						
							2008-02-03 03:35:22 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								efd142a920 
								
							 
						 
						
							
							
								
								SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.  
							
							 
							
							... 
							
							
							
							Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
llvm-svn: 46659 
							
						 
						
							2008-02-02 04:07:54 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								27b32b87ed 
								
							 
						 
						
							
							
								
								Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46623 
							
						 
						
							2008-01-31 21:00:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1c6c16ea11 
								
							 
						 
						
							
							
								
								Add an extra operand to LABEL nodes which distinguishes between debug, EH, or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46609 
							
						 
						
							2008-01-31 09:59:15 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								9ba4d76816 
								
							 
						 
						
							
							
								
								Rename ISD::FLT_ROUNDS to ISD::FLT_ROUNDS_ to avoid conflicting  
							
							 
							
							... 
							
							
							
							with the real FLT_ROUNDS (defined in <float.h>).
llvm-svn: 46587 
							
						 
						
							2008-01-31 00:41:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3646fdda67 
								
							 
						 
						
							
							
								
								Create a new class, MemOperand, for describing memory references  
							
							 
							
							... 
							
							
							
							in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.
Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.
Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.
llvm-svn: 46585 
							
						 
						
							2008-01-31 00:25:39 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								47a7d6fafe 
								
							 
						 
						
							
							
								
								Factor the addressing mode and the load/store VT out of LoadSDNode  
							
							 
							
							... 
							
							
							
							and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.
llvm-svn: 46538 
							
						 
						
							2008-01-30 00:15:11 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								70de4cb1cd 
								
							 
						 
						
							
							
								
								Use empty() instead of comparing size() with zero.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46514 
							
						 
						
							2008-01-29 13:02:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								720d8999c7 
								
							 
						 
						
							
							
								
								don't bother making x&-1 only to simplify it in dag combine.  This commonly occurs expanding i64 ops.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46383 
							
						 
						
							2008-01-26 01:05:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1671361c5c 
								
							 
						 
						
							
							
								
								Simplify SelectionDAG::getNode so that a big switch stmt is not #ifndef  
							
							 
							
							... 
							
							
							
							NDEBUG.  This is in response to a really nasty bug I introduced that 
Dale tracked down, hopefully this won't happen in the future.  
Many thanks Dale.
llvm-svn: 46254 
							
						 
						
							2008-01-22 19:09:33 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								59e0e4bf35 
								
							 
						 
						
							
							
								
								Move DAG-changing code out of #ifndef NDEBUG.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46204 
							
						 
						
							2008-01-21 01:00:34 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								72733e573b 
								
							 
						 
						
							
							
								
								* Introduce a new SelectionDAG::getIntPtrConstant method  
							
							 
							
							... 
							
							
							
							and switch various codegen pieces and the X86 backend over
  to using it.
* Add some comments to SelectionDAGNodes.h
* Introduce a second argument to FP_ROUND, which indicates
  whether the FP_ROUND changes the value of its input. If
  not it is safe to xform things like fp_extend(fp_round(x)) -> x.
llvm-svn: 46125 
							
						 
						
							2008-01-17 07:00:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								52188501f6 
								
							 
						 
						
							
							
								
								Fix a ppc long double regression I introduced yesterday due to a  
							
							 
							
							... 
							
							
							
							simplification.  This fixes automotive-basicmath on PPC.
llvm-svn: 46072 
							
						 
						
							2008-01-16 17:59:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2e50a6f90f 
								
							 
						 
						
							
							
								
								Factor the ReachesChainWithoutSideEffects out of dag combiner into  
							
							 
							
							... 
							
							
							
							a public SDOperand::reachesChainWithoutSideEffects method.  No 
functionality change.
llvm-svn: 46050 
							
						 
						
							2008-01-16 05:49:24 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								6bbbc4cbfa 
								
							 
						 
						
							
							
								
								For PR1839: add initial support for __builtin_trap. llvm-gcc part is missed  
							
							 
							
							... 
							
							
							
							as well as PPC codegen
llvm-svn: 46001 
							
						 
						
							2008-01-15 07:02:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b0d06b4381 
								
							 
						 
						
							
							
								
								Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor  
							
							 
							
							... 
							
							
							
							llvm-svn: 45680 
							
						 
						
							2008-01-07 03:13:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								afc8f13bf5 
								
							 
						 
						
							
							
								
								improve support for fgetsign  
							
							 
							
							... 
							
							
							
							llvm-svn: 45322 
							
						 
						
							2007-12-22 21:26:52 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								483a969ece 
								
							 
						 
						
							
							
								
								Fix PR1872: SrcValue and SrcValueOffset should not be used to compute load / store node id.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45167 
							
						 
						
							2007-12-18 19:38:14 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								78ced47a2f 
								
							 
						 
						
							
							
								
								Also print alignment and volatileness.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45164 
							
						 
						
							2007-12-18 19:06:30 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e2dbba5828 
								
							 
						 
						
							
							
								
								SelectionDAG::dump() should print SrcValue of LoadSDNode and StoreSDNode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45151 
							
						 
						
							2007-12-18 07:02:08 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								7a7742c2fe 
								
							 
						 
						
							
							
								
								Allow vector integer constants to be created with  
							
							 
							
							... 
							
							
							
							SelectionDAG::getConstant, in the same way as vector floating-point
constants. This allows the legalize expansion code for @llvm.ctpop and
friends to be usable with vector types.
llvm-svn: 44954 
							
						 
						
							2007-12-12 22:21:26 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f54030231e 
								
							 
						 
						
							
							
								
								Pretty print shuffle mask operand.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44837 
							
						 
						
							2007-12-11 02:08:35 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								66b91e66ec 
								
							 
						 
						
							
							
								
								Implement necessary bits for flt_rounds gcc builtin.  
							
							 
							
							... 
							
							
							
							Codegen bits and llvm-gcc support will follow.
llvm-svn: 44182 
							
						 
						
							2007-11-15 23:25:33 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								341f093bb1 
								
							 
						 
						
							
							
								
								If a call to getTruncStore is for a normal store,  
							
							 
							
							... 
							
							
							
							offload to getStore rather than trying to handle
both cases at once (the assertions for example
assume the store really is truncating).
llvm-svn: 43498 
							
						 
						
							2007-10-30 12:40:58 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								d9834b29dd 
								
							 
						 
						
							
							
								
								If the value types are equal then this routine  
							
							 
							
							... 
							
							
							
							asserts in later checks rather than producing
the ordinary load it is supposed to.  Avoid all
such hassles by directly returning an ordinary
load in this case.
llvm-svn: 43174 
							
						 
						
							2007-10-19 13:05:40 +00:00  
						
					 
				
					
						
							
							
								 
								Rafael Espindola
							
						 
						
							 
							
							
							
							
								
							
							
								846c19dd70 
								
							 
						 
						
							
							
								
								Add support for byval function whose argument is not 32 bit aligned.  
							
							 
							
							... 
							
							
							
							To do this it is necessary to add a "always inline" argument to the
memcpy node. For completeness I have also added this node to memmove
and memset.  I have also added getMem* functions, because the extra
argument makes it cumbersome to use getNode and because I get confused
by it :-)
llvm-svn: 43172 
							
						 
						
							2007-10-19 10:41:11 +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  
						
					 
				
					
						
							
							
								 
								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  
						
					 
				
					
						
							
							
								 
								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  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9eb7a829e6 
								
							 
						 
						
							
							
								
								add a new CreateStackTemporary helper method.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42994 
							
						 
						
							2007-10-15 17:47:20 +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  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								19db093b35 
								
							 
						 
						
							
							
								
								Disable some compile-time optimizations on PPC  
							
							 
							
							... 
							
							
							
							long double.
llvm-svn: 42958 
							
						 
						
							2007-10-14 01:56:47 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								daee002438 
								
							 
						 
						
							
							
								
								Add an ISD::FPOW node type.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42879 
							
						 
						
							2007-10-11 23:06:37 +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  
						
					 
				
					
						
							
							
								 
								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  
						
					 
				
					
						
							
							
								 
								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  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								1a77dfba15 
								
							 
						 
						
							
							
								
								Provide names for MUL_LOHI and DIVREM operators.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42634 
							
						 
						
							2007-10-05 14:11:04 +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  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								c0855f8a88 
								
							 
						 
						
							
							
								
								remove dup comment  
							
							 
							
							... 
							
							
							
							llvm-svn: 42486 
							
						 
						
							2007-09-30 19:08:12 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								9150652b21 
								
							 
						 
						
							
							
								
								Constant fold int-to-long-double conversions;  
							
							 
							
							... 
							
							
							
							use APFloat for int-to-float/double; use
round-to-nearest for these (implementation-defined,
seems to match gcc).
llvm-svn: 42484 
							
						 
						
							2007-09-30 18:19:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								4230512f32 
								
							 
						 
						
							
							
								
								Change APFloat::convertFromInteger to take the incoming  
							
							 
							
							... 
							
							
							
							bit width instead of number of words allocated, which
makes it actually work for int->APF conversions.
Adjust callers.  Add const to one of the APInt constructors
to prevent surprising match when called with const
argument.
llvm-svn: 42210 
							
						 
						
							2007-09-21 22:09:37 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								7d67e547b5 
								
							 
						 
						
							
							
								
								More long double fixes.  x86_64 should build now.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42155 
							
						 
						
							2007-09-19 23:55:34 +00:00  
						
					 
				
					
						
							
							
								 
								Devang Patel
							
						 
						
							 
							
							
							
							
								
							
							
								00064e1bab 
								
							 
						 
						
							
							
								
								Do not hide APInt::dump() inside #ifndef NDEBUG.  
							
							 
							
							... 
							
							
							
							llvm-svn: 42068 
							
						 
						
							2007-09-17 22:24:00 +00:00  
						
					 
				
					
						
							
							
								 
								Devang Patel
							
						 
						
							 
							
							
							
							
								
							
							
								77ae4d358f 
								
							 
						 
						
							
							
								
								This is not ideal but unbreaks build failure.  
							
							 
							
							... 
							
							
							
							APInt::dump() is inside #ifndef NDEBUG, however SelectionDAG dump() routines are not.
llvm-svn: 42047 
							
						 
						
							2007-09-17 20:03:03 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								98d3a08d8f 
								
							 
						 
						
							
							
								
								Remove the assumption that FP's are either float or  
							
							 
							
							... 
							
							
							
							double from some of the many places in the optimizers
it appears, and do something reasonable with x86
long double.
Make APInt::dump() public, remove newline, use it to
dump ConstantSDNode's.
Allow APFloats in FoldingSet.
Expand X86 backend handling of long doubles (conversions
to/from int, mostly).
llvm-svn: 41967 
							
						 
						
							2007-09-14 22:26:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7955bbd9fd 
								
							 
						 
						
							
							
								
								Fix build problems on Cygwin (PR1652), patch by Patrick Walton.  
							
							 
							
							... 
							
							
							
							llvm-svn: 41923 
							
						 
						
							2007-09-13 06:09:48 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								bb6a574def 
								
							 
						 
						
							
							
								
								Yet another getTargetNode variant.  
							
							 
							
							... 
							
							
							
							llvm-svn: 41898 
							
						 
						
							2007-09-12 23:39:49 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								028084efe5 
								
							 
						 
						
							
							
								
								Revise previous patch per review comments.  
							
							 
							
							... 
							
							
							
							Next round of x87 long double stuff.
Getting close now, basically works.
llvm-svn: 41875 
							
						 
						
							2007-09-12 03:30:33 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								245dceb06d 
								
							 
						 
						
							
							
								
								Add APInt interfaces to APFloat (allows directly  
							
							 
							
							... 
							
							
							
							access to bits).  Use them in place of float and
double interfaces where appropriate.
First bits of x86 long double constants handling 
(untested, probably does not work).
llvm-svn: 41858 
							
						 
						
							2007-09-11 18:32:33 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								86e0119822 
								
							 
						 
						
							
							
								
								Fold the adjust_trampoline intrinsic into  
							
							 
							
							... 
							
							
							
							init_trampoline.  There is now only one
trampoline intrinsic.
llvm-svn: 41841 
							
						 
						
							2007-09-11 14:10:23 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								446b900192 
								
							 
						 
						
							
							
								
								Add mod, copysign, abs operations to APFloat.  
							
							 
							
							... 
							
							
							
							Implement some constant folding in SelectionDAG and
DAGCombiner using APFloat.  Remove double versions
of constructor and getValue from ConstantFPSDNode.
llvm-svn: 41664 
							
						 
						
							2007-08-31 23:34:27 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								da7469f2b5 
								
							 
						 
						
							
							
								
								Revise per review of previous patch.  
							
							 
							
							... 
							
							
							
							llvm-svn: 41645 
							
						 
						
							2007-08-31 17:03:33 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								3cf889f75e 
								
							 
						 
						
							
							
								
								Enhance APFloat to retain bits of NaNs (fixes oggenc).  
							
							 
							
							... 
							
							
							
							Use APFloat interfaces for more references, mostly
of ConstantFPSDNode.
llvm-svn: 41632 
							
						 
						
							2007-08-31 04:03:46 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								d246b2ca5c 
								
							 
						 
						
							
							
								
								Change LegalFPImmediates to use APFloat.  
							
							 
							
							... 
							
							
							
							Add APFloat interfaces to ConstantFP, SelectionDAG.
Fix integer bit in double->APFloat conversion.
Convert LegalizeDAG to use APFloat interface in
ConstantFPSDNode uses.
llvm-svn: 41587 
							
						 
						
							2007-08-30 00:23:21 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								b6d2bec418 
								
							 
						 
						
							
							
								
								Revise per review comments.  
							
							 
							
							... 
							
							
							
							llvm-svn: 41409 
							
						 
						
							2007-08-26 01:18:27 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								2cfcf70f82 
								
							 
						 
						
							
							
								
								Add APFloat interface to ConstantFPSDNode.  Change  
							
							 
							
							... 
							
							
							
							over uses in DAGCombiner.  Fix interfaces to work
with APFloats.
llvm-svn: 41407 
							
						 
						
							2007-08-25 22:10:57 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								bdea32d812 
								
							 
						 
						
							
							
								
								Poison APFloat::operator==.  Replace existing uses with bitwiseIsEqual.  
							
							 
							
							... 
							
							
							
							This means backing out the preceding change to Constants.cpp, alas.
llvm-svn: 41378 
							
						 
						
							2007-08-24 22:09:56 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								7891d8edf0 
								
							 
						 
						
							
							
								
								Use APFloat internally for ConstantFPSDNode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 41372 
							
						 
						
							2007-08-24 20:59:15 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								358c3d1dac 
								
							 
						 
						
							
							
								
								Do not emit copies for physical register output if it's not used.  
							
							 
							
							... 
							
							
							
							llvm-svn: 40722 
							
						 
						
							2007-08-02 05:29:38 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								644f917358 
								
							 
						 
						
							
							
								
								Support for trampolines, except for X86 codegen which is  
							
							 
							
							... 
							
							
							
							still under discussion.
llvm-svn: 40549 
							
						 
						
							2007-07-27 12:58:54 +00:00  
						
					 
				
					
						
							
							
								 
								Christopher Lamb
							
						 
						
							 
							
							
							
							
								
							
							
								a8fc0e527b 
								
							 
						 
						
							
							
								
								Add selection DAG nodes for subreg insert/extract. PR1350  
							
							 
							
							... 
							
							
							
							llvm-svn: 40516 
							
						 
						
							2007-07-26 07:34:40 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								b6a8ae20c7 
								
							 
						 
						
							
							
								
								Fix some uses of dyn_cast to be uses of cast.  
							
							 
							
							... 
							
							
							
							llvm-svn: 40443 
							
						 
						
							2007-07-23 20:24:29 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								85ec2af554 
								
							 
						 
						
							
							
								
								As pointed out by g++-4.2, the original code didn't do  
							
							 
							
							... 
							
							
							
							what it thought it was doing.
llvm-svn: 40044 
							
						 
						
							2007-07-19 07:31:58 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								383a324735 
								
							 
						 
						
							
							
								
								Long live the exception handling!  
							
							 
							
							... 
							
							
							
							This patch fills the last necessary bits to enable exceptions
handling in LLVM. Currently only on x86-32/linux.
In fact, this patch adds necessary intrinsics (and their lowering) which
represent really weird target-specific gcc builtins used inside unwinder.
After corresponding llvm-gcc patch will land (easy) exceptions should be
more or less workable. However, exceptions handling support should not be 
thought as 'finished': I expect many small and not so small glitches
everywhere.
llvm-svn: 39855 
							
						 
						
							2007-07-14 14:06:15 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								60d6f96da3 
								
							 
						 
						
							
							
								
								Change the peep for EXTRACT_VECTOR_ELT of BUILD_PAIR to look for  
							
							 
							
							... 
							
							
							
							the new CONCAT_VECTORS node type instead, as that's what legalize
uses now. And add a peep for EXTRACT_VECTOR_ELT of INSERT_VECTOR_ELT.
llvm-svn: 38503 
							
						 
						
							2007-07-10 18:20:44 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a282694acf 
								
							 
						 
						
							
							
								
								Make the debug string for ISD::MERGE_VALUES consistent with the others.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37922 
							
						 
						
							2007-07-05 20:15:43 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9458e6a551 
								
							 
						 
						
							
							
								
								Fix a vector FP constant CSE bug.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37814 
							
						 
						
							2007-06-29 21:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3b62d7265d 
								
							 
						 
						
							
							
								
								Rename ("shrinkify") MVT::isExtendedValueType to MVT::isExtendedVT.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37758 
							
						 
						
							2007-06-27 16:08:04 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a866514528 
								
							 
						 
						
							
							
								
								Generalize MVT::ValueType and associated functions to be able to represent  
							
							 
							
							... 
							
							
							
							extended vector types. Remove the special SDNode opcodes used for pre-legalize
vector operations, and the special MVT::Vector type used with them. Adjust
lowering and legalize to work with the normal SDNode kinds instead, and to
use the normal MVT functions to work with vector types instead of using the
two special operands that the pre-legalize nodes held.
This allows pre-legalize and post-legalize DAGs, and the code that operates
on them, to be more consistent. Pre-legalize vector operators can be handled
more consistently with scalar operators. And, -view-dag-combine1-dags and
-view-legalize-dags now look prettier for vector code.
llvm-svn: 37719 
							
						 
						
							2007-06-25 16:23:39 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								309d3d51b3 
								
							 
						 
						
							
							
								
								Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits from  
							
							 
							
							... 
							
							
							
							TargetLowering to SelectionDAG so that they have more convenient
access to the current DAG, in preparation for the ValueType routines
being changed from standalone functions to members of SelectionDAG for
the pre-legalize vector type changes.
llvm-svn: 37704 
							
						 
						
							2007-06-22 14:59:07 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a7644dd9b9 
								
							 
						 
						
							
							
								
								Pass a SelectionDAG into SDNode::dump everywhere it's used, in prepration  
							
							 
							
							... 
							
							
							
							for needing the DAG node to print pre-legalize extended value types, and
to get better debug messages with target-specific nodes.
llvm-svn: 37656 
							
						 
						
							2007-06-19 14:13:56 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								5c4413120f 
								
							 
						 
						
							
							
								
								Rename MVT::getVectorBaseType to MVT::getVectorElementType.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37579 
							
						 
						
							2007-06-14 22:58:02 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								26455c4ae0 
								
							 
						 
						
							
							
								
								Introduce new SelectionDAG node opcodes VEXTRACT_SUBVECTOR and  
							
							 
							
							... 
							
							
							
							VCONCAT_VECTORS. Use these for CopyToReg and CopyFromReg legalizing in
the case that the full register is to be split into subvectors instead
of scalars. This replaces uses of VBIT_CONVERT to present values as
vector-of-vector types in order to make whole subvectors accessible via
BUILD_VECTOR and EXTRACT_VECTOR_ELT.
This is in preparation for adding extended ValueType values, where
having vector-of-vector types is undesirable.
llvm-svn: 37569 
							
						 
						
							2007-06-13 15:12:02 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								92a7f3a65e 
								
							 
						 
						
							
							
								
								Resolve implicit alignment before computing the FoldingSet information so  
							
							 
							
							... 
							
							
							
							that the CSE map always contains explicit alignment information. This allows
more loads to be CSE'd when there is a mix of explicit-alignment loads and
implicit-alignment loads.
Also, in SelectionDAG::FindModifiedNodeSlot, add the operands to the
FoldingSetNodeID before the load/store information instead of after, so
that it matches what is done elsewhere.
llvm-svn: 37411 
							
						 
						
							2007-06-04 15:49:41 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								703e0f8608 
								
							 
						 
						
							
							
								
								Add explicit qualification for namespace MVT members.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37320 
							
						 
						
							2007-05-24 14:33:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								01a26c74ae 
								
							 
						 
						
							
							
								
								Be more careful about folding op(x, undef) when we have vector operands.  
							
							 
							
							... 
							
							
							
							This fixes CodeGen/X86/2007-04-24-VectorCrash.ll
llvm-svn: 36413 
							
						 
						
							2007-04-25 00:00:45 +00:00  
						
					 
				
					
						
							
							
								 
								Christopher Lamb
							
						 
						
							 
							
							
							
							
								
							
							
								8af6d5896f 
								
							 
						 
						
							
							
								
								PR400 phase 2. Propagate attributed load/store information through DAGs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 36356 
							
						 
						
							2007-04-22 23:15:30 +00:00  
						
					 
				
					
						
							
							
								 
								Lauro Ramos Venancio
							
						 
						
							 
							
							
							
							
								
							
							
								4e91908f17 
								
							 
						 
						
							
							
								
								X86 TLS: Implement review feedback.  
							
							 
							
							... 
							
							
							
							llvm-svn: 36318 
							
						 
						
							2007-04-21 20:56:26 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								0c1349e6bc 
								
							 
						 
						
							
							
								
								Revert Christopher Lamb's load/store alignment changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 36309 
							
						 
						
							2007-04-21 18:36:27 +00:00  
						
					 
				
					
						
							
							
								 
								Christopher Lamb
							
						 
						
							 
							
							
							
							
								
							
							
								bff50208c8 
								
							 
						 
						
							
							
								
								add support for alignment attributes on load/store instructions  
							
							 
							
							... 
							
							
							
							llvm-svn: 36301 
							
						 
						
							2007-04-21 08:16:25 +00:00  
						
					 
				
					
						
							
							
								 
								Lauro Ramos Venancio
							
						 
						
							 
							
							
							
							
								
							
							
								2518889872 
								
							 
						 
						
							
							
								
								Implement "general dynamic", "initial exec" and "local exec" TLS models for  
							
							 
							
							... 
							
							
							
							X86 32 bits.
llvm-svn: 36283 
							
						 
						
							2007-04-20 21:38:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a77cb3ce68 
								
							 
						 
						
							
							
								
								fold noop vbitconvert instructions  
							
							 
							
							... 
							
							
							
							llvm-svn: 35943 
							
						 
						
							2007-04-12 05:58:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								18d6718e78 
								
							 
						 
						
							
							
								
								add some assertions  
							
							 
							
							... 
							
							
							
							llvm-svn: 35800 
							
						 
						
							2007-04-09 05:23:13 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								a090ffb2ab 
								
							 
						 
						
							
							
								
								For PR1297:  
							
							 
							
							... 
							
							
							
							Change getOperationName to return std::string instead of const char*
llvm-svn: 35545 
							
						 
						
							2007-04-01 07:32:19 +00:00  
						
					 
				
					
						
							
							
								 
								Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								4bbd2eefba 
								
							 
						 
						
							
							
								
								Fix incorrect combination of different loads.  Reenable zext-over-truncate  
							
							 
							
							... 
							
							
							
							combination.
llvm-svn: 35517 
							
						 
						
							2007-03-30 21:38:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								47206667c0 
								
							 
						 
						
							
							
								
								fold away addc nodes when we know there cannot be a carry-out.  
							
							 
							
							... 
							
							
							
							llvm-svn: 34913 
							
						 
						
							2007-03-04 20:40:38 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								362621c7ae 
								
							 
						 
						
							
							
								
								eliminate some ops if they have an undef RHS  
							
							 
							
							... 
							
							
							
							llvm-svn: 34908 
							
						 
						
							2007-03-04 20:01:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								387f464121 
								
							 
						 
						
							
							
								
								fold trivial token factor nodes.  This allows us to compile  
							
							 
							
							... 
							
							
							
							test/CodeGen/X86/fp-stack-ret.ll into:
        movl 4(%esp), %eax
        fldl (%eax)
        ret
instead of:
        subl $12, %esp
        movl 16(%esp), %eax
        movsd (%eax), %xmm0
        movsd %xmm0, (%esp)
        fldl (%esp)
        addl $12, %esp
        ret
by eliminating a token factor that blocked a check.
llvm-svn: 34584 
							
						 
						
							2007-02-25 08:24:27 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								4b37a4c712 
								
							 
						 
						
							
							
								
								Selection and lowering for exception handling.  
							
							 
							
							... 
							
							
							
							llvm-svn: 34481 
							
						 
						
							2007-02-21 22:53:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9af2c86bc8 
								
							 
						 
						
							
							
								
								Introduce new UnarySDNode/BinarySDNode/TernarySDNode nodes, which coallocate  
							
							 
							
							... 
							
							
							
							their operands with the node itself.  This reduces malloc traffic for operand
lists.  This reduces isel time on kc++ from 2.6164 to 2.5570s, about 2.3%.
llvm-svn: 33878 
							
						 
						
							2007-02-04 08:35:21 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								22639f3d90 
								
							 
						 
						
							
							
								
								eliminate the SDNode::setValueTypes method.  
							
							 
							
							... 
							
							
							
							llvm-svn: 33876 
							
						 
						
							2007-02-04 07:37:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f17b4222e2 
								
							 
						 
						
							
							
								
								eliminate a bunch of duplicate ctors and helper functions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 33875 
							
						 
						
							2007-02-04 07:28:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								edfc7e5fa2 
								
							 
						 
						
							
							
								
								move MorphNode to out of line and merge setNodeOperands into it.  There is  
							
							 
							
							... 
							
							
							
							no behavior or performance change here.
llvm-svn: 33869 
							
						 
						
							2007-02-04 02:49:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3bf17b6fa5 
								
							 
						 
						
							
							
								
								simplify MorphNodeTo to take a VTList operand.  
							
							 
							
							... 
							
							
							
							llvm-svn: 33868 
							
						 
						
							2007-02-04 02:41:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								486edfbc6f 
								
							 
						 
						
							
							
								
								eliminate some extraneous methods in SDNode  
							
							 
							
							... 
							
							
							
							llvm-svn: 33867 
							
						 
						
							2007-02-04 02:32:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								20754cc579 
								
							 
						 
						
							
							
								
								Give each selectiondag node class a home for it's vtable and rtti info  
							
							 
							
							... 
							
							
							
							llvm-svn: 33866 
							
						 
						
							2007-02-04 02:23:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cba058ce51 
								
							 
						 
						
							
							
								
								Eliminate some std::sets.  This speeds up isel of kimwitu by about 0.9%  
							
							 
							
							... 
							
							
							
							llvm-svn: 33852 
							
						 
						
							2007-02-04 00:24:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								feec7137ce 
								
							 
						 
						
							
							
								
								Switch SelectionDAG::ReplaceAllUsesOfValueWith to use a SmallSetVector for  
							
							 
							
							... 
							
							
							
							the users set (most nodes have 1 or 2 users).  This speeds up the isel pass
3.2% on kimwitu.
llvm-svn: 33849 
							
						 
						
							2007-02-04 00:14:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								296a83cefb 
								
							 
						 
						
							
							
								
								Fit in 80 columns  
							
							 
							
							... 
							
							
							
							llvm-svn: 33745 
							
						 
						
							2007-02-01 04:55:59 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								eda5997cc8 
								
							 
						 
						
							
							
								
								Finish off bug 680, allowing targets to custom lower frame and return  
							
							 
							
							... 
							
							
							
							address nodes.
llvm-svn: 33636 
							
						 
						
							2007-01-29 22:58:52 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								f9e5445ed4 
								
							 
						 
						
							
							
								
								Make LABEL a builtin opcode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 33537 
							
						 
						
							2007-01-26 14:34:52 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								355fc5ad50 
								
							 
						 
						
							
							
								
								Removed more <iostream> includes  
							
							 
							
							... 
							
							
							
							llvm-svn: 32321 
							
						 
						
							2006-12-07 20:28:15 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								22e978a736 
								
							 
						 
						
							
							
								
								Removing even more <iostream> includes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 32320 
							
						 
						
							2006-12-07 20:04:42 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								cc08c83186 
								
							 
						 
						
							
							
								
								Unbreak VC++ build.  
							
							 
							
							... 
							
							
							
							llvm-svn: 32113 
							
						 
						
							2006-12-02 02:22:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f64da389f8 
								
							 
						 
						
							
							
								
								Fix an incorrectly inverted condition.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31773 
							
						 
						
							2006-11-16 00:08:20 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								2230144a75 
								
							 
						 
						
							
							
								
								Make an assert comment match the tested assertion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31686 
							
						 
						
							2006-11-11 20:07:59 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								b15000736c 
								
							 
						 
						
							
							
								
								Rename ISD::MemOpAddrMode to ISD::MemIndexedMode  
							
							 
							
							... 
							
							
							
							llvm-svn: 31595 
							
						 
						
							2006-11-09 17:55:04 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								61feeb90f9 
								
							 
						 
						
							
							
								
								Remove redundant <cmath>.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31561 
							
						 
						
							2006-11-08 19:16:44 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								7d6f3db3e2 
								
							 
						 
						
							
							
								
								Unbreak VC++ build.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31464 
							
						 
						
							2006-11-05 19:31:28 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1a1e23eff7 
								
							 
						 
						
							
							
								
								Added getIndexedStore.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31458 
							
						 
						
							2006-11-05 09:30:09 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9456dd8b81 
								
							 
						 
						
							
							
								
								Fix comments.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31414 
							
						 
						
							2006-11-03 07:31:32 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c176f038b9 
								
							 
						 
						
							
							
								
								Added isPredecessor.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31409 
							
						 
						
							2006-11-03 03:05:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cd7b92251d 
								
							 
						 
						
							
							
								
								silence warning  
							
							 
							
							... 
							
							
							
							llvm-svn: 31397 
							
						 
						
							2006-11-03 01:28:29 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								de46e48420 
								
							 
						 
						
							
							
								
								For PR786:  
							
							 
							
							... 
							
							
							
							Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.
llvm-svn: 31380 
							
						 
						
							2006-11-02 20:25:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								415f365e5c 
								
							 
						 
						
							
							
								
								Print jumptable index.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31340 
							
						 
						
							2006-11-01 04:48:30 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c3e695137d 
								
							 
						 
						
							
							
								
								Added a new SDNode type: BR_JT for jumptable branch.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31292 
							
						 
						
							2006-10-30 07:59:36 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								7ab6123c42 
								
							 
						 
						
							
							
								
								VLOAD is not the LoadSDNode opcode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31276 
							
						 
						
							2006-10-29 06:14:47 +00:00  
						
					 
				
					
						
							
							
								 
								Nick Lewycky
							
						 
						
							 
							
							
							
							
								
							
							
								dc146a9fb9 
								
							 
						 
						
							
							
								
								Remove spurious case. EXTLOAD is not one of the node opcodes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31275 
							
						 
						
							2006-10-29 02:26:30 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								eef273a16f 
								
							 
						 
						
							
							
								
								Load and stores have not been uniqued properly.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31261 
							
						 
						
							2006-10-28 17:25:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b78eb6c8d1 
								
							 
						 
						
							
							
								
								Fix a serious bug that caused any x86 vector stuff to infinite loop  
							
							 
							
							... 
							
							
							
							llvm-svn: 31254 
							
						 
						
							2006-10-28 06:15:26 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								bd0f088743 
								
							 
						 
						
							
							
								
								Clean up.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31243 
							
						 
						
							2006-10-27 23:52:51 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								f576b42bb2 
								
							 
						 
						
							
							
								
								Switch over from SelectionNodeCSEMap to FoldingSet.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31240 
							
						 
						
							2006-10-27 23:46:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								96d6bf50ae 
								
							 
						 
						
							
							
								
								getPreIndexedLoad -> getIndexedLoad.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31209 
							
						 
						
							2006-10-26 21:53:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								78fd0f83ff 
								
							 
						 
						
							
							
								
								Trivial patch to speed up legalizing common i64 constants.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31020 
							
						 
						
							2006-10-17 21:47:13 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1839d76f69 
								
							 
						 
						
							
							
								
								Reflect MemOpAddrMode change; added a helper to create pre-indexed load.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31016 
							
						 
						
							2006-10-17 21:14:32 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								e7d2c24a7d 
								
							 
						 
						
							
							
								
								Make it simplier to dump DAGs while in DAGCombiner.  Remove a nasty optimization.  
							
							 
							
							... 
							
							
							
							llvm-svn: 31009 
							
						 
						
							2006-10-17 19:33:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bd9acad805 
								
							 
						 
						
							
							
								
								When SimplifySetCC was moved to the DAGCombiner, it was never removed from  
							
							 
							
							... 
							
							
							
							SelectionDAG and it has since bitrotted.  Remove the copy from SelectionDAG.
Next, remove the constant folding piece of DAGCombiner::SimplifySetCC into
a new FoldSetCC method which can be used by getNode() and SimplifySetCC.
This fixes obscure bugs.
llvm-svn: 30952 
							
						 
						
							2006-10-14 00:41:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								45ffb1eb70 
								
							 
						 
						
							
							
								
								Fix a bug where we incorrectly turned '(X & 0) == 0' into '(X & 0) >> -1',  
							
							 
							
							... 
							
							
							
							which is undefined.  "0" isn't a power of 2.
llvm-svn: 30947 
							
						 
						
							2006-10-13 22:46:18 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ab51cf2e78 
								
							 
						 
						
							
							
								
								Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30945 
							
						 
						
							2006-10-13 21:14:26 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a731cb674a 
								
							 
						 
						
							
							
								
								Add RemoveDeadNode to remove a dead node and its (potentially) dead operands.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30916 
							
						 
						
							2006-10-12 20:34:05 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d35734bd1f 
								
							 
						 
						
							
							
								
								Naming consistency.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30878 
							
						 
						
							2006-10-11 07:10:22 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								a6bbf33cbf 
								
							 
						 
						
							
							
								
								Jimptables working again on alpha.  
							
							 
							
							... 
							
							
							
							As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.
llvm-svn: 30873 
							
						 
						
							2006-10-11 04:29:42 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								2da4671e05 
								
							 
						 
						
							
							
								
								FindModifiedNodeSlot needs to add LoadSDNode ivars to create proper SelectionDAGCSEMap ID.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30866 
							
						 
						
							2006-10-11 01:47:58 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								fe858538c0 
								
							 
						 
						
							
							
								
								SDNode::dump should also print out extension type and VT.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30860 
							
						 
						
							2006-10-10 20:05:10 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e71fe34d75 
								
							 
						 
						
							
							
								
								Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30844 
							
						 
						
							2006-10-09 20:57:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								af309d29b1 
								
							 
						 
						
							
							
								
								Add getStore() helper function to create ISD::STORE nodes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 30758 
							
						 
						
							2006-10-05 22:57:11 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								5d9fd977d3 
								
							 
						 
						
							
							
								
								Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an  
							
							 
							
							... 
							
							
							
							extra operand to LOADX to specify the exact value extension type.
llvm-svn: 30714 
							
						 
						
							2006-10-04 00:56:09 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								c19ef92403 
								
							 
						 
						
							
							
								
								Comments on JumpTableness  
							
							 
							
							... 
							
							
							
							llvm-svn: 30615 
							
						 
						
							2006-09-26 20:02:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5a42ebcff3 
								
							 
						 
						
							
							
								
								Fold extract_element(cst) to cst  
							
							 
							
							... 
							
							
							
							llvm-svn: 30478 
							
						 
						
							2006-09-19 05:02:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4c059f4962 
								
							 
						 
						
							
							
								
								Minor speedup for legalize by avoiding some malloc traffic  
							
							 
							
							... 
							
							
							
							llvm-svn: 30477 
							
						 
						
							2006-09-19 04:51:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								45fe3bc72c 
								
							 
						 
						
							
							
								
								Added support for machine specific constantpool values. These are useful for  
							
							 
							
							... 
							
							
							
							representing expressions that can only be resolved at link time, etc.
llvm-svn: 30278 
							
						 
						
							2006-09-12 21:00:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f0359b343a 
								
							 
						 
						
							
							
								
								Implement the fpowi now by lowering to a libcall  
							
							 
							
							... 
							
							
							
							llvm-svn: 30225 
							
						 
						
							2006-09-09 06:03:30 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e5570a4c3f 
								
							 
						 
						
							
							
								
								Move isCommutativeBinOp from SelectionDAG.cpp and DAGCombiner.cpp out. Make it a static method of SelectionDAG.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29951 
							
						 
						
							2006-08-29 06:42:35 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								849f4bf8dd 
								
							 
						 
						
							
							
								
								Eliminate SelectNodeTo() and getTargetNode() variants which take more than  
							
							 
							
							... 
							
							
							
							3 SDOperand operands. They are replaced by versions which take an array
of SDOperand and the number of operands.
llvm-svn: 29905 
							
						 
						
							2006-08-27 08:08:54 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								34b70eea5c 
								
							 
						 
						
							
							
								
								SelectNodeTo now returns a SDNode*.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29901 
							
						 
						
							2006-08-26 08:00:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								65879caf07 
								
							 
						 
						
							
							
								
								minor changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29740 
							
						 
						
							2006-08-16 22:57:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a4f3625c23 
								
							 
						 
						
							
							
								
								Use the appropriate typedef  
							
							 
							
							... 
							
							
							
							llvm-svn: 29730 
							
						 
						
							2006-08-16 20:59:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a5a3eafbd0 
								
							 
						 
						
							
							
								
								Start using SDVTList more consistently  
							
							 
							
							... 
							
							
							
							llvm-svn: 29711 
							
						 
						
							2006-08-15 19:11:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f98411a220 
								
							 
						 
						
							
							
								
								add a new SDVTList type and new SelectionDAG::getVTList methods to streamline  
							
							 
							
							... 
							
							
							
							the creation of canonical VTLists.
llvm-svn: 29709 
							
						 
						
							2006-08-15 17:46:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3bf4be453f 
								
							 
						 
						
							
							
								
								Add a new getNode() method that takes a pointer to an already-intern'd list  
							
							 
							
							... 
							
							
							
							of value-type nodes.  This avoids having to do mallocs for std::vectors of
valuetypes when a node returns more than one type.
llvm-svn: 29685 
							
						 
						
							2006-08-14 23:31:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e93a39f2d7 
								
							 
						 
						
							
							
								
								remove SelectionDAG::InsertISelMapEntry, it is dead  
							
							 
							
							... 
							
							
							
							llvm-svn: 29677 
							
						 
						
							2006-08-14 22:24:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								63268f0672 
								
							 
						 
						
							
							
								
								Add code to resize the CSEMap hash table.  This doesn't speedup codegen of  
							
							 
							
							... 
							
							
							
							kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :)
llvm-svn: 29675 
							
						 
						
							2006-08-14 22:19:25 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8e37283d8b 
								
							 
						 
						
							
							
								
								Add the actual constant to the hash for ConstantPool nodes.  Thanks to  
							
							 
							
							... 
							
							
							
							Rafael Espindola for pointing this out.
llvm-svn: 29669 
							
						 
						
							2006-08-14 20:12:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0c2e5412bb 
								
							 
						 
						
							
							
								
								Remove 8 more std::map's.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29631 
							
						 
						
							2006-08-11 21:55:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3f16b201e2 
								
							 
						 
						
							
							
								
								Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants,  
							
							 
							
							... 
							
							
							
							RegNodes, and ValueNodes maps into the CSEMap.
llvm-svn: 29626 
							
						 
						
							2006-08-11 21:01:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fcb16470ec 
								
							 
						 
						
							
							
								
								eliminate the NullaryOps map, use CSEMap instead.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29621 
							
						 
						
							2006-08-11 18:38:11 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a2f4086828 
								
							 
						 
						
							
							
								
								Change one ReplaceAllUsesWith method to take an array of operands to replace  
							
							 
							
							... 
							
							
							
							instead of a vector of operands.
llvm-svn: 29616 
							
						 
						
							2006-08-11 17:46:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c24a1d3093 
								
							 
						 
						
							
							
								
								Start eliminating temporary vectors used to create DAG nodes.  Instead, pass  
							
							 
							
							... 
							
							
							
							in the start of an array and a count of operands where applicable.  In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap.  In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.
I updated a lot of code calling getNode that takes a vector, but ran out of
time.  The rest of the code should be updated, and these methods should be
removed.
We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.
It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.
llvm-svn: 29566 
							
						 
						
							2006-08-08 02:23:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								97af9d5d3a 
								
							 
						 
						
							
							
								
								Eliminate some malloc traffic by allocating vectors on the stack.  Change some  
							
							 
							
							... 
							
							
							
							method that took std::vector<SDOperand> to take a pointer to a first operand
and #operands.
This speeds up isel on kc++ by about 3%.
llvm-svn: 29561 
							
						 
						
							2006-08-08 01:09:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1ee75ce65d 
								
							 
						 
						
							
							
								
								Revamp the "CSEMap" datastructure used in the SelectionDAG class.  This  
							
							 
							
							... 
							
							
							
							eliminates a bunch of std::map's in the SelectionDAG, replacing them with a
home-grown hashtable.
This is still a work in progress: not all the maps have been moved over and the
hashtable never resizes.  That said, this still speeds up llc 20% on kimwitu++
with -fast -regalloc=local using a release build.
llvm-svn: 29550 
							
						 
						
							2006-08-07 23:03:03 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								445b91a041 
								
							 
						 
						
							
							
								
								Clear TopOrder before assigning topological order. Some clean ups.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29546 
							
						 
						
							2006-08-07 22:13:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8927c875bb 
								
							 
						 
						
							
							
								
								Make SelectionDAG::RemoveDeadNodes iterative instead of recursive, which  
							
							 
							
							... 
							
							
							
							also make it simpler.
llvm-svn: 29524 
							
						 
						
							2006-08-04 17:45:20 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								bba1ebda32 
								
							 
						 
						
							
							
								
								- Change AssignTopologicalOrder to return vector of SDNode* by reference.  
							
							 
							
							... 
							
							
							
							- Tweak implementation to avoid using std::map.
llvm-svn: 29479 
							
						 
						
							2006-08-02 22:00:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9631a60020 
								
							 
						 
						
							
							
								
								Added AssignTopologicalOrder() to assign each node an unique id based on their topological order.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29431 
							
						 
						
							2006-08-01 08:20:41 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								b572401bea 
								
							 
						 
						
							
							
								
								Remove InFlightSet hack. No longer needed.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29373 
							
						 
						
							2006-07-28 00:47:19 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								acb606ff33 
								
							 
						 
						
							
							
								
								AssignNodeIds should return unsigned.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29343 
							
						 
						
							2006-07-27 07:36:47 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								29eefc164c 
								
							 
						 
						
							
							
								
								AssignNodeIds assign each node in the DAG an unique id.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29337 
							
						 
						
							2006-07-27 06:39:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c0973edc69 
								
							 
						 
						
							
							
								
								Add an out-of-line virtual method for the sdnode class to give it a home.  
							
							 
							
							... 
							
							
							
							llvm-svn: 29192 
							
						 
						
							2006-07-19 00:00:37 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d19938834b 
								
							 
						 
						
							
							
								
								Ugly hack! Add helper functions InsertInFlightSetEntry and  
							
							 
							
							... 
							
							
							
							RemoveInFlightSetEntry. They are used in place of direct set operators to
reduce instruction selection function stack size.
llvm-svn: 28987 
							
						 
						
							2006-06-29 23:57:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								710b3d5ea1 
								
							 
						 
						
							
							
								
								Fix CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 28965 
							
						 
						
							2006-06-28 18:29:47 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								aaa23d953f 
								
							 
						 
						
							
							
								
								Add a new ISD::CALL node, make the default impl of TargetLowering::LowerCallTo  
							
							 
							
							... 
							
							
							
							produce it.
llvm-svn: 28338 
							
						 
						
							2006-05-16 22:53:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								da076e41ab 
								
							 
						 
						
							
							
								
								remove dead vars  
							
							 
							
							... 
							
							
							
							llvm-svn: 28254 
							
						 
						
							2006-05-12 18:04:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8c02c3f41a 
								
							 
						 
						
							
							
								
								Compile:  
							
							 
							
							... 
							
							
							
							%tmp152 = setgt uint %tmp144, %tmp149           ; <bool> [#uses=1]
        %tmp159 = setlt uint %tmp144, %tmp149           ; <bool> [#uses=1]
        %bothcond2 = or bool %tmp152, %tmp159           ; <bool> [#uses=1]
To setne, not setune, which causes an assertion fault.
llvm-svn: 28244 
							
						 
						
							2006-05-12 17:03:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								78da6792e7 
								
							 
						 
						
							
							
								
								Fold shifts with undef operands.  
							
							 
							
							... 
							
							
							
							llvm-svn: 28167 
							
						 
						
							2006-05-08 17:29:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								751817c54f 
								
							 
						 
						
							
							
								
								constant fold sign_extend_inreg  
							
							 
							
							... 
							
							
							
							llvm-svn: 28151 
							
						 
						
							2006-05-06 23:05:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								393d96a56c 
								
							 
						 
						
							
							
								
								Fix Regression/CodeGen/Generic/2006-04-26-SetCCAnd.ll and  
							
							 
							
							... 
							
							
							
							PR748.
llvm-svn: 27987 
							
						 
						
							2006-04-27 05:01:07 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								4ca2ea5b43 
								
							 
						 
						
							
							
								
								JumpTable support!  What this represents is working asm and jit support for  
							
							 
							
							... 
							
							
							
							x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.
llvm-svn: 27947 
							
						 
						
							2006-04-22 18:53:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bc1b262725 
								
							 
						 
						
							
							
								
								Implement folding of a bunch of binops with undef  
							
							 
							
							... 
							
							
							
							llvm-svn: 27863 
							
						 
						
							2006-04-20 05:39:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7e7ad593cc 
								
							 
						 
						
							
							
								
								Make these predicates return true for bit_convert(buildvector)'s as well as  
							
							 
							
							... 
							
							
							
							buildvectors.
llvm-svn: 27723 
							
						 
						
							2006-04-15 23:38:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d3b504ae10 
								
							 
						 
						
							
							
								
								Implement support for the formal_arguments node.  To get this, targets shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload  
							
							 
							
							... 
							
							
							
							llvm-svn: 27604 
							
						 
						
							2006-04-12 16:20:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								417b96b6dd 
								
							 
						 
						
							
							
								
								Don't memoize vloads in the load map!  Don't memoize them anywhere here, let  
							
							 
							
							... 
							
							
							
							getNode do it.  This fixes CodeGen/Generic/2006-04-11-vecload.ll
llvm-svn: 27602 
							
						 
						
							2006-04-12 03:25:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								02274a5265 
								
							 
						 
						
							
							
								
								Add code generator support for VSELECT  
							
							 
							
							... 
							
							
							
							llvm-svn: 27542 
							
						 
						
							2006-04-08 22:22:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a9e77d14c7 
								
							 
						 
						
							
							
								
								Constant fold bitconvert(undef)  
							
							 
							
							... 
							
							
							
							llvm-svn: 27391 
							
						 
						
							2006-04-04 01:02:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1c22728787 
								
							 
						 
						
							
							
								
								These entries already exist  
							
							 
							
							... 
							
							
							
							llvm-svn: 27340 
							
						 
						
							2006-04-02 02:51:27 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1985e1cbb8 
								
							 
						 
						
							
							
								
								Add some missing node names  
							
							 
							
							... 
							
							
							
							llvm-svn: 27339 
							
						 
						
							2006-04-02 02:41:18 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5fe1f54c17 
								
							 
						 
						
							
							
								
								Significantly improve handling of vectors that are live across basic blocks,  
							
							 
							
							... 
							
							
							
							handling cases where the vector elements need promotion, expansion, and when
the vector type itself needs to be decimated.
llvm-svn: 27278 
							
						 
						
							2006-03-31 02:06:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8d57da2ffc 
								
							 
						 
						
							
							
								
								new node  
							
							 
							
							... 
							
							
							
							llvm-svn: 27231 
							
						 
						
							2006-03-28 19:54:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ffec47ebff 
								
							 
						 
						
							
							
								
								Add an assertion  
							
							 
							
							... 
							
							
							
							llvm-svn: 27228 
							
						 
						
							2006-03-28 19:04:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e55d171ccd 
								
							 
						 
						
							
							
								
								Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum value.  Split them into separate enums.  
							
							 
							
							... 
							
							
							
							llvm-svn: 27201 
							
						 
						
							2006-03-28 00:40:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0e84f1e532 
								
							 
						 
						
							
							
								
								Unbreak the build on non-apple compilers :-(  
							
							 
							
							... 
							
							
							
							llvm-svn: 27173 
							
						 
						
							2006-03-27 16:10:59 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d09b05b0bc 
								
							 
						 
						
							
							
								
								Try again  
							
							 
							
							... 
							
							
							
							llvm-svn: 27171 
							
						 
						
							2006-03-27 08:10:26 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								64efb35c32 
								
							 
						 
						
							
							
								
								Incorrect check for FP all one's  
							
							 
							
							... 
							
							
							
							llvm-svn: 27169 
							
						 
						
							2006-03-27 07:26:17 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c70e33cd6e 
								
							 
						 
						
							
							
								
								Change isBuildVectorAllOnesInteger to isBuildVectorAllOnes. Also check for  
							
							 
							
							... 
							
							
							
							floating point cases.
llvm-svn: 27165 
							
						 
						
							2006-03-27 06:58:47 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								52fcad3a37 
								
							 
						 
						
							
							
								
								Instead of printing "INTRINSIC" on intrinsic node, print the intrinsic name.  
							
							 
							
							... 
							
							
							
							llvm-svn: 27164 
							
						 
						
							2006-03-27 06:45:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a67899195f 
								
							 
						 
						
							
							
								
								Add ISD::isBuildVectorAllZeros predicate  
							
							 
							
							... 
							
							
							
							llvm-svn: 27147 
							
						 
						
							2006-03-26 09:50:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f6e3b957b8 
								
							 
						 
						
							
							
								
								Fix a bug in ISD::isBuildVectorAllOnesInteger that  caused it to always return  
							
							 
							
							... 
							
							
							
							false
llvm-svn: 27131 
							
						 
						
							2006-03-25 22:59:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c2d2811a07 
								
							 
						 
						
							
							
								
								Implement the ISD::isBuildVectorAllOnesInteger predicate  
							
							 
							
							... 
							
							
							
							llvm-svn: 27130 
							
						 
						
							2006-03-25 22:57:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6b05290922 
								
							 
						 
						
							
							
								
								fix some bogus assertions: noop bitconverts are legal  
							
							 
							
							... 
							
							
							
							llvm-svn: 27032 
							
						 
						
							2006-03-24 02:20:47 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ebac9a4adf 
								
							 
						 
						
							
							
								
								Identify the INTRINSIC node  
							
							 
							
							... 
							
							
							
							llvm-svn: 27020 
							
						 
						
							2006-03-24 01:04:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2f4119a608 
								
							 
						 
						
							
							
								
								Implement simple support for vector casting.  This can currently only handle  
							
							 
							
							... 
							
							
							
							casts between legal vector types.
llvm-svn: 26961 
							
						 
						
							2006-03-22 20:09:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7c0cd8cafc 
								
							 
						 
						
							
							
								
								add some trivial support for extractelement.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26928 
							
						 
						
							2006-03-21 20:44:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								672a42d731 
								
							 
						 
						
							
							
								
								Add a hacky workaround for crashes due to vectors live across blocks.  
							
							 
							
							... 
							
							
							
							Note that this code won't work for vectors that aren't legal on the
target.  Improvements coming.
llvm-svn: 26925 
							
						 
						
							2006-03-21 19:20:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								00f0589bc0 
								
							 
						 
						
							
							
								
								Add very basic support for VECTOR_SHUFFLE  
							
							 
							
							... 
							
							
							
							llvm-svn: 26880 
							
						 
						
							2006-03-19 23:56:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9cdc5a0ce7 
								
							 
						 
						
							
							
								
								Add SCALAR_TO_VECTOR support  
							
							 
							
							... 
							
							
							
							llvm-svn: 26866 
							
						 
						
							2006-03-19 06:31:19 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f4e1a53647 
								
							 
						 
						
							
							
								
								Rename ConstantVec -> BUILD_VECTOR and VConstant -> VBUILD_VECTOR.  Allow*BUILD_VECTOR to take variable inputs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26847 
							
						 
						
							2006-03-19 00:52:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								32206f54c6 
								
							 
						 
						
							
							
								
								Change the structure of lowering vector stuff.  Note: This breaks some  
							
							 
							
							... 
							
							
							
							things.
llvm-svn: 26840 
							
						 
						
							2006-03-18 01:44:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								98931bc381 
								
							 
						 
						
							
							
								
								add a couple enum values  
							
							 
							
							... 
							
							
							
							llvm-svn: 26830 
							
						 
						
							2006-03-17 19:53:59 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								bb01d4f272 
								
							 
						 
						
							
							
								
								Remove BRTWOWAY*  
							
							 
							
							... 
							
							
							
							Make the PPC backend not dependent on BRTWOWAY_CC and make the branch
selector smarter about the code it generates, fixing a case in the
readme.
llvm-svn: 26814 
							
						 
						
							2006-03-17 01:40:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4024c00ce7 
								
							 
						 
						
							
							
								
								add support for vector->vector casts  
							
							 
							
							... 
							
							
							
							llvm-svn: 26788 
							
						 
						
							2006-03-15 22:19:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								80268aaeed 
								
							 
						 
						
							
							
								
								Don't depend on the C99 copysign function, implement it ourselves.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26566 
							
						 
						
							2006-03-05 23:57:58 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								55e2aac24b 
								
							 
						 
						
							
							
								
								Fix VC++ compilation error.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26554 
							
						 
						
							2006-03-05 21:43:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3bc4050217 
								
							 
						 
						
							
							
								
								Add some simple copysign folds  
							
							 
							
							... 
							
							
							
							llvm-svn: 26543 
							
						 
						
							2006-03-05 05:30:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5c1ba2ac08 
								
							 
						 
						
							
							
								
								Codegen copysign[f] into a FCOPYSIGN node  
							
							 
							
							... 
							
							
							
							llvm-svn: 26542 
							
						 
						
							2006-03-05 05:09:38 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								23e75f5b49 
								
							 
						 
						
							
							
								
								SDOperand::isOperand should not be a forwarding. It must check *this against N's operands.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26502 
							
						 
						
							2006-03-03 06:42:32 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6b08ae8497 
								
							 
						 
						
							
							
								
								Added isOperand(N): true if this is an operand of N  
							
							 
							
							... 
							
							
							
							llvm-svn: 26501 
							
						 
						
							2006-03-03 06:24:54 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ad3c974a77 
								
							 
						 
						
							
							
								
								remove the read/write port/io intrinsics.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26479 
							
						 
						
							2006-03-03 00:19:58 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								be85e89ec4 
								
							 
						 
						
							
							
								
								- Added VConstant as an abstract version of ConstantVec.  
							
							 
							
							... 
							
							
							
							- All abstrct vector nodes must have # of elements and element type as their
first two operands.
llvm-svn: 26432 
							
						 
						
							2006-03-01 00:51:13 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9f9662b86e 
								
							 
						 
						
							
							
								
								Print ConstantPoolSDNode offset field.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26381 
							
						 
						
							2006-02-26 08:36:57 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ed169db8a5 
								
							 
						 
						
							
							
								
								Added an offset field to ConstantPoolSDNode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26371 
							
						 
						
							2006-02-25 09:54:52 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								abac61603f 
								
							 
						 
						
							
							
								
								Add checks to make sure we don't create bogus extend nodes, and fix a bug  
							
							 
							
							... 
							
							
							
							where we were doing exactly that which was causing failures on x86 and
alpha.
llvm-svn: 26284 
							
						 
						
							2006-02-18 02:40:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								375e1a71cc 
								
							 
						 
						
							
							
								
								Fix a tricky issue in the SimplifyDemandedBits code where CombineTo wasn't  
							
							 
							
							... 
							
							
							
							exactly the API we wanted to call into.  This fixes the crash on crafty last
night.
llvm-svn: 26269 
							
						 
						
							2006-02-17 21:58:01 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								5965bd19f8 
								
							 
						 
						
							
							
								
								kill ADD_PARTS & SUB_PARTS and replace them with fancy new ADDC, ADDE, SUBC  
							
							 
							
							... 
							
							
							
							and SUBE nodes that actually expose what's going on and allow for
significant simplifications in the targets.
llvm-svn: 26255 
							
						 
						
							2006-02-17 05:43:56 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a1ef3ec5b5 
								
							 
						 
						
							
							
								
								Added SelectionDAG::InsertISelMapEntry(). This is used to workaround the gcc  
							
							 
							
							... 
							
							
							
							problem where it inline the map insertion call too aggressively. Before this
change it was producing a frame size of 24k for Select_store(), now it's down
to 10k (by calling this method rather than calling the map insertion operator).
llvm-svn: 26094 
							
						 
						
							2006-02-09 22:11:03 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d3f1db93c1 
								
							 
						 
						
							
							
								
								More changes to reduce frame size.  
							
							 
							
							... 
							
							
							
							Move all getTargetNode() out of SelectionDAG.h into SelectionDAG.cpp. This
prevents them from being inlined.
Change getTargetNode() so they return SDNode * instead of SDOperand to prevent
copying. It should also help compilation speed.
llvm-svn: 26083 
							
						 
						
							2006-02-09 07:15:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d37645c07d 
								
							 
						 
						
							
							
								
								* Added SDNode::isOnlyUse().  
							
							 
							
							... 
							
							
							
							* Fix hasNUsesOfValue(), it should be const.
llvm-svn: 25990 
							
						 
						
							2006-02-05 06:29:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6091407783 
								
							 
						 
						
							
							
								
								remove dead fn  
							
							 
							
							... 
							
							
							
							llvm-svn: 25935 
							
						 
						
							2006-02-03 06:51:34 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								02b5b9cdd6 
								
							 
						 
						
							
							
								
								Added case HANDLENODE to getOperationName().  
							
							 
							
							... 
							
							
							
							llvm-svn: 25920 
							
						 
						
							2006-02-03 01:33:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								32be2dc0af 
								
							 
						 
						
							
							
								
								Allow the specification of explicit alignments for constant pool entries.  
							
							 
							
							... 
							
							
							
							llvm-svn: 25855 
							
						 
						
							2006-01-31 22:23:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ccb4476c87 
								
							 
						 
						
							
							
								
								Remove some special case hacks for CALLSEQ_*, using UpdateNodeOperands  
							
							 
							
							... 
							
							
							
							instead.
llvm-svn: 25780 
							
						 
						
							2006-01-29 07:58:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								758b0ac54b 
								
							 
						 
						
							
							
								
								Legalize ConstantFP into TargetConstantFP when the target allows.  Implement  
							
							 
							
							... 
							
							
							
							custom expansion of ConstantFP nodes.
llvm-svn: 25772 
							
						 
						
							2006-01-29 06:26:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								580b12ad34 
								
							 
						 
						
							
							
								
								add another method variant  
							
							 
							
							... 
							
							
							
							llvm-svn: 25744 
							
						 
						
							2006-01-28 10:09:25 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f34156e8cb 
								
							 
						 
						
							
							
								
								add some methods for updating nodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 25742 
							
						 
						
							2006-01-28 09:32:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fb16a62fba 
								
							 
						 
						
							
							
								
								Remove the ISD::CALL and ISD::TAILCALL nodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 25721 
							
						 
						
							2006-01-28 00:18:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								476e67be14 
								
							 
						 
						
							
							
								
								initial selectiondag support for new INLINEASM node.  Note that inline asms  
							
							 
							
							... 
							
							
							
							with outputs or inputs are not supported yet. :)
llvm-svn: 25664 
							
						 
						
							2006-01-26 22:24:51 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								e74795cd70 
								
							 
						 
						
							
							
								
								First part of bug 680:  
							
							 
							
							... 
							
							
							
							Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same
way as everything else.
llvm-svn: 25606 
							
						 
						
							2006-01-25 18:21:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f9a1e3aadc 
								
							 
						 
						
							
							
								
								Fix an infinite loop I caused by making sure to legalize the flag operand  
							
							 
							
							... 
							
							
							
							of CALLSEQ_* nodes
llvm-svn: 25582 
							
						 
						
							2006-01-24 05:48:21 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								683352382e 
								
							 
						 
						
							
							
								
								another couple selects  
							
							 
							
							... 
							
							
							
							llvm-svn: 25551 
							
						 
						
							2006-01-23 21:51:14 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								c28563874c 
								
							 
						 
						
							
							
								
								another selectto  
							
							 
							
							... 
							
							
							
							llvm-svn: 25548 
							
						 
						
							2006-01-23 20:59:12 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								1e1eb5ee6c 
								
							 
						 
						
							
							
								
								Constant fold ctpop/ctlz/cttz, and a couple other small cleanups  
							
							 
							
							... 
							
							
							
							llvm-svn: 25357 
							
						 
						
							2006-01-16 08:07:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9597b33d58 
								
							 
						 
						
							
							
								
								add a missing node name  
							
							 
							
							... 
							
							
							
							llvm-svn: 25327 
							
						 
						
							2006-01-15 08:39:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a5110e854d 
								
							 
						 
						
							
							
								
								add stacksave/stackrestore nodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 25270 
							
						 
						
							2006-01-13 02:39:42 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								982493300e 
								
							 
						 
						
							
							
								
								ignore register  #0  
							
							 
							
							... 
							
							
							
							llvm-svn: 25223 
							
						 
						
							2006-01-11 22:13:48 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								1b8121b227 
								
							 
						 
						
							
							
								
								Add bswap, rotl, and rotr nodes  
							
							 
							
							... 
							
							
							
							Add dag combiner code to recognize rotl, rotr
Add ppc code to match rotl
Targets should add rotl/rotr patterns if they have them
llvm-svn: 25222 
							
						 
						
							2006-01-11 21:21:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								53a1f57fc5 
								
							 
						 
						
							
							
								
								New getNode() variants.  
							
							 
							
							... 
							
							
							
							llvm-svn: 25156 
							
						 
						
							2006-01-09 18:29:18 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								762e9ec06c 
								
							 
						 
						
							
							
								
								Added initial support for DEBUG_LABEL allowing debug specific labels to be  
							
							 
							
							... 
							
							
							
							inserted in the code.
llvm-svn: 25104 
							
						 
						
							2006-01-05 01:25:28 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								164db3a7eb 
								
							 
						 
						
							
							
								
								Make sure to pass the offset into the new node, so that we don't silently  
							
							 
							
							... 
							
							
							
							drop it on the floor.
llvm-svn: 25044 
							
						 
						
							2005-12-30 00:10:38 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								efbbedbf4a 
								
							 
						 
						
							
							
								
								Fold bitconv(bitconv(x)) -> x.  We now compile this:  
							
							 
							
							... 
							
							
							
							void foo(double);
void bar(double X) { foo(X); }
to this:
bar:
        save -96, %o6, %o6
        or %g0, %i0, %o0
        or %g0, %i1, %o1
        call foo
        nop
        restore %g0, %g0, %g0
        retl
        nop
instead of this:
bar:
        save -112, %o6, %o6
        st %i1, [%i6+-4]
        st %i0, [%i6+-8]
        ldd [%i6+-8], %f0
        std %f0, [%i6+-16]
        ld [%i6+-12], %o1
        ld [%i6+-16], %o0
        call foo
        nop
        restore %g0, %g0, %g0
        retl
        nop
on V8.
llvm-svn: 24981 
							
						 
						
							2005-12-23 05:37:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a187460552 
								
							 
						 
						
							
							
								
								constant fold bits_convert in getNode and in the dag combiner for fp<->int  
							
							 
							
							... 
							
							
							
							conversions.  This allows V8 to compiles this:
void %test() {
        call float %test2( float 1.000000e+00, float 2.000000e+00, double 3.000000e+00, double* null )
        ret void
}
into:
test:
        save -96, %o6, %o6
        sethi 0, %o3
        sethi 1049088, %o2
        sethi 1048576, %o1
        sethi 1040384 , %o0
        or %g0, %o3, %o4
        call test2
        nop
        restore %g0, %g0, %g0
        retl
        nop
instead of:
test:
        save -112, %o6, %o6
        sethi 0, %o4
        sethi 1049088, %l0
        st %o4, [%i6+-12]
        st %l0, [%i6+-16]
        ld [%i6+-12], %o3
        ld [%i6+-16], %o2
        sethi 1048576, %o1
        sethi 1040384 , %o0
        call test2
        nop
        restore %g0, %g0, %g0
        retl
        nop
llvm-svn: 24980 
							
						 
						
							2005-12-23 05:30:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								36e663d6e1 
								
							 
						 
						
							
							
								
								add very simple support for the BIT_CONVERT node  
							
							 
							
							... 
							
							
							
							llvm-svn: 24970 
							
						 
						
							2005-12-23 00:16:34 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								177d7af5d5 
								
							 
						 
						
							
							
								
								remove dead code  
							
							 
							
							... 
							
							
							
							llvm-svn: 24965 
							
						 
						
							2005-12-22 21:16:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6af02635a7 
								
							 
						 
						
							
							
								
								Added a hook to print out names of target specific DAG nodes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 24877 
							
						 
						
							2005-12-20 06:22:03 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9fd9541367 
								
							 
						 
						
							
							
								
								Print out opcode number if it's an unknown target node.  
							
							 
							
							... 
							
							
							
							llvm-svn: 24869 
							
						 
						
							2005-12-19 23:11:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								50b2d302d5 
								
							 
						 
						
							
							
								
								Fix a case where the DAG Combiner would accidentally CSE flag-producing nodes,  
							
							 
							
							... 
							
							
							
							creating graphs that cannot be scheduled.
llvm-svn: 24866 
							
						 
						
							2005-12-19 22:21:21 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								7c462768ed 
								
							 
						 
						
							
							
								
								Added source file/line correspondence for dwarf (PowerPC only at this point.)  
							
							 
							
							... 
							
							
							
							llvm-svn: 24748 
							
						 
						
							2005-12-16 22:45:29 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								dadc1057ac 
								
							 
						 
						
							
							
								
								Added new getNode and getTargetNode variants for X86 stores.  
							
							 
							
							... 
							
							
							
							llvm-svn: 24653 
							
						 
						
							2005-12-10 00:37:58 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								41b1cdc771 
								
							 
						 
						
							
							
								
								Teach the SelectionDAG ISel how to turn ConstantPacked values into  
							
							 
							
							... 
							
							
							
							constant nodes with vector types.  Also teach the asm printer how to print
ConstantPacked constant pool entries.  This allows us to generate altivec
code such as the following, which adds a vector constantto a packed float.
LCPI1_0:  <4 x float> < float 0.0e+0, float 0.0e+0, float 0.0e+0, float 1.0e+0 >
        .space  4
        .space  4
        .space  4
        .long   1065353216      ; float 1
        .text
        .align  4
        .globl  _foo
_foo:
        lis r2, ha16(LCPI1_0)
        la r2, lo16(LCPI1_0)(r2)
        li r4, 0
        lvx v0, r4, r2
        lvx v1, r4, r3
        vaddfp v0, v1, v0
        stvx v0, r4, r3
        blr
For the llvm code:
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = add <4 x float> %tmp1, < float 0.0, float 0.0, float 0.0, float 1.0 >
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}
llvm-svn: 24616 
							
						 
						
							2005-12-06 06:18:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0142afd6c1 
								
							 
						 
						
							
							
								
								Don't remove two operand, two result nodes from the binary ops map.  These  
							
							 
							
							... 
							
							
							
							should come from the arbitrary ops map.
This fixes Regression/CodeGen/PowerPC/2005-12-01-Crash.ll
llvm-svn: 24571 
							
						 
						
							2005-12-01 23:14:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9d0d715e83 
								
							 
						 
						
							
							
								
								This is a bugfix for SelectNodeTo.  In certain situations, we could be  
							
							 
							
							... 
							
							
							
							selecting a node and use a mix of getTargetNode() and SelectNodeTo.  Because
SelectNodeTo didn't check the CSE maps for a preexisting node and didn't insert
its result into the CSE maps, we would sometimes miss a CSE opportunity.
This is extremely rare, but worth fixing for completeness.
llvm-svn: 24565 
							
						 
						
							2005-12-01 18:00:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								be5dd5da19 
								
							 
						 
						
							
							
								
								Make SelectNodeTo return N  
							
							 
							
							... 
							
							
							
							llvm-svn: 24548 
							
						 
						
							2005-11-30 22:45:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c174048430 
								
							 
						 
						
							
							
								
								CALLSEQ_START/END nodes don't get memoized, do not add them in when  
							
							 
							
							... 
							
							
							
							replaceAllUses'ing.
llvm-svn: 24539 
							
						 
						
							2005-11-30 18:20:52 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								11d61613af 
								
							 
						 
						
							
							
								
								Fixed a bug introduced by my last commit: TargetGlobalValues should key on  
							
							 
							
							... 
							
							
							
							GlobalValue * and index pair. Update getGlobalAddress() for symmetry.
llvm-svn: 24524 
							
						 
						
							2005-11-30 02:49:21 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								0e0de2f3f0 
								
							 
						 
						
							
							
								
								Added an index field to GlobalAddressSDNode so it can represent X+12, etc.  
							
							 
							
							... 
							
							
							
							llvm-svn: 24523 
							
						 
						
							2005-11-30 02:04:11 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								435b402e1f 
								
							 
						 
						
							
							
								
								Add support for a new STRING and LOCATION node for line number support, patch  
							
							 
							
							... 
							
							
							
							contributed by Daniel Berlin, with a few cleanups here and there by me.
llvm-svn: 24515 
							
						 
						
							2005-11-29 06:21:05 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								d37c13154a 
								
							 
						 
						
							
							
								
								Check in code to scalarize arbitrarily wide packed types for some simple  
							
							 
							
							... 
							
							
							
							vector operations (load, add, sub, mul).
This allows us to codegen:
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = add <4 x float> %tmp1, %tmp1
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}
on ppc as:
_foo:
        lfs f0, 12(r3)
        lfs f1, 8(r3)
        lfs f2, 4(r3)
        lfs f3, 0(r3)
        fadds f0, f0, f0
        fadds f1, f1, f1
        fadds f2, f2, f2
        fadds f3, f3, f3
        stfs f0, 12(r3)
        stfs f1, 8(r3)
        stfs f2, 4(r3)
        stfs f3, 0(r3)
        blr
llvm-svn: 24484 
							
						 
						
							2005-11-22 18:16:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f090f7eb0e 
								
							 
						 
						
							
							
								
								Add some method variants, patch by Evan Cheng  
							
							 
							
							... 
							
							
							
							llvm-svn: 24418 
							
						 
						
							2005-11-19 01:44:53 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								b2e089c31b 
								
							 
						 
						
							
							
								
								Teach LLVM how to scalarize packed types.  Currently, this only works on  
							
							 
							
							... 
							
							
							
							packed types with an element count of 1, although more generic support is
coming.  This allows LLVM to turn the following code:
void %foo(<1 x float> * %a) {
entry:
  %tmp1 = load <1 x float> * %a;
  %tmp2 = add <1 x float> %tmp1, %tmp1
  store <1 x float> %tmp2, <1 x float> *%a
  ret void
}
Into:
_foo:
        lfs f0, 0(r3)
        fadds f0, f0, f0
        stfs f0, 0(r3)
        blr
llvm-svn: 24416 
							
						 
						
							2005-11-19 00:36:38 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								01aa56397d 
								
							 
						 
						
							
							
								
								continued readcyclecounter support  
							
							 
							
							... 
							
							
							
							llvm-svn: 24300 
							
						 
						
							2005-11-11 16:47:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bf4f233214 
								
							 
						 
						
							
							
								
								Switch the allnodes list from a vector of pointers to an ilist of nodes.This eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding  
							
							 
							
							... 
							
							
							
							nodes to the graph.
llvm-svn: 24263 
							
						 
						
							2005-11-09 23:47:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								88fa11c3d5 
								
							 
						 
						
							
							
								
								Change the ValueList array for each node to be shared instead of individuallyallocated.  Further, in the common case where a node has a single value, justreference an element from a small array.  This is a small compile-time win.  
							
							 
							
							... 
							
							
							
							llvm-svn: 24251 
							
						 
						
							2005-11-08 23:30:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7e4b5d33cb 
								
							 
						 
						
							
							
								
								Switch the operandlist/valuelist from being vectors to being just an array.This saves 12 bytes from SDNode, but doesn't speed things up substantially  
							
							 
							
							... 
							
							
							
							(our graphs apparently already fit within the cache on my g5).  In any case
this reduces memory usage.
llvm-svn: 24249 
							
						 
						
							2005-11-08 22:07:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								aba48dd34c 
								
							 
						 
						
							
							
								
								Clean up RemoveDeadNodes significantly, by eliminating the need for a temporary  
							
							 
							
							... 
							
							
							
							set and eliminating the need to iterate whenever something is removed (which
can be really slow in some cases).  Thx to Jim for pointing out something silly
I was getting stuck on. :)
llvm-svn: 24241 
							
						 
						
							2005-11-08 18:52:27 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								4b3932aa89 
								
							 
						 
						
							
							
								
								add TargetExternalSymbol  
							
							 
							
							... 
							
							
							
							llvm-svn: 23886 
							
						 
						
							2005-10-23 03:40:17 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								02b23c6065 
								
							 
						 
						
							
							
								
								Move some Legalize functionality over to the DAGCombiner where it belongs.  
							
							 
							
							... 
							
							
							
							Kill some dead code.
llvm-svn: 23706 
							
						 
						
							2005-10-13 03:11:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								56e44a6da5 
								
							 
						 
						
							
							
								
								This function is now dead  
							
							 
							
							... 
							
							
							
							llvm-svn: 23684 
							
						 
						
							2005-10-10 16:49:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bcfebebf22 
								
							 
						 
						
							
							
								
								Enable Nate's excellent DAG combiner work by default.  This allows the  
							
							 
							
							... 
							
							
							
							removal of a bunch of ad-hoc and crufty code from SelectionDAG.cpp.
llvm-svn: 23682 
							
						 
						
							2005-10-10 16:47:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1d3dc00674 
								
							 
						 
						
							
							
								
								(X & Y) & C == 0 if either X&C or Y&C are zero  
							
							 
							
							... 
							
							
							
							llvm-svn: 23678 
							
						 
						
							2005-10-09 22:12:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								be4bbca0ba 
								
							 
						 
						
							
							
								
								remove debugging code  
							
							 
							
							... 
							
							
							
							llvm-svn: 23663 
							
						 
						
							2005-10-07 15:31:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fb12624a3f 
								
							 
						 
						
							
							
								
								implement CodeGen/PowerPC/div-2.ll:test2-4 by propagating zero bits through  
							
							 
							
							... 
							
							
							
							C-X's
llvm-svn: 23662 
							
						 
						
							2005-10-07 15:30:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b27a4147d3 
								
							 
						 
						
							
							
								
								fix indentation  
							
							 
							
							... 
							
							
							
							llvm-svn: 23660 
							
						 
						
							2005-10-07 06:37:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5bcd0dd811 
								
							 
						 
						
							
							
								
								Turn sdivs into udivs when we can prove the sign bits are clear.  This  
							
							 
							
							... 
							
							
							
							implements CodeGen/PowerPC/div-2.ll
llvm-svn: 23659 
							
						 
						
							2005-10-07 06:10:46 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								558beb3729 
								
							 
						 
						
							
							
								
								Let the combiner handle more cases  
							
							 
							
							... 
							
							
							
							llvm-svn: 23641 
							
						 
						
							2005-10-05 21:44:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a49e16fefa 
								
							 
						 
						
							
							
								
								implement visitBR_CC so that PowerPC/inverted-bool-compares.ll passes  
							
							 
							
							... 
							
							
							
							with the dag combiner.  This speeds up espresso by 8%, reaching performance
parity with the dag-combiner-disabled llc.
llvm-svn: 23636 
							
						 
						
							2005-10-05 06:47:48 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b11d15637a 
								
							 
						 
						
							
							
								
								fix some pastos  
							
							 
							
							... 
							
							
							
							llvm-svn: 23635 
							
						 
						
							2005-10-05 06:37:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								06f1d0f73a 
								
							 
						 
						
							
							
								
								Add a new HandleNode class, which is used to handle (haha) cases in the  
							
							 
							
							... 
							
							
							
							dead node elim and dag combiner passes where the root is potentially updated.
This fixes a fixme in the dag combiner.
llvm-svn: 23634 
							
						 
						
							2005-10-05 06:35:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6f3b577ee6 
								
							 
						 
						
							
							
								
								Add FP versions of the binary operators, keeping the int and fp worlds seperate.  
							
							 
							
							... 
							
							
							
							Though I have done extensive testing, it is possible that this will break
things in configs I can't test.  Please let me know if this causes a problem
and I'll fix it ASAP.
llvm-svn: 23504 
							
						 
						
							2005-09-28 22:28:18 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								59a05bdde6 
								
							 
						 
						
							
							
								
								Turn (X^C1) == C2 into X == C1^C2 iff X&~C1 = 0 (and move a function)  
							
							 
							
							... 
							
							
							
							This happens all the time on PPC for bool values, e.g. eliminating a xori
in inverted-bool-compares.ll.
This should be added to the dag combiner as well.
llvm-svn: 23403 
							
						 
						
							2005-09-23 00:55:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								331b311f7b 
								
							 
						 
						
							
							
								
								Fix a problem duraid encountered on itanium where this folding:  
							
							 
							
							... 
							
							
							
							select (x < y), 1, 0 -> (x < y) incorrectly: the setcc returns i1 but the
select returned i32.  Add the zero extend as needed.
llvm-svn: 23301 
							
						 
						
							2005-09-09 23:00:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								16e5cb87ba 
								
							 
						 
						
							
							
								
								Fix a crash viewing dags that have target nodes in them  
							
							 
							
							... 
							
							
							
							llvm-svn: 23300 
							
						 
						
							2005-09-09 22:35:03 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								049b748c76 
								
							 
						 
						
							
							
								
								Last round of 2-node folds from SD.cpp.  Will  move on to 3 node ops such  
							
							 
							
							... 
							
							
							
							as setcc and select next.
llvm-svn: 23295 
							
						 
						
							2005-09-09 19:49:52 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								85c1cc4523 
								
							 
						 
						
							
							
								
								Move yet more folds over to the dag combiner from sd.cpp  
							
							 
							
							... 
							
							
							
							llvm-svn: 23278 
							
						 
						
							2005-09-08 20:18:10 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								2cc2c9a79c 
								
							 
						 
						
							
							
								
								Another round of dag combiner changes.  This fixes some missing XOR folds  
							
							 
							
							... 
							
							
							
							as well as fixing how we replace old values with new values.
llvm-svn: 23260 
							
						 
						
							2005-09-07 23:25:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fe883adfd2 
								
							 
						 
						
							
							
								
								Fix a bug nate ran into with replacealluseswith.  In the recursive cse case,  
							
							 
							
							... 
							
							
							
							we were losing a node, causing an assertion to fail.  Now we eagerly delete
discovered CSE's, and provide an optional vector to keep track of these
discovered equivalences.
llvm-svn: 23255 
							
						 
						
							2005-09-07 05:37:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								821628ff2a 
								
							 
						 
						
							
							
								
								Fix a checking failure in gs  
							
							 
							
							... 
							
							
							
							llvm-svn: 23235 
							
						 
						
							2005-09-03 01:04:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b95b280bee 
								
							 
						 
						
							
							
								
								Make sure to auto-cse nullary ops  
							
							 
							
							... 
							
							
							
							llvm-svn: 23224 
							
						 
						
							2005-09-02 19:36:17 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1e89e36dcd 
								
							 
						 
						
							
							
								
								Fix some buggy logic where we would try to remove nodes with two operands  
							
							 
							
							... 
							
							
							
							from the binary ops map, even if they had multiple results.  This latent bug
caused a few failures with the dag isel last night.
To prevent stuff like this from happening in the future, add some really
strict checking to make sure that the CSE maps always match up with reality!
llvm-svn: 23221 
							
						 
						
							2005-09-02 19:15:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8c393c218b 
								
							 
						 
						
							
							
								
								Add support for ANY_EXTEND and add a few minor folds for it  
							
							 
							
							... 
							
							
							
							llvm-svn: 23203 
							
						 
						
							2005-09-02 00:17:32 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								d78d975437 
								
							 
						 
						
							
							
								
								Fix some code in the current node combining code, spotted when it was moved  
							
							 
							
							... 
							
							
							
							over to DAGCombiner.cpp
1. Don't assume that SetCC returns i1 when folding (xor (setcc) constant)
2. Don't duplicate code in folding AND with AssertZext that is handled by
   MaskedValueIsZero
llvm-svn: 23196 
							
						 
						
							2005-09-01 23:25:49 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								d8c84e3c7e 
								
							 
						 
						
							
							
								
								Fix VC++ precedence warnings  
							
							 
							
							... 
							
							
							
							llvm-svn: 23169 
							
						 
						
							2005-08-31 02:47:06 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								539e7c892c 
								
							 
						 
						
							
							
								
								Sigh, not my day.  Fix typo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 23166 
							
						 
						
							2005-08-31 00:43:49 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								d513d8a662 
								
							 
						 
						
							
							
								
								Fix a mistake in my previous patch pointed out by sabre; the AssertZext  
							
							 
							
							... 
							
							
							
							case in MaskedValueIsZero was wrong.
llvm-svn: 23165 
							
						 
						
							2005-08-31 00:43:08 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								e07bc28cca 
								
							 
						 
						
							
							
								
								Remove some unnecessary casts, and add the AssertZext case to  
							
							 
							
							... 
							
							
							
							MaskedValueIsZero.
llvm-svn: 23164 
							
						 
						
							2005-08-31 00:27:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5764da422a 
								
							 
						 
						
							
							
								
								Allow physregs to occur in the dag with multiple types.  Though I don't likethis, it is a requirement on PPC, which can have an f32 value in r3 at onepoint in a function and a f64 value in r3 at another point.  :(  
							
							 
							
							... 
							
							
							
							This fixes compilation of mesa
llvm-svn: 23161 
							
						 
						
							2005-08-30 22:38:38 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								a3da8c4819 
								
							 
						 
						
							
							
								
								Remove a bogus piece of my AssertSext/AssertZext patch.  oops.  
							
							 
							
							... 
							
							
							
							llvm-svn: 23148 
							
						 
						
							2005-08-30 02:54:28 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								43144a2fe0 
								
							 
						 
						
							
							
								
								Add support for AssertSext and AssertZext, folding other extensions with  
							
							 
							
							... 
							
							
							
							them.  This allows for elminination of redundant extends in the entry
blocks of functions on PowerPC.
Add support for i32 x i32 -> i64 multiplies, by recognizing when the inputs
to ISD::MUL in ExpandOp are actually just extended i32 values and not real
i64 values.  this allows us to codegen
int mulhs(int a, int b) { return ((long long)a * b) >> 32; }
as:
_mulhs:
        mulhw r3, r4, r3
        blr
instead of:
_mulhs:
        mulhwu r2, r4, r3
        srawi r5, r3, 31
        mullw r5, r4, r5
        add r2, r2, r5
        srawi r4, r4, 31
        mullw r3, r4, r3
        add r3, r2, r3
        blr
with a similar improvement on x86.
llvm-svn: 23147 
							
						 
						
							2005-08-30 02:44:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c738d000d5 
								
							 
						 
						
							
							
								
								Add a new API for Nate  
							
							 
							
							... 
							
							
							
							llvm-svn: 23131 
							
						 
						
							2005-08-29 21:59:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								87421c8658 
								
							 
						 
						
							
							
								
								Fix a bug in ReplaceAllUsesWith  
							
							 
							
							... 
							
							
							
							llvm-svn: 23122 
							
						 
						
							2005-08-28 23:59:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4a5ebe94ba 
								
							 
						 
						
							
							
								
								Checking types here is not safe, because multiple types can map to the same  
							
							 
							
							... 
							
							
							
							register class.
llvm-svn: 23103 
							
						 
						
							2005-08-26 21:39:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								373f048a79 
								
							 
						 
						
							
							
								
								Revampt ReplaceAllUsesWith to be more efficient and easier to use.  
							
							 
							
							... 
							
							
							
							llvm-svn: 23087 
							
						 
						
							2005-08-26 18:36:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c30405e0ee 
								
							 
						 
						
							
							
								
								Change ConstantPoolSDNode to actually hold the Constant itself instead of  
							
							 
							
							... 
							
							
							
							putting it into the constant pool.  This allows the isel machinery to
create constants that it will end up deciding are not needed, without them
ending up in the resultant function constant pool.
llvm-svn: 23081 
							
						 
						
							2005-08-26 17:15:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2091a36631 
								
							 
						 
						
							
							
								
								Fix a huge annoyance: SelectNodeTo took types before the opcode unlike  
							
							 
							
							... 
							
							
							
							every other SD API.  Fix it to take the opcode before the types.
llvm-svn: 23079 
							
						 
						
							2005-08-26 16:36:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1cb550c603 
								
							 
						 
						
							
							
								
								Fix a nasty bug from a previous patch of mine  
							
							 
							
							... 
							
							
							
							llvm-svn: 23069 
							
						 
						
							2005-08-26 00:13:12 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								33840c3268 
								
							 
						 
						
							
							
								
								New fold for SELECT_CC  
							
							 
							
							... 
							
							
							
							llvm-svn: 23058 
							
						 
						
							2005-08-25 20:04:38 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f9c19157df 
								
							 
						 
						
							
							
								
								Don't auto-cse nodes that return flags  
							
							 
							
							... 
							
							
							
							llvm-svn: 23055 
							
						 
						
							2005-08-25 19:12:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9d28a56d55 
								
							 
						 
						
							
							
								
								simplify the code a bit using isOperationLegal  
							
							 
							
							... 
							
							
							
							llvm-svn: 23053 
							
						 
						
							2005-08-25 17:54:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								407c6415b4 
								
							 
						 
						
							
							
								
								ADd support for TargetConstantPool nodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 23041 
							
						 
						
							2005-08-25 05:03:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bbe0e7df2c 
								
							 
						 
						
							
							
								
								add a new TargetFrameIndex node  
							
							 
							
							... 
							
							
							
							llvm-svn: 23035 
							
						 
						
							2005-08-25 00:43:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								45e1ce4e28 
								
							 
						 
						
							
							
								
								add a method  
							
							 
							
							... 
							
							
							
							llvm-svn: 23027 
							
						 
						
							2005-08-24 23:00:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d7ee4d8671 
								
							 
						 
						
							
							
								
								Add ReplaceAllUsesWith that can take a vector of replacement values.  
							
							 
							
							... 
							
							
							
							Add some foldings to hopefully help the illegal setcc issue, and move some code around.
llvm-svn: 23025 
							
						 
						
							2005-08-24 22:44:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								86b1658d58 
								
							 
						 
						
							
							
								
								teach selection dag mask tracking about the fact that select_cc operates like  
							
							 
							
							... 
							
							
							
							select.  Also teach it that the bit count instructions can only set the low bits
of the result, depending on the size of the input.
This allows us to compile this:
int %eq0(int %a) {
        %tmp.1 = seteq int %a, 0                ; <bool> [#uses=1]
        %tmp.2 = cast bool %tmp.1 to int                ; <int> [#uses=1]
        ret int %tmp.2
}
To this:
_eq0:
        cntlzw r2, r3
        srwi r3, r2, 5
        blr
instead of this:
_eq0:
        cntlzw r2, r3
        rlwinm r3, r2, 27, 31, 31
        blr
when setcc is marked illegal on ppc (which restores parity to non-illegal
setcc).  Thanks to Nate for pointing this out.
llvm-svn: 23013 
							
						 
						
							2005-08-24 16:46:55 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								45bbbb3f11 
								
							 
						 
						
							
							
								
								Teach SelectionDAG how to simplify a few more setcc-equivalent select_cc  
							
							 
							
							... 
							
							
							
							nodes so that backends don't have to.
llvm-svn: 22999 
							
						 
						
							2005-08-24 04:57:57 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								72eab5dd5c 
								
							 
						 
						
							
							
								
								Fix optimization of select_cc seteq X, 0, 1, 0 -> srl (ctlz X), log2 X size  
							
							 
							
							... 
							
							
							
							llvm-svn: 22995 
							
						 
						
							2005-08-24 00:21:28 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								bf8c3939d7 
								
							 
						 
						
							
							
								
								Teach the SelectionDAG how to transform select_cc eq, X, 0, 1, 0 into  
							
							 
							
							... 
							
							
							
							either seteq X, 0 or srl (ctlz X), size(X-1), depending on what's legal
for the target.
llvm-svn: 22978 
							
						 
						
							2005-08-23 05:41:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								466fecee19 
								
							 
						 
						
							
							
								
								add anew method  
							
							 
							
							... 
							
							
							
							llvm-svn: 22957 
							
						 
						
							2005-08-21 22:30:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0548f50501 
								
							 
						 
						
							
							
								
								add a method  
							
							 
							
							... 
							
							
							
							llvm-svn: 22955 
							
						 
						
							2005-08-21 19:48:59 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								707b39fb8c 
								
							 
						 
						
							
							
								
								add a method  
							
							 
							
							... 
							
							
							
							llvm-svn: 22949 
							
						 
						
							2005-08-21 18:49:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1be7eddecf 
								
							 
						 
						
							
							
								
								Add support for TargetGlobalAddress nodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 22938 
							
						 
						
							2005-08-19 22:31:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0875d1ab89 
								
							 
						 
						
							
							
								
								Fix a bug in previous commit  
							
							 
							
							... 
							
							
							
							llvm-svn: 22936 
							
						 
						
							2005-08-19 21:34:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4990335eb8 
								
							 
						 
						
							
							
								
								Print physreg register nodes with target names (e.g. F1) instead of numbers  
							
							 
							
							... 
							
							
							
							llvm-svn: 22934 
							
						 
						
							2005-08-19 21:21:16 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								d1f22b1282 
								
							 
						 
						
							
							
								
								Fix VC++ precedence warning.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22902 
							
						 
						
							2005-08-19 04:39:48 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								19a271a67b 
								
							 
						 
						
							
							
								
								Add support for target DAG nodes that take 4 operands, such as PowerPC's  
							
							 
							
							... 
							
							
							
							rlwinm.
llvm-svn: 22856 
							
						 
						
							2005-08-18 07:30:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								802080d812 
								
							 
						 
						
							
							
								
								Fix printing of VTSDNodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 22853 
							
						 
						
							2005-08-18 03:31:02 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								d66e616545 
								
							 
						 
						
							
							
								
								Move the code dependency for MathExtras.h from SelectionDAGNodes.h.  
							
							 
							
							... 
							
							
							
							Added some class dividers in SelectionDAG.cpp.
llvm-svn: 22841 
							
						 
						
							2005-08-17 20:08:02 +00:00  
						
					 
				
					
						
							
							
								 
								Jim Laskey
							
						 
						
							 
							
							
							
							
								
							
							
								b74c666186 
								
							 
						 
						
							
							
								
								Culling out use of unions for converting FP to bits and vice versa.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22838 
							
						 
						
							2005-08-17 19:34:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ab0de9d7fc 
								
							 
						 
						
							
							
								
								Fix a bug in RemoveDeadNodes where it would crash when its "optional"  
							
							 
							
							... 
							
							
							
							argument is not specified.
Implement ReplaceAllUsesWith.
llvm-svn: 22834 
							
						 
						
							2005-08-17 19:00:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0d2456e1f0 
								
							 
						 
						
							
							
								
								add a new TargetConstant node  
							
							 
							
							... 
							
							
							
							llvm-svn: 22813 
							
						 
						
							2005-08-17 00:34:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								33182325f5 
								
							 
						 
						
							
							
								
								Eliminate the RegSDNode class, which 3 nodes (CopyFromReg/CopyToReg/ImplicitDef)  
							
							 
							
							... 
							
							
							
							used to tack a register number onto the node.
Instead of doing this, make a new node, RegisterSDNode, which is a leaf
containing a register number.  These three operations just become normal
DAG nodes now, instead of requiring special handling.
Note that with this change, it is no longer correct to make illegal
CopyFromReg/CopyToReg nodes.  The legalizer will not touch them, and this
is bad, so don't do it. :)
llvm-svn: 22806 
							
						 
						
							2005-08-16 21:55:35 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								371e49515d 
								
							 
						 
						
							
							
								
								Implement BR_CC and BRTWOWAY_CC.  This allows the removal of a rather nasty  
							
							 
							
							... 
							
							
							
							fixme from the PowerPC backend.  Emit slightly better code for legalizing
select_cc.
llvm-svn: 22805 
							
						 
						
							2005-08-16 19:49:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bc89226527 
								
							 
						 
						
							
							
								
								Allow passing a dag into dump and getOperationName.  If one is available  
							
							 
							
							... 
							
							
							
							when printing a node, use it to render target operations with their
target instruction name instead of "<<unknown>>".
llvm-svn: 22804 
							
						 
						
							2005-08-16 18:33:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1973278b38 
								
							 
						 
						
							
							
								
								Add some methods for dag->dag isel.  
							
							 
							
							... 
							
							
							
							Split RemoveNodeFromCSEMaps out of DeleteNodesIfDead to do it.
llvm-svn: 22801 
							
						 
						
							2005-08-16 18:17:10 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								dc3154ec66 
								
							 
						 
						
							
							
								
								Remove an unncessary argument to SimplifySelectCC and add an additional  
							
							 
							
							... 
							
							
							
							assert when creating a select_cc node.
llvm-svn: 22780 
							
						 
						
							2005-08-13 06:14:17 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								b6651e81a0 
								
							 
						 
						
							
							
								
								Fix the fabs regression on x86 by abstracting the select_cc optimization  
							
							 
							
							... 
							
							
							
							out into SimplifySelectCC.  This allows both ISD::SELECT and ISD::SELECT_CC
to use the same set of simplifying folds.
llvm-svn: 22779 
							
						 
						
							2005-08-13 06:00:21 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								21381e8424 
								
							 
						 
						
							
							
								
								implement a couple of simple shift foldings.  
							
							 
							
							... 
							
							
							
							e.g.  (X & 7) >> 3   -> 0
llvm-svn: 22774 
							
						 
						
							2005-08-12 23:54:58 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								5c7656fd53 
								
							 
						 
						
							
							
								
								Add a select_cc optimization for recognizing abs(int).  This speeds up an  
							
							 
							
							... 
							
							
							
							integer MPEG encoding loop by a factor of two.
llvm-svn: 22758 
							
						 
						
							2005-08-11 02:18:13 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								180b08897f 
								
							 
						 
						
							
							
								
								Some SELECT_CC cleanups:  
							
							 
							
							... 
							
							
							
							1. move assertions for node creation to getNode()
2. legalize the values returned in ExpandOp immediately
3. Move select_cc optimizations from SELECT's getNode() to SELECT_CC's,
   allowing them to be cleaned up significantly.
This paves the way to pick up additional optimizations on SELECT_CC, such
as sum-of-absolute-differences.
llvm-svn: 22757 
							
						 
						
							2005-08-11 01:12:20 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								e5b86d7442 
								
							 
						 
						
							
							
								
								Add new node, SELECT_CC.  This node is for targets that don't natively  
							
							 
							
							... 
							
							
							
							implement SELECT.
llvm-svn: 22755 
							
						 
						
							2005-08-10 20:51:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								21c0fd9e8f 
								
							 
						 
						
							
							
								
								Fix an oversight that may be causing PR617.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22753 
							
						 
						
							2005-08-10 17:37:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								679f5b0b40 
								
							 
						 
						
							
							
								
								Fix spelling, fix some broken canonicalizations by my last patch  
							
							 
							
							... 
							
							
							
							llvm-svn: 22734 
							
						 
						
							2005-08-09 23:09:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								14e060f743 
								
							 
						 
						
							
							
								
								add cc nodes to the AllNodes list so they show up in Graphviz output  
							
							 
							
							... 
							
							
							
							llvm-svn: 22731 
							
						 
						
							2005-08-09 20:40:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d47675ed24 
								
							 
						 
						
							
							
								
								Eliminate the SetCCSDNode in favor of a CondCodeSDNode class.  This pulls the  
							
							 
							
							... 
							
							
							
							CC out of the SetCC operation, making SETCC a standard ternary operation and
CC's a standard DAG leaf.  This will make it possible for other node to use
CC's as operands in the future...
llvm-svn: 22728 
							
						 
						
							2005-08-09 20:20:18 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0c26a0b902 
								
							 
						 
						
							
							
								
								add a small simplification that can be exposed after promotion/expansion  
							
							 
							
							... 
							
							
							
							llvm-svn: 22691 
							
						 
						
							2005-08-07 05:00:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1095dc94a9 
								
							 
						 
						
							
							
								
								Fix a use-of-dangling-pointer bug, from the introduction of SrcValue's.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22679 
							
						 
						
							2005-08-05 16:55:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6667bdbaca 
								
							 
						 
						
							
							
								
								Update to use the new MathExtras.h support for log2 computation.  
							
							 
							
							... 
							
							
							
							Patch contributed by Jim Laskey!
llvm-svn: 22594 
							
						 
						
							2005-08-02 19:26:06 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								5f4ef3c5a8 
								
							 
						 
						
							
							
								
								Eliminate all remaining tabs and trailing spaces.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22523 
							
						 
						
							2005-07-27 06:12:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								de0a4b1987 
								
							 
						 
						
							
							
								
								Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode.  
							
							 
							
							... 
							
							
							
							This is the last MVTSDNode.
This allows us to eliminate a bunch of special case code for handling
MVTSDNodes.
llvm-svn: 22367 
							
						 
						
							2005-07-10 01:55:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								36db1ed06f 
								
							 
						 
						
							
							
								
								Change TRUNCSTORE to use a VTSDNode operand instead of being an MVTSTDNode  
							
							 
							
							... 
							
							
							
							llvm-svn: 22366 
							
						 
						
							2005-07-10 00:29:18 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0b6ba90a72 
								
							 
						 
						
							
							
								
								Introduce a new VTSDNode class with the ultimate goal of eliminating the  
							
							 
							
							... 
							
							
							
							MVTSDNode class.  This class is used to provide an operand to operators
that require an extra type.  We start by converting FP_ROUND_INREG and
SIGN_EXTEND_INREG over to using it.
llvm-svn: 22364 
							
						 
						
							2005-07-10 00:07:11 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								2edc1881ac 
								
							 
						 
						
							
							
								
								restore old srcValueNode behavior and try to to work around it  
							
							 
							
							... 
							
							
							
							llvm-svn: 22315 
							
						 
						
							2005-06-29 18:54:02 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								8192568fbc 
								
							 
						 
						
							
							
								
								tracking the instructions causing loads and stores provides more information than just the pointer being loaded or stored  
							
							 
							
							... 
							
							
							
							llvm-svn: 22311 
							
						 
						
							2005-06-29 15:57:19 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								a2e8779b0d 
								
							 
						 
						
							
							
								
								Fix bug 537 test 2, which checks to make sure that we fold A+(B-A) -> B for  
							
							 
							
							... 
							
							
							
							integer types.  Add a couple checks to not perform these kinds of transform
on floating point values.
llvm-svn: 22228 
							
						 
						
							2005-06-16 07:06:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								51836bbc82 
								
							 
						 
						
							
							
								
								Add some simplifications for MULH[SU].  This allows us to compile this:  
							
							 
							
							... 
							
							
							
							long %bar(long %X) {
  %Y = mul long %X, 4294967297
  ret long %Y
}
to this:
l1_bar:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EDX, %EAX
        add %EDX, DWORD PTR [%ESP + 8]
        ret
instead of:
l1_bar:
        mov %ECX, DWORD PTR [%ESP + 4]
        mov %EDX, 1
        mov %EAX, %ECX
        mul %EDX
        add %EDX, %ECX
        add %EDX, DWORD PTR [%ESP + 8]
        mov %EAX, %ECX
        ret
llvm-svn: 22044 
							
						 
						
							2005-05-15 05:39:08 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								865359958b 
								
							 
						 
						
							
							
								
								remove special case hacks for readport/readio from the binary operator  
							
							 
							
							... 
							
							
							
							codepath
llvm-svn: 22019 
							
						 
						
							2005-05-14 07:45:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								566307f92a 
								
							 
						 
						
							
							
								
								Implement fixme's by memoizing nodes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22018 
							
						 
						
							2005-05-14 07:42:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								833a4fbdc5 
								
							 
						 
						
							
							
								
								Turn this into a wrapper for a simpler version of getNode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22016 
							
						 
						
							2005-05-14 07:32:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								96c262e24b 
								
							 
						 
						
							
							
								
								Eliminate special purpose hacks for dynamic_stack_alloc.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22015 
							
						 
						
							2005-05-14 07:29:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								669e8c2c9c 
								
							 
						 
						
							
							
								
								Use the general mechanism for creating multi-value nodes instead of using  
							
							 
							
							... 
							
							
							
							special case hacks.
llvm-svn: 22014 
							
						 
						
							2005-05-14 07:25:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								006f56b177 
								
							 
						 
						
							
							
								
								Wrap long line, actually add node to the graph.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22011 
							
						 
						
							2005-05-14 06:42:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d553133308 
								
							 
						 
						
							
							
								
								add a getNode() version that allows construction of any node type.  
							
							 
							
							... 
							
							
							
							llvm-svn: 22009 
							
						 
						
							2005-05-14 06:20:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d0feb64443 
								
							 
						 
						
							
							
								
								Handle TAILCALL node  
							
							 
							
							... 
							
							
							
							llvm-svn: 21957 
							
						 
						
							2005-05-13 18:43:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e3677d6354 
								
							 
						 
						
							
							
								
								fix a bad typeo  
							
							 
							
							... 
							
							
							
							llvm-svn: 21917 
							
						 
						
							2005-05-12 23:51:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2dce703710 
								
							 
						 
						
							
							
								
								rename the ADJCALLSTACKDOWN/ADJCALLSTACKUP nodes to be CALLSEQ_START/BEGIN.  
							
							 
							
							... 
							
							
							
							llvm-svn: 21915 
							
						 
						
							2005-05-12 23:24:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d2fb9ea262 
								
							 
						 
						
							
							
								
								handle a common case generated by the uint64 -> FP code path better  
							
							 
							
							... 
							
							
							
							llvm-svn: 21888 
							
						 
						
							2005-05-12 06:27:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8005e91432 
								
							 
						 
						
							
							
								
								Make legalize a bit more efficient, and canonicalize sub X, C -> add X, -C  
							
							 
							
							... 
							
							
							
							llvm-svn: 21882 
							
						 
						
							2005-05-12 00:17:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								724f7eec77 
								
							 
						 
						
							
							
								
								Do not memoize ADJCALLSTACKDOWN nodes, provide a method to hack on them.  
							
							 
							
							... 
							
							
							
							llvm-svn: 21871 
							
						 
						
							2005-05-11 18:57:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								93f4f5f467 
								
							 
						 
						
							
							
								
								Print bit count nodes correctly  
							
							 
							
							... 
							
							
							
							llvm-svn: 21855 
							
						 
						
							2005-05-11 04:50:30 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								915594d884 
								
							 
						 
						
							
							
								
								Silence some VC++ warnings  
							
							 
							
							... 
							
							
							
							llvm-svn: 21838 
							
						 
						
							2005-05-10 02:22:38 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								67ab94510d 
								
							 
						 
						
							
							
								
								Add support for READPORT, WRITEPORT, READIO, WRITEIO  
							
							 
							
							... 
							
							
							
							llvm-svn: 21824 
							
						 
						
							2005-05-09 20:22:17 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1ab1691da9 
								
							 
						 
						
							
							
								
								Fold shifts into subsequent SHL's.  These shifts often arise due to addrses  
							
							 
							
							... 
							
							
							
							arithmetic lowering.
llvm-svn: 21818 
							
						 
						
							2005-05-09 17:06:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								57d294f2ac 
								
							 
						 
						
							
							
								
								Don't use the load/store instruction as the source pointer, use the pointer  
							
							 
							
							... 
							
							
							
							being stored/loaded through!
llvm-svn: 21806 
							
						 
						
							2005-05-09 04:28:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c14f354895 
								
							 
						 
						
							
							
								
								memoize all nodes, even null Value* nodes.  Do not add two token chain outputs  
							
							 
							
							... 
							
							
							
							llvm-svn: 21805 
							
						 
						
							2005-05-09 04:14:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9440d6e260 
								
							 
						 
						
							
							
								
								Print SrcValue nodes correctly  
							
							 
							
							... 
							
							
							
							llvm-svn: 21803 
							
						 
						
							2005-05-09 04:08:27 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								5e177826fd 
								
							 
						 
						
							
							
								
								Implement count leading zeros (ctlz), count trailing zeros (cttz), and count  
							
							 
							
							... 
							
							
							
							population (ctpop).  Generic lowering is implemented, however only promotion
is implemented for SelectionDAG at the moment.
More coming soon.
llvm-svn: 21676 
							
						 
						
							2005-05-03 17:19:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2f82d2d58a 
								
							 
						 
						
							
							
								
								Add FSQRT, FSIN, FCOS nodes, patch contributed by Morten Ofstad  
							
							 
							
							... 
							
							
							
							llvm-svn: 21605 
							
						 
						
							2005-04-28 21:44:03 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								4a73c2cfdc 
								
							 
						 
						
							
							
								
								Implement Value* tracking for loads and stores in the selection DAG.  This enables one to use alias analysis in the backends.  
							
							 
							
							... 
							
							
							
							(TRUNK)Stores and (EXT|ZEXT|SEXT)Loads have an extra SDOperand which is a SrcValueSDNode which contains the Value*.  Note that if the operation is introduced by the backend, it will still have the operand, but the value* will be null.
llvm-svn: 21599 
							
						 
						
							2005-04-27 20:10:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cfa7ddd6e2 
								
							 
						 
						
							
							
								
								Fold  (X >  -1) | (Y >  -1)  -->   (X&Y >  -1)  
							
							 
							
							... 
							
							
							
							llvm-svn: 21552 
							
						 
						
							2005-04-26 01:18:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f806459d90 
								
							 
						 
						
							
							
								
								implement some more logical compares with constants, so that:  
							
							 
							
							... 
							
							
							
							int foo1(int x, int y) {
  int t1 = x >= 0;
  int t2 = y >= 0;
  return t1 & t2;
}
int foo2(int x, int y) {
  int t1 = x == -1;
  int t2 = y == -1;
  return t1 & t2;
}
produces:
_foo1:
        or r2, r4, r3
        srwi r2, r2, 31
        xori r3, r2, 1
        blr
_foo2:
        and r2, r4, r3
        addic r2, r2, 1
        li r2, 0
        addze r3, r2
        blr
instead of:
_foo1:
        srwi r2, r4, 31
        xori r2, r2, 1
        srwi r3, r3, 31
        xori r3, r3, 1
        and r3, r2, r3
        blr
_foo2:
        addic r2, r4, 1
        li r2, 0
        addze r2, r2
        addic r3, r3, 1
        li r3, 0
        addze r3, r3
        and r3, r2, r3
        blr
llvm-svn: 21547 
							
						 
						
							2005-04-25 21:20:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d373ff64aa 
								
							 
						 
						
							
							
								
								Codegen x < 0 | y < 0 as (x|y) < 0.  This allows us to compile this to:  
							
							 
							
							... 
							
							
							
							_foo:
        or r2, r4, r3
        srwi r3, r2, 31
        blr
instead of:
_foo:
        srwi r2, r4, 31
        srwi r3, r3, 31
        or r3, r2, r3
        blr
llvm-svn: 21544 
							
						 
						
							2005-04-25 21:03:25 +00:00  
						
					 
				
					
						
							
							
								 
								Misha Brukman
							
						 
						
							 
							
							
							
							
								
							
							
								774511633d 
								
							 
						 
						
							
							
								
								Convert tabs to spaces  
							
							 
							
							... 
							
							
							
							llvm-svn: 21439 
							
						 
						
							2005-04-22 04:01:18 +00:00  
						
					 
				
					
						
							
							
								 
								Misha Brukman
							
						 
						
							 
							
							
							
							
								
							
							
								835702a094 
								
							 
						 
						
							
							
								
								Remove trailing whitespace  
							
							 
							
							... 
							
							
							
							llvm-svn: 21420 
							
						 
						
							2005-04-21 22:36:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f6302441f0 
								
							 
						 
						
							
							
								
								Improve and elimination.  On PPC, for:  
							
							 
							
							... 
							
							
							
							bool %test(int %X) {
        %Y = and int %X, 8
        %Z = setne int %Y, 0
        ret bool %Z
}
we now generate this:
        rlwinm r2, r3, 0, 28, 28
        srwi r3, r2, 3
instead of this:
        rlwinm r2, r3, 0, 28, 28
        srwi r2, r2, 3
        rlwinm r3, r2, 0, 31, 31
I'll leave it to Nate to get it down to one instruction. :)
---------------------------------------------------------------------
llvm-svn: 21391 
							
						 
						
							2005-04-21 06:28:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ab1ed77570 
								
							 
						 
						
							
							
								
								Fold (x & 8) != 0 and (x & 8) == 8  into (x & 8) >> 3.  
							
							 
							
							... 
							
							
							
							This turns this PPC code:
        rlwinm r2, r3, 0, 28, 28
        cmpwi cr7, r2, 8
        mfcr r2
        rlwinm r3, r2, 31, 31, 31
into this:
        rlwinm r2, r3, 0, 28, 28
        srwi r2, r2, 3
        rlwinm r3, r2, 0, 31, 31
Next up, nuking the extra and.
llvm-svn: 21390 
							
						 
						
							2005-04-21 06:12:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b61ecb5875 
								
							 
						 
						
							
							
								
								Fold setcc of MVT::i1 operands into logical operations  
							
							 
							
							... 
							
							
							
							llvm-svn: 21319 
							
						 
						
							2005-04-18 04:48:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6d40fd01fe 
								
							 
						 
						
							
							
								
								Another minor simplification: handle setcc (zero_extend x), c -> setcc(x, c')  
							
							 
							
							... 
							
							
							
							llvm-svn: 21318 
							
						 
						
							2005-04-18 04:30:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								868d473009 
								
							 
						 
						
							
							
								
								Another simple xform  
							
							 
							
							... 
							
							
							
							llvm-svn: 21317 
							
						 
						
							2005-04-18 04:11:19 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								bd22d83d15 
								
							 
						 
						
							
							
								
								Fold:  
							
							 
							
							... 
							
							
							
							// (X != 0) | (Y != 0) -> (X|Y != 0)
        // (X == 0) & (Y == 0) -> (X|Y == 0)
Compiling this:
int %bar(int %a, int %b) {
        entry:
        %tmp.1 = setne int %a, 0
        %tmp.2 = setne int %b, 0
        %tmp.3 = or bool %tmp.1, %tmp.2
        %retval = cast bool %tmp.3 to int
        ret int %retval
        }
to this:
_bar:
        or r2, r3, r4
        addic r3, r2, -1
        subfe r3, r3, r2
        blr
instead of:
_bar:
        addic r2, r3, -1
        subfe r2, r2, r3
        addic r3, r4, -1
        subfe r3, r3, r4
        or r3, r2, r3
        blr
llvm-svn: 21316 
							
						 
						
							2005-04-18 03:59:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d929f8bcd3 
								
							 
						 
						
							
							
								
								Make the AND elimination operation recursive and significantly more powerful,  
							
							 
							
							... 
							
							
							
							eliminating an and for Nate's testcase:
int %bar(int %a, int %b) {
        entry:
        %tmp.1 = setne int %a, 0
        %tmp.2 = setne int %b, 0
        %tmp.3 = or bool %tmp.1, %tmp.2
        %retval = cast bool %tmp.3 to int
        ret int %retval
        }
generating:
_bar:
        addic r2, r3, -1
        subfe r2, r2, r3
        addic r3, r4, -1
        subfe r3, r3, r4
        or r3, r2, r3
        blr
instead of:
_bar:
        addic r2, r3, -1
        subfe r2, r2, r3
        addic r3, r4, -1
        subfe r3, r3, r4
        or r2, r2, r3
        rlwinm r3, r2, 0, 31, 31
        blr
llvm-svn: 21315 
							
						 
						
							2005-04-18 03:48:41 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								80c095f422 
								
							 
						 
						
							
							
								
								Add a couple missing transforms in getSetCC that were triggering assertions  
							
							 
							
							... 
							
							
							
							in the PPC Pattern ISel
llvm-svn: 21297 
							
						 
						
							2005-04-14 08:56:52 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								4ddd81657b 
								
							 
						 
						
							
							
								
								Disbale the broken fold of shift + sz[ext] for now  
							
							 
							
							... 
							
							
							
							Move the transform for select (a < 0) ? b : 0 into the dag from ppc isel
Enable the dag to fold and (setcc, 1) -> setcc for targets where setcc
  always produces zero or one.
llvm-svn: 21291 
							
						 
						
							2005-04-13 21:23:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								56d177a344 
								
							 
						 
						
							
							
								
								fix an infinite loop  
							
							 
							
							... 
							
							
							
							llvm-svn: 21289 
							
						 
						
							2005-04-13 20:06:29 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e3d17d8225 
								
							 
						 
						
							
							
								
								fix some serious miscompiles on ia64, alpha, and ppc  
							
							 
							
							... 
							
							
							
							llvm-svn: 21288 
							
						 
						
							2005-04-13 19:53:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8c3d409dc7 
								
							 
						 
						
							
							
								
								avoid work when possible, perhaps fix the problem nate and andrew are seeing  
							
							 
							
							... 
							
							
							
							with != 0 comparisons vanishing.
llvm-svn: 21287 
							
						 
						
							2005-04-13 19:41:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b1f25ac188 
								
							 
						 
						
							
							
								
								add back the optimization that Nate added for shl X, (zext_inreg y)  
							
							 
							
							... 
							
							
							
							llvm-svn: 21273 
							
						 
						
							2005-04-13 02:58:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								39844ac337 
								
							 
						 
						
							
							
								
								Oops, remove these too.  
							
							 
							
							... 
							
							
							
							llvm-svn: 21272 
							
						 
						
							2005-04-13 02:47:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2b4e3fca38 
								
							 
						 
						
							
							
								
								Remove all foldings of ZERO_EXTEND_INREG, moving them to work for AND nodes  
							
							 
							
							... 
							
							
							
							instead.  OVerall, this increases the amount of folding we can do.
llvm-svn: 21265 
							
						 
						
							2005-04-13 02:38:18 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								ca916ba4a0 
								
							 
						 
						
							
							
								
								Fold shift x, [sz]ext(y) -> shift x, y  
							
							 
							
							... 
							
							
							
							llvm-svn: 21262 
							
						 
						
							2005-04-12 23:32:28 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								af1c0f7a00 
								
							 
						 
						
							
							
								
								Fold shift by size larger than type size to undef  
							
							 
							
							... 
							
							
							
							Make llvm undef values generate ISD::UNDEF nodes
llvm-svn: 21261 
							
						 
						
							2005-04-12 23:12:17 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								af5b25f139 
								
							 
						 
						
							
							
								
								Remove some redundant checks, add a couple of new ones.  This allows us to  
							
							 
							
							... 
							
							
							
							compile this:
int foo (unsigned long a, unsigned long long g) {
  return a >= g;
}
To:
foo:
        movl 8(%esp), %eax
        cmpl %eax, 4(%esp)
        setae %al
        cmpl $0, 12(%esp)
        sete %cl
        andb %al, %cl
        movzbl %cl, %eax
        ret
instead of:
foo:
        movl 8(%esp), %eax
        cmpl %eax, 4(%esp)
        setae %al
        movzbw %al, %cx
        movl 12(%esp), %edx
        cmpl $0, %edx
        sete %al
        movzbw %al, %ax
        cmpl $0, %edx
        cmove %cx, %ax
        movzbl %al, %eax
        ret
llvm-svn: 21244 
							
						 
						
							2005-04-12 02:54:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								87bd69884a 
								
							 
						 
						
							
							
								
								canonicalize x <u 1 -> x == 0.  On this testcase:  
							
							 
							
							... 
							
							
							
							unsigned long long g;
unsigned long foo (unsigned long a) {
  return (a >= g) ? 1 : 0;
}
It changes the ppc code from:
_foo:
.LBB_foo_0:     ; entry
        mflr r11
        stw r11, 8(r1)
        bl "L00000$pb"
"L00000$pb":
        mflr r2
        addis r2, r2, ha16(L_g$non_lazy_ptr-"L00000$pb")
        lwz r2, lo16(L_g$non_lazy_ptr-"L00000$pb")(r2)
        lwz r4, 0(r2)
        lwz r2, 4(r2)
        cmplw cr0, r3, r2
        li r2, 1
        li r3, 0
        bge .LBB_foo_2  ; entry
.LBB_foo_1:     ; entry
        or r2, r3, r3
.LBB_foo_2:     ; entry
        cmplwi cr0, r4, 1
        li r3, 1
        li r5, 0
        blt .LBB_foo_4  ; entry
.LBB_foo_3:     ; entry
        or r3, r5, r5
.LBB_foo_4:     ; entry
        cmpwi cr0, r4, 0
        beq .LBB_foo_6  ; entry
.LBB_foo_5:     ; entry
        or r2, r3, r3
.LBB_foo_6:     ; entry
        rlwinm r3, r2, 0, 31, 31
        lwz r11, 8(r1)
        mtlr r11
        blr
to:
_foo:
.LBB_foo_0:     ; entry
        mflr r11
        stw r11, 8(r1)
        bl "L00000$pb"
"L00000$pb":
        mflr r2
        addis r2, r2, ha16(L_g$non_lazy_ptr-"L00000$pb")
        lwz r2, lo16(L_g$non_lazy_ptr-"L00000$pb")(r2)
        lwz r4, 0(r2)
        lwz r2, 4(r2)
        cmplw cr0, r3, r2
        li r2, 1
        li r3, 0
        bge .LBB_foo_2  ; entry
.LBB_foo_1:     ; entry
        or r2, r3, r3
.LBB_foo_2:     ; entry
        cntlzw r3, r4
        srwi r3, r3, 5
        cmpwi cr0, r4, 0
        beq .LBB_foo_4  ; entry
.LBB_foo_3:     ; entry
        or r2, r3, r3
.LBB_foo_4:     ; entry
        rlwinm r3, r2, 0, 31, 31
        lwz r11, 8(r1)
        mtlr r11
        blr
llvm-svn: 21241 
							
						 
						
							2005-04-12 00:28:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e2427c9afc 
								
							 
						 
						
							
							
								
								Don't bother sign/zext_inreg'ing the result of an and operation if we know  
							
							 
							
							... 
							
							
							
							the result does change as a result of the extend.
This improves codegen for Alpha on this testcase:
int %a(ushort* %i) {
        %tmp.1 = load ushort* %i
        %tmp.2 = cast ushort %tmp.1 to int
        %tmp.4 = and int %tmp.2, 1
        ret int %tmp.4
}
Generating:
a:
        ldgp $29, 0($27)
        ldwu $0,0($16)
        and $0,1,$0
        ret $31,($26),1
instead of:
a:
        ldgp $29, 0($27)
        ldwu $0,0($16)
        and $0,1,$0
        addl $0,0,$0
        ret $31,($26),1
btw, alpha really should switch to livein/outs for args :)
llvm-svn: 21213 
							
						 
						
							2005-04-10 23:37:16 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f74c794ccf 
								
							 
						 
						
							
							
								
								Fold zext_inreg(zextload), likewise for sext's  
							
							 
							
							... 
							
							
							
							llvm-svn: 21204 
							
						 
						
							2005-04-10 04:33:08 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f2bff92411 
								
							 
						 
						
							
							
								
								add a simple xform  
							
							 
							
							... 
							
							
							
							llvm-svn: 21203 
							
						 
						
							2005-04-10 04:04:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d8cbfe82ba 
								
							 
						 
						
							
							
								
								Fix a thinko.  If the operand is promoted, pass the promoted value into  
							
							 
							
							... 
							
							
							
							the new zero extend, not the original operand.  This fixes cast bool -> long
on ppc.
Add an unrelated fixme
llvm-svn: 21196 
							
						 
						
							2005-04-10 01:13:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								da504741da 
								
							 
						 
						
							
							
								
								add a little peephole optimization.  This allows us to codegen:  
							
							 
							
							... 
							
							
							
							int a(short i) {
        return i & 1;
}
as
_a:
        andi. r3, r3, 1
        blr
instead of:
_a:
        rlwinm r2, r3, 0, 16, 31
        andi. r3, r2, 1
        blr
on ppc.  It should also help the other risc targets.
llvm-svn: 21189 
							
						 
						
							2005-04-09 21:43:54 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6a31b878f8 
								
							 
						 
						
							
							
								
								recognize some patterns as fabs operations, so that fabs at the source level  
							
							 
							
							... 
							
							
							
							is deconstructed then reconstructed here.  This catches 19 fabs's in 177.mesa
9 in 168.wupwise, 5 in 171.swim, 3 in 172.mgrid, and 14 in 173.applu out of
specfp2000.
This allows the X86 code generator to make MUCH better code than before for
each of these and saves one instr on ppc.
This depends on the previous CFE patch to expose these correctly.
llvm-svn: 21171 
							
						 
						
							2005-04-09 05:15:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b0713c74a2 
								
							 
						 
						
							
							
								
								print and fold BRCONDTWOWAY correctly  
							
							 
							
							... 
							
							
							
							llvm-svn: 21165 
							
						 
						
							2005-04-09 03:27:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0ea81f9db4 
								
							 
						 
						
							
							
								
								canonicalize a bunch of operations involving fneg  
							
							 
							
							... 
							
							
							
							llvm-svn: 21160 
							
						 
						
							2005-04-09 03:02:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b32d9318d2 
								
							 
						 
						
							
							
								
								If a target zero or sign extends the result of its setcc, allow folding of  
							
							 
							
							... 
							
							
							
							this into sign/zero extension instructions later.
On PPC, for example, this testcase:
%G = external global sbyte
implementation
void %test(int %X, int %Y) {
  %C = setlt int %X, %Y
  %D = cast bool %C to sbyte
  store sbyte %D, sbyte* %G
  ret void
}
Now codegens to:
        cmpw cr0, r3, r4
        li r3, 1
        li r4, 0
        blt .LBB_test_2 ;
.LBB_test_1:    ;
        or r3, r4, r4
.LBB_test_2:    ;
        addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
        lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
        stb r3, 0(r2)
instead of:
        cmpw cr0, r3, r4
        li r3, 1
        li r4, 0
        blt .LBB_test_2 ;
.LBB_test_1:    ;
        or r3, r4, r4
.LBB_test_2:    ;
***     rlwinm r3, r3, 0, 31, 31
        addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
        lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
        stb r3, 0(r2)
llvm-svn: 21148 
							
						 
						
							2005-04-07 19:43:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								dfed7355c9 
								
							 
						 
						
							
							
								
								Remove somethign I had for testing  
							
							 
							
							... 
							
							
							
							llvm-svn: 21144 
							
						 
						
							2005-04-07 18:58:54 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6b03a0cba1 
								
							 
						 
						
							
							
								
								This patch does two things.  First, it canonicalizes 'X >= C' -> 'X > C-1'  
							
							 
							
							... 
							
							
							
							(likewise for <= >=u >=u).
Second, it implements a special case hack to turn 'X gtu SINTMAX' -> 'X lt 0'
On powerpc, for example, this changes this:
        lis r2, 32767
        ori r2, r2, 65535
        cmplw cr0, r3, r2
        bgt .LBB_test_2
into:
        cmpwi cr0, r3, 0
        blt .LBB_test_2
llvm-svn: 21142 
							
						 
						
							2005-04-07 18:14:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7d13eae254 
								
							 
						 
						
							
							
								
								Fix a really scary bug that Nate found where we weren't deleting the right  
							
							 
							
							... 
							
							
							
							elements auto of the autoCSE maps.
llvm-svn: 21128 
							
						 
						
							2005-04-07 00:30:13 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								55e8625c69 
								
							 
						 
						
							
							
								
								Add MULHU and MULHS nodes for the high part of an (un)signed 32x32=64b  
							
							 
							
							... 
							
							
							
							multiply.
llvm-svn: 21102 
							
						 
						
							2005-04-05 22:36:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c4a2046a88 
								
							 
						 
						
							
							
								
								print fneg/fabs  
							
							 
							
							... 
							
							
							
							llvm-svn: 21008 
							
						 
						
							2005-04-02 04:58:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4157c417a1 
								
							 
						 
						
							
							
								
								fix some bugs in the implementation of SHL_PARTS and friends.  
							
							 
							
							... 
							
							
							
							llvm-svn: 21004 
							
						 
						
							2005-04-02 04:00:59 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5b7bb56ef8 
								
							 
						 
						
							
							
								
								Print some new nodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 21001 
							
						 
						
							2005-04-02 03:30:42 +00:00  
						
					 
				
					
						
							
							
								 
								Nate Begeman
							
						 
						
							 
							
							
							
							
								
							
							
								cda9aa7fa9 
								
							 
						 
						
							
							
								
								Add ISD::UNDEF node  
							
							 
							
							... 
							
							
							
							Teach the SelectionDAG code how to expand and promote it
Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp
  arguments, but not shadowing their value.  This allows us to do the right
  thing with both fixed and vararg floating point arguments.
llvm-svn: 20988 
							
						 
						
							2005-04-01 22:34:39 +00:00  
						
					 
				
					
						
							
							
								 
								Andrew Lenharth
							
						 
						
							 
							
							
							
							
								
							
							
								dec53920b4 
								
							 
						 
						
							
							
								
								PCMarker support for DAG and Alpha  
							
							 
							
							... 
							
							
							
							llvm-svn: 20965 
							
						 
						
							2005-03-31 21:24:06 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								85e7163947 
								
							 
						 
						
							
							
								
								Fix a bug where we would incorrectly do a sign ext instead of a zero ext  
							
							 
							
							... 
							
							
							
							because we were checking the wrong thing.  Thanks to andrew for pointing
this out!
llvm-svn: 20554 
							
						 
						
							2005-03-10 20:55:51 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7f26946709 
								
							 
						 
						
							
							
								
								constant fold FP_ROUND_INREG, ZERO_EXTEND_INREG, and SIGN_EXTEND_INREG  
							
							 
							
							... 
							
							
							
							This allows the alpha backend to compile:
bool %test(uint %P) {
        %c = seteq uint %P, 0
        ret bool %c
}
into:
test:
        ldgp $29, 0($27)
        ZAP $16,240,$0
        CMPEQ $0,0,$0
        AND $0,1,$0
        ret $31,($26),1
instead of:
test:
        ldgp $29, 0($27)
        ZAP $16,240,$0
        ldiq $1,0
        ZAP $1,240,$1
        CMPEQ $0,$1,$0
        AND $0,1,$0
        ret $31,($26),1
... and fixes PR534.
llvm-svn: 20534 
							
						 
						
							2005-03-09 18:37:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								381dddc90c 
								
							 
						 
						
							
							
								
								Don't rely on doubles comparing identical to each other, which doesn't work  
							
							 
							
							... 
							
							
							
							for 0.0 and -0.0.
llvm-svn: 20230 
							
						 
						
							2005-02-17 20:17:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								90b7c13f3a 
								
							 
						 
						
							
							
								
								Remove the 3 HACK HACK HACKs I put in before, fixing them properly with  
							
							 
							
							... 
							
							
							
							the new TLI that is available.
Implement support for handling out of range shifts.  This allows us to
compile this code (a 64-bit rotate):
unsigned long long f3(unsigned long long x) {
  return (x << 32) | (x >> (64-32));
}
into this:
f3:
        mov %EDX, DWORD PTR [%ESP + 4]
        mov %EAX, DWORD PTR [%ESP + 8]
        ret
GCC produces this:
$ gcc t.c -masm=intel -O3 -S -o - -fomit-frame-pointer
..
f3:
        push    %ebx
        mov     %ebx, DWORD PTR [%esp+12]
        mov     %ecx, DWORD PTR [%esp+8]
        mov     %eax, %ebx
        mov     %edx, %ecx
        pop     %ebx
        ret
The Simple ISEL produces (eww gross):
f3:
        sub %ESP, 4
        mov DWORD PTR [%ESP], %ESI
        mov %EDX, DWORD PTR [%ESP + 8]
        mov %ECX, DWORD PTR [%ESP + 12]
        mov %EAX, 0
        mov %ESI, 0
        or %EAX, %ECX
        or %EDX, %ESI
        mov %ESI, DWORD PTR [%ESP]
        add %ESP, 4
        ret
llvm-svn: 19780 
							
						 
						
							2005-01-23 04:39:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3bc78b2e0b 
								
							 
						 
						
							
							
								
								More bugfixes for IA64 shifts.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19739 
							
						 
						
							2005-01-22 00:33:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d637c96fac 
								
							 
						 
						
							
							
								
								Add a nasty hack to fix Alpha/IA64 multiplies by a power of two.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19737 
							
						 
						
							2005-01-22 00:20:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d53e763f18 
								
							 
						 
						
							
							
								
								Remove unneeded line.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19736 
							
						 
						
							2005-01-21 23:43:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4f987bf16d 
								
							 
						 
						
							
							
								
								test commit  
							
							 
							
							... 
							
							
							
							llvm-svn: 19735 
							
						 
						
							2005-01-21 23:38:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								96e809c47d 
								
							 
						 
						
							
							
								
								Unary token factor nodes are unneeded.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19727 
							
						 
						
							2005-01-21 18:01:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1fe9b40981 
								
							 
						 
						
							
							
								
								implement add_parts/sub_parts.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19714 
							
						 
						
							2005-01-20 18:50:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9b75e148fd 
								
							 
						 
						
							
							
								
								Know some identities about tokenfactor nodes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19699 
							
						 
						
							2005-01-19 18:01:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								32a5f02598 
								
							 
						 
						
							
							
								
								Know some simple identities.  This improves codegen for (1LL << N).  
							
							 
							
							... 
							
							
							
							llvm-svn: 19698 
							
						 
						
							2005-01-19 17:29:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a9d53f9fb9 
								
							 
						 
						
							
							
								
								Keep track of the retval type as well.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19670 
							
						 
						
							2005-01-18 19:26:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b07e2d2084 
								
							 
						 
						
							
							
								
								Allow setcc operations to have nonbool types.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19656 
							
						 
						
							2005-01-18 02:52:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2b4b79581d 
								
							 
						 
						
							
							
								
								Fix the completely broken FP constant folds for setcc's.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19651 
							
						 
						
							2005-01-18 02:11:55 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								16f64df93a 
								
							 
						 
						
							
							
								
								Refactor code into a new method.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19635 
							
						 
						
							2005-01-17 17:15:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4e550ebb38 
								
							 
						 
						
							
							
								
								Add assertions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19596 
							
						 
						
							2005-01-16 02:23:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0fe7776da5 
								
							 
						 
						
							
							
								
								Eliminate unneeded extensions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19577 
							
						 
						
							2005-01-16 00:17:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								630d1937bf 
								
							 
						 
						
							
							
								
								Print extra type for nodes with extra type info.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19575 
							
						 
						
							2005-01-15 21:11:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								09d1b3d01d 
								
							 
						 
						
							
							
								
								Common code factored out.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19572 
							
						 
						
							2005-01-15 07:14:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1001c6e2cd 
								
							 
						 
						
							
							
								
								Add new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19568 
							
						 
						
							2005-01-15 06:17:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3b8e719d1d 
								
							 
						 
						
							
							
								
								Adjust to CopyFromReg changes, implement deletion of truncating/extending  
							
							 
							
							... 
							
							
							
							stores/loads.
llvm-svn: 19562 
							
						 
						
							2005-01-14 22:38:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								39c6744c9f 
								
							 
						 
						
							
							
								
								Start implementing truncating stores and extending loads.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19559 
							
						 
						
							2005-01-14 22:08:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e727af06c8 
								
							 
						 
						
							
							
								
								Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19535 
							
						 
						
							2005-01-13 20:50:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4b1be0dfeb 
								
							 
						 
						
							
							
								
								Print new node.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19526 
							
						 
						
							2005-01-13 17:59:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4dfd2cfc0c 
								
							 
						 
						
							
							
								
								Do not fold (zero_ext (sign_ext V)) -> (sign_ext V), they are not the same.  
							
							 
							
							... 
							
							
							
							This fixes llvm-test/SingleSource/Regression/C/casts.c
llvm-svn: 19519 
							
						 
						
							2005-01-12 18:51:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								40e7982c2c 
								
							 
						 
						
							
							
								
								New method  
							
							 
							
							... 
							
							
							
							llvm-svn: 19517 
							
						 
						
							2005-01-12 18:37:47 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								844277fb1e 
								
							 
						 
						
							
							
								
								Print new operations.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19464 
							
						 
						
							2005-01-11 05:57:01 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a86fa4455b 
								
							 
						 
						
							
							
								
								shift X, 0 -> X  
							
							 
							
							... 
							
							
							
							llvm-svn: 19453 
							
						 
						
							2005-01-11 04:25:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9e4c76123c 
								
							 
						 
						
							
							
								
								Split out SDNode::getOperationName into its own method.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19443 
							
						 
						
							2005-01-10 23:25:25 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								41b764144d 
								
							 
						 
						
							
							
								
								Implement a couple of more simplifications.  This lets us codegen:  
							
							 
							
							... 
							
							
							
							int test2(int * P, int* Q, int A, int B) {
        return P+A == P;
}
into:
test2:
        movl 4(%esp), %eax
        movl 12(%esp), %eax
        shll $2, %eax
        cmpl $0, %eax
        sete %al
        movzbl %al, %eax
        ret
instead of:
test2:
        movl 4(%esp), %eax
        movl 12(%esp), %ecx
        leal (%eax,%ecx,4), %ecx
        cmpl %eax, %ecx
        sete %al
        movzbl %al, %eax
        ret
ICC is producing worse code:
test2:
        movl      4(%esp), %eax                                 #8.5
        movl      12(%esp), %edx                                #8.5
        lea       (%edx,%edx), %ecx                             #9.9
        addl      %ecx, %ecx                                    #9.9
        addl      %eax, %ecx                                    #9.9
        cmpl      %eax, %ecx                                    #9.16
        movl      $0, %eax                                      #9.16
        sete      %al                                           #9.16
        ret                                                     #9.16
as is GCC (looks like our old code):
test2:
        movl    4(%esp), %edx
        movl    12(%esp), %eax
        leal    (%edx,%eax,4), %ecx
        cmpl    %edx, %ecx
        sete    %al
        movzbl  %al, %eax
        ret
llvm-svn: 19430 
							
						 
						
							2005-01-10 02:03:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								00c231baa7 
								
							 
						 
						
							
							
								
								Fix incorrect constant folds, fixing Stepanov after the SHR patch.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19429 
							
						 
						
							2005-01-10 01:16:03 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0966a75e76 
								
							 
						 
						
							
							
								
								Constant fold shifts, turning this loop:  
							
							 
							
							... 
							
							
							
							.LBB_Z5test0PdS__3:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        movl $16000, %ecx
        sarl $3, %ecx
        cmpl %eax, %ecx
        fstpl 16(%esp)
        #FP_REG_KILL
        jg .LBB_Z5test0PdS__3   # no_exit.1
into:
.LBB_Z5test0PdS__3:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        cmpl $2000, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__3   # no_exit.1
llvm-svn: 19427 
							
						 
						
							2005-01-10 00:07:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fde3a212e2 
								
							 
						 
						
							
							
								
								Add some folds for == and != comparisons.  This allows us to  
							
							 
							
							... 
							
							
							
							codegen this loop in stepanov:
no_exit.i:              ; preds = %entry, %no_exit.i, %then.i, %_Z5checkd.exit
        %i.0.0 = phi int [ 0, %entry ], [ %i.0.0, %no_exit.i ], [ %inc.0, %_Z5checkd.exit ], [ %inc.012, %then.i ]              ; <int> [#uses=3]
        %indvar = phi uint [ %indvar.next, %no_exit.i ], [ 0, %entry ], [ 0, %then.i ], [ 0, %_Z5checkd.exit ]          ; <uint> [#uses=3]
        %result_addr.i.0 = phi double [ %tmp.4.i.i, %no_exit.i ], [ 0.000000e+00, %entry ], [ 0.000000e+00, %then.i ], [ 0.000000e+00, %_Z5checkd.exit ]          ; <double> [#uses=1]
        %first_addr.0.i.2.rec = cast uint %indvar to int                ; <int> [#uses=1]
        %first_addr.0.i.2 = getelementptr [2000 x double]* %data, int 0, uint %indvar           ; <double*> [#uses=1]
        %inc.i.rec = add int %first_addr.0.i.2.rec, 1           ; <int> [#uses=1]
        %inc.i = getelementptr [2000 x double]* %data, int 0, int %inc.i.rec            ; <double*> [#uses=1]
        %tmp.3.i.i = load double* %first_addr.0.i.2             ; <double> [#uses=1]
        %tmp.4.i.i = add double %result_addr.i.0, %tmp.3.i.i            ; <double> [#uses=2]
        %tmp.2.i = seteq double* %inc.i, getelementptr ([2000 x double]* %data, int 0, int 2000)                ; <bool> [#uses=1]
        %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
        br bool %tmp.2.i, label %_Z10accumulateIPddET0_T_S2_S1_.exit, label %no_exit.i
To this:
.LBB_Z4testIPddEvT_S1_T0__1:    # no_exit.i
        fldl data(,%eax,8)
        fldl 16(%esp)
        faddp %st(1)
        fstpl 16(%esp)
        incl %eax
        movl %eax, %ecx
        shll $3, %ecx
        cmpl $16000, %ecx
        #FP_REG_KILL
        jne .LBB_Z4testIPddEvT_S1_T0__1 # no_exit.i
instead of this:
.LBB_Z4testIPddEvT_S1_T0__1:    # no_exit.i
        fldl data(,%eax,8)
        fldl 16(%esp)
        faddp %st(1)
        fstpl 16(%esp)
        incl %eax
        leal data(,%eax,8), %ecx
        leal data+16000, %edx
        cmpl %edx, %ecx
        #FP_REG_KILL
        jne .LBB_Z4testIPddEvT_S1_T0__1 # no_exit.i
llvm-svn: 19425 
							
						 
						
							2005-01-09 20:52:51 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								7d1670da3f 
								
							 
						 
						
							
							
								
								Fix VC++ compilation error  
							
							 
							
							... 
							
							
							
							llvm-svn: 19423 
							
						 
						
							2005-01-09 20:41:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e6f7882c27 
								
							 
						 
						
							
							
								
								Print the DAG out more like a DAG in nested format.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19422 
							
						 
						
							2005-01-09 20:38:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								1270acc1ce 
								
							 
						 
						
							
							
								
								Print out nodes sorted by their address to make it easier to find them in a list.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19421 
							
						 
						
							2005-01-09 20:26:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3d5d5022d5 
								
							 
						 
						
							
							
								
								Add a simple transformation.  This allows us to compile one of the inner  
							
							 
							
							... 
							
							
							
							loops in stepanov to this:
.LBB_Z5test0PdS__2:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        cmpl $2000, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2
instead of this:
.LBB_Z5test0PdS__2:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        movl $data, %ecx
        movl %ecx, %edx
        addl $16000, %edx
        subl %ecx, %edx
        movl %edx, %ecx
        sarl $2, %ecx
        shrl $29, %ecx
        addl %ecx, %edx
        sarl $3, %edx
        cmpl %edx, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2
The old instruction selector produced:
.LBB_Z5test0PdS__2:     # no_exit.1
        fldl 24(%esp)
        faddl data(,%eax,8)
        fstl 24(%esp)
        movl %eax, %ecx
        incl %ecx
        incl %eax
        leal data+16000, %edx
        movl $data, %edi
        subl %edi, %edx
        movl %edx, %edi
        sarl $2, %edi
        shrl $29, %edi
        addl %edi, %edx
        sarl $3, %edx
        cmpl %edx, %ecx
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2   # no_exit.1
Which is even worse!
llvm-svn: 19419 
							
						 
						
							2005-01-09 20:09:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2a6db3c351 
								
							 
						 
						
							
							
								
								Add support for FP->INT conversions and back.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19369 
							
						 
						
							2005-01-08 08:08:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9a97e4d5b6 
								
							 
						 
						
							
							
								
								1ULL << 64 is undefined, don't do it.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19365 
							
						 
						
							2005-01-08 06:24:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e0f1fe181a 
								
							 
						 
						
							
							
								
								Fix a pointer invalidation problem.  This fixes Generic/badarg6.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 19361 
							
						 
						
							2005-01-07 23:32:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5c66e45b92 
								
							 
						 
						
							
							
								
								Fold conditional branches on constants away.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19360 
							
						 
						
							2005-01-07 22:49:57 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cda3efa6e5 
								
							 
						 
						
							
							
								
								Fix a thinko in the reassociation code, fixing Generic/badlive.ll  
							
							 
							
							... 
							
							
							
							llvm-svn: 19359 
							
						 
						
							2005-01-07 22:44:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4d5ba99283 
								
							 
						 
						
							
							
								
								Simplify: truncate ({zero|sign}_extend (X))  
							
							 
							
							... 
							
							
							
							llvm-svn: 19353 
							
						 
						
							2005-01-07 21:56:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								9c667933c1 
								
							 
						 
						
							
							
								
								Implement RemoveDeadNodes  
							
							 
							
							... 
							
							
							
							llvm-svn: 19345 
							
						 
						
							2005-01-07 21:09:16 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								061a1ea9e3 
								
							 
						 
						
							
							
								
								Complete rewrite of the SelectionDAG class.  
							
							 
							
							... 
							
							
							
							llvm-svn: 19327 
							
						 
						
							2005-01-07 07:46:32 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								eb04d9bcb4 
								
							 
						 
						
							
							
								
								Add #include <iostream> since Value.h does not #include it any more.  
							
							 
							
							... 
							
							
							
							llvm-svn: 14622 
							
						 
						
							2004-07-04 12:19:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6b7275996c 
								
							 
						 
						
							
							
								
								Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()  
							
							 
							
							... 
							
							
							
							llvm-svn: 14201 
							
						 
						
							2004-06-17 18:19:28 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								560b5e42ab 
								
							 
						 
						
							
							
								
								Finegrainify namespacification  
							
							 
							
							... 
							
							
							
							llvm-svn: 13948 
							
						 
						
							2004-06-02 04:28:06 +00:00  
						
					 
				
					
						
							
							
								 
								Brian Gaeke
							
						 
						
							 
							
							
							
							
								
							
							
								960707c335 
								
							 
						 
						
							
							
								
								Put all LLVM code into the llvm namespace, as per bug 109.  
							
							 
							
							... 
							
							
							
							llvm-svn: 9903 
							
						 
						
							2003-11-11 22:41:34 +00:00  
						
					 
				
					
						
							
							
								 
								John Criswell
							
						 
						
							 
							
							
							
							
								
							
							
								482202a601 
								
							 
						 
						
							
							
								
								Added LLVM project notice to the top of every C++ source file.  
							
							 
							
							... 
							
							
							
							Header files will be on the way.
llvm-svn: 9298 
							
						 
						
							2003-10-20 19:43:21 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e81de41edf 
								
							 
						 
						
							
							
								
								Add a bunch of new node types, etc  
							
							 
							
							... 
							
							
							
							llvm-svn: 7875 
							
						 
						
							2003-08-15 04:53:16 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								600d308853 
								
							 
						 
						
							
							
								
								Initial checkin of SelectionDAG implementation.  This is still rough and  
							
							 
							
							... 
							
							
							
							unfinished
llvm-svn: 7717 
							
						 
						
							2003-08-11 14:57:33 +00:00