- Jul 25, 2008
-
-
Evan Cheng authored
llvm-svn: 54004
-
- 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 11, 2008
-
-
Chris Lattner authored
llvm-svn: 53472
-
Dan Gohman authored
llvm-svn: 53471
-
- Jul 09, 2008
-
-
Dale Johannesen authored
llvm-svn: 53360
-
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
-
- Jul 07, 2008
-
-
Dan Gohman authored
llvm-svn: 53196
-
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
-
- 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
-
Owen Anderson authored
Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place. llvm-svn: 53058
-
- 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
-
- 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 06, 2008
-
-
Duncan Sands authored
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
-
- Jun 03, 2008
-
-
Dale Johannesen authored
assembler names of string constants look like. llvm-svn: 51909
-
- May 19, 2008
-
-
Dale Johannesen authored
$non_lazy_ptr's and $lazy_ptr's. llvm-svn: 51277
-
- May 14, 2008
-
-
Dan Gohman authored
This eliminates the need for several awkward casts, including the last dynamic_cast under lib/Target. llvm-svn: 51091
-
- May 13, 2008
-
-
Dan Gohman authored
several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
-
- May 06, 2008
-
-
Chris Lattner authored
llvm-svn: 50698
-
- Apr 28, 2008
-
-
Dan Gohman authored
memcpy/memset expansion. It was a bug for the SVOffset value to be used in the actual address calculations. llvm-svn: 50359
-
- Apr 16, 2008
-
-
Nicolas Geoffray authored
Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function the stub will resolve. llvm-svn: 49814
-
Nicolas Geoffray authored
Infrastructure for getting the machine code size of a function and an instruction. X86, PowerPC and ARM are implemented llvm-svn: 49809
-
- Apr 14, 2008
-
-
Dan Gohman authored
memory intrinsic expansion code. llvm-svn: 49666
-
- Apr 12, 2008
-
-
Dan Gohman authored
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
-
- Apr 01, 2008
-
-
Evan Cheng authored
llvm-svn: 49012
-
- Mar 31, 2008
-
-
Evan Cheng authored
llvm-svn: 48995
-
- Mar 30, 2008
-
-
Chris Lattner authored
patch by David Chisnall. llvm-svn: 48963
-
- Mar 25, 2008
-
-
Dan Gohman authored
llvm-svn: 48801
-
Dan Gohman authored
marked read-write. Use const so that they can be allocated in a read-only segment. llvm-svn: 48800
-
Evan Cheng authored
llvm-svn: 48753
-
- Mar 21, 2008
-
-
Duncan Sands authored
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
-
- Mar 15, 2008
-
-
Evan Cheng authored
Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF. llvm-svn: 48380
-
- Mar 11, 2008
-
-
Dan Gohman authored
that merely add passes. This allows them to be used with either FunctionPassManager or PassManager, or even with a custom new kind of pass manager. llvm-svn: 48256
-
- Mar 10, 2008
-
-
Evan Cheng authored
llvm-svn: 48169
-
Dale Johannesen authored
field to 32 bits, thus enabling correct handling of ByVal structs bigger than 0x1ffff. Abstract interface a bit. Fixes gcc.c-torture/execute/pr23135.c and gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing on ppc32, quietly producing wrong code on x86-32.) llvm-svn: 48122
-