- Jul 19, 2008
-
-
Anton Korobeynikov authored
llvm-svn: 53801
-
Duncan Sands authored
returns a node with the right number of return values. This fixes codegen of Generic/cast-fp.ll, Generic/fp_to_int.ll and PowerPC/multiple-return-values.ll when using -march=ppc32 -mattr=+64bit. llvm-svn: 53794
-
- Jul 17, 2008
-
-
Dan Gohman authored
replacement of multiple values. This is slightly more efficient than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically could be optimized even further. However, an important property of this new function is that it handles the case where the source value set and destination value set overlap. This makes it feasible for isel to use SelectNodeTo in many very common cases, which is advantageous because SelectNodeTo avoids a temporary node and it doesn't require CSEMap updates for users of values that don't change position. Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to handle operand lists more efficiently, and to correctly handle a number of corner cases to which its new wider use exposes it. This commit also includes a change to the encoding of post-isel opcodes in SDNodes; now instead of being sandwiched between the target-independent pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel opcodes are now represented as negative values. This makes it possible to test if an opcode is pre-isel or post-isel without having to know the size of the current target's post-isel instruction set. These changes speed up llc overall by 3% and reduce memory usage by 10% on the InstructionCombining.cpp testcase with -fast and -regalloc=local. llvm-svn: 53728
-
- Jul 12, 2008
-
-
Evan Cheng authored
llvm-svn: 53505
-
Dan Gohman authored
instead of using the frame index for the SVOffset, which was inconsistent. llvm-svn: 53486
-
- Jul 11, 2008
-
-
Dan Gohman authored
llvm-svn: 53471
-
- Jul 10, 2008
-
-
Chris Lattner authored
llvm-svn: 53411
-
Chris Lattner authored
his work on legalizetypes. llvm-svn: 53410
-
- Jul 09, 2008
-
-
Dale Johannesen authored
llvm-svn: 53365
-
Dale Johannesen authored
I cannot test this target, let me know if it breaks! llvm-svn: 53362
-
Dale Johannesen authored
applies to ppc Darwin only. llvm-svn: 53353
-
Evan Cheng authored
llvm-svn: 53280
-
- Jul 08, 2008
-
-
Dale Johannesen authored
This is a question of the debugging setup code not being called at the right time, and it's called from target-dependent code for some reason. I have only attempted to fix Darwin, but I'm pretty sure it's broken elsewhere; I'll leave that to people who can test it. llvm-svn: 53254
-
Dan Gohman authored
MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. llvm-svn: 53212
-
Evan Cheng authored
llvm-svn: 53209
-
- Jul 07, 2008
-
-
Dan Gohman authored
pool-allocating MachineInstrs. llvm-svn: 53198
-
Dan Gohman authored
llvm-svn: 53179
-
- Jul 04, 2008
-
-
Duncan Sands authored
hook for each way in which a result type can be legalized (promotion, expansion, softening etc), just use one: ReplaceNodeResults, which returns a node with exactly the same result types as the node passed to it, but presumably with a bunch of custom code behind the scenes. No change if the new LegalizeTypes infrastructure is not turned on. llvm-svn: 53137
-
Duncan Sands authored
moves in order to get correct debug info. Since I can't imagine how any target could possibly be any different, I've just stripped out the option: now all the world's like Darwin! llvm-svn: 53134
-
- Jul 03, 2008
-
-
Evan Cheng authored
- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list. llvm-svn: 53097
-
- Jul 02, 2008
-
-
Duncan Sands authored
to be passed the list of value types, and use this where appropriate. Inappropriate places are where the value type list is already known and may be long, in which case the existing method is more efficient. llvm-svn: 53035
-
Bill Wendling authored
debug information is being output, because it's leet! llvm-svn: 52994
-
- Jul 01, 2008
-
-
Dan Gohman authored
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
-
- Jun 30, 2008
-
-
Dan Gohman authored
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
-
Evan Cheng authored
llvm-svn: 52923
-
Duncan Sands authored
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
-
- Jun 27, 2008
-
-
Anton Korobeynikov authored
Patch by Gary Benson! llvm-svn: 52828
-
- Jun 25, 2008
-
-
Chris Lattner authored
InvalidateInstructionCache method instead of calling through a hook on the JIT. This is a host feature, not a target feature. llvm-svn: 52734
-
Mon P Wang authored
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
-
- Jun 22, 2008
-
-
Dan Gohman authored
llvm-svn: 52613
-
- Jun 21, 2008
-
-
Dan Gohman authored
llvm-svn: 52594
-
- Jun 17, 2008
-
-
Anton Korobeynikov authored
llvm-svn: 52420
-
Anton Korobeynikov authored
llvm-svn: 52419
-
Anton Korobeynikov authored
Patch by Gary Benson! llvm-svn: 52418
-
- Jun 16, 2008
-
-
Chris Lattner authored
Patch by Gary Benson! llvm-svn: 52332
-
Evan Cheng authored
llvm-svn: 52308
-
- Jun 08, 2008
-
-
Duncan Sands authored
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
-
Bill Wendling authored
llvm-svn: 52085
-
- Jun 06, 2008
-
-
Evan Cheng authored
llvm-svn: 52062
-
Evan Cheng authored
llvm-svn: 52056
-